151 (edytowany przez MiG25 2024-01-25 16:43:55)

Odp: Netgear LBR20 Orbi

Cezary napisał/a:
MiG25 napisał/a:

W międzyczasie porty RJ45 już działają , żółty oznaczony WAN/LAN1  jest przypięty jako "wan" , drugi oznaczony jako LAN2 na oznaczenie "lan" , dokładnie tak jak w mf289f czy mf18a...

I faktycznie da się fizycznie cały switch ( zarówno port LAN2 ( lan) jak i jednocześnie WAN/LAN1 (wan) wyłączyć przez gpio31:

echo 453 >/sys/class/gpio/export
echo "0" > /sys/class/gpio/gpio453/value

tylko czy taka wiedza coś daje (czy można to do czegoś wykorzystać)....

IMO to gpio trzeba  ustawić w DTS na stałe, żeby zawsze wstawały interfejsy włączone. Bo ustawianie tego w userlandzie to chyba trochę za późno.

Takie gaszenie to na siłę można robić , nic nie trzeba ustawiać ,żeby normalnie działało ( w przeciwieństwie do modemu) , więc ani w dtsie ani w userlandzie tego gpio nie ma , a działa. Próbowałem to ustawić przez gpios , ale nic to nie dawało (nie udało ni się zgasić domyślnie portów po starcie ani przez HiGH ani przez LOW )

152 (edytowany przez MiG25 2024-01-25 18:09:32)

Odp: Netgear LBR20 Orbi

W uboocie jest takie coś do sprawdzania checksum

(IPQ40xx) # load_chk_dniimg
Loading DNI firmware for checking...
Loading firmware 1 ...

NAND read: device 0 offset 0xa600000, size 0x20000
 131072 bytes read: OK

NAND read: device 0 offset 0xa600000, size 0x480000
 4718592 bytes read: OK
dniimg_len is 4718592 (aligned to 4718592)

NAND read: device 0 offset 0xa600000, size 0x480000
 4718592 bytes read: OK
if iminfo 0x84000000; then echo kernel checksum OK !;if iminfo 0x8447FFC0; then echo rootfs checksum OK !;;true;else echo rootfs checksum error !!!;;false;fi;else echo kernel checksum error !!!;;false;fi;
## Checking Image at 84000000 ...
   FIT image found
   FIT description: ARM OpenWrt FIT (Flattened Image Tree)
    Image 0 (kernel-1)
     Description:  ARM OpenWrt Linux-6.1.73
     Type:         Kernel Image
     Compression:  gzip compressed
     Data Start:   0x840000e4
     Data Size:    4592661 Bytes = 4.4 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x80208000
     Entry Point:  0x80208000
     Hash algo:    crc32
     Hash value:   7e9027fc
     Hash algo:    sha1
     Hash value:   bb93189f40c8b46130de75acb29657a7783c052f
    Image 1 (fdt-1)
     Description:  ARM OpenWrt netgear_lbr20 device tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x84461634
     Data Size:    20144 Bytes = 19.7 KiB
     Architecture: ARM
     Hash algo:    crc32
     Hash value:   77ce43a6
     Hash algo:    sha1
     Hash value:   d2813e59a6802c754d91eab162ddae4cdea45dde
    Default Configuration: 'config@1'
    Configuration 0 (config@1)
     Description:  OpenWrt netgear_lbr20
     Kernel:       kernel-1
     FDT:          fdt-1
## Checking hash(es) for FIT Image at 84000000 ...
   Hash(es) for Image 0 (kernel-1): crc32+ sha1+
   Hash(es) for Image 1 (fdt-1): crc32+ sha1+
kernel checksum OK !

## Checking Image at 8447ffc0 ...
   Legacy image found
   Image Name:   OpenWrt fake filesystem
   Image Type:   ARM Linux Filesystem Image (uncompressed)
   Data Size:    0 Bytes = 0 Bytes
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
rootfs checksum OK !
(IPQ40xx) #

Jest tam jakiś warunek,

if iminfo 0x84000000; then echo kernel checksum OK !;if iminfo 0x8447FFC0; then echo rootfs checksum OK !;;true;else echo rootfs checksum error !!!;;false;fi;else echo kernel checksum error !!!;;false;fi;

Czy jest to tylko do wyświetlania , czy to coś robi...



(IPQ40xx) # iminfo 0x8447FFC0

## Checking Image at 8447ffc0 ...
   Legacy image found
   Image Name:   OpenWrt fake filesystem
   Image Type:   ARM Linux Filesystem Image (uncompressed)
   Data Size:    0 Bytes = 0 Bytes
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
(IPQ40xx) # iminfo 0x84000000

## Checking Image at 84000000 ...
   FIT image found
   FIT description: ARM OpenWrt FIT (Flattened Image Tree)
    Image 0 (kernel-1)
     Description:  ARM OpenWrt Linux-6.1.73
     Type:         Kernel Image
     Compression:  gzip compressed
     Data Start:   0x840000e4
     Data Size:    4592661 Bytes = 4.4 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x80208000
     Entry Point:  0x80208000
     Hash algo:    crc32
     Hash value:   7e9027fc
     Hash algo:    sha1
     Hash value:   bb93189f40c8b46130de75acb29657a7783c052f
    Image 1 (fdt-1)
     Description:  ARM OpenWrt netgear_lbr20 device tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x84461634
     Data Size:    20144 Bytes = 19.7 KiB
     Architecture: ARM
     Hash algo:    crc32
     Hash value:   77ce43a6
     Hash algo:    sha1
     Hash value:   d2813e59a6802c754d91eab162ddae4cdea45dde
    Default Configuration: 'config@1'
    Configuration 0 (config@1)
     Description:  OpenWrt netgear_lbr20
     Kernel:       kernel-1
     FDT:          fdt-1
## Checking hash(es) for FIT Image at 84000000 ...
   Hash(es) for Image 0 (kernel-1): crc32+ sha1+
   Hash(es) for Image 1 (fdt-1): crc32+ sha1+
(IPQ40xx) #

No i prz pierwszym sprawdzeniu teoretycznie jest ok

Ten load_chk_dniimg wynika z printenv i bootcmd , i niestety bez niego bootm nie uruchomi się

bootcmd=mii write 0x3 0x0 0x800; sleep 3; nmrp; load_chk_dniimg 0x84000000; setenv fdt_high 0x87000000; bootm 0x84000000

153 (edytowany przez Cezary 2024-01-25 18:12:55)

Odp: Netgear LBR20 Orbi

Sprawdza sumę rootfs. Jeżeli coś mu się zmieni to mówi że jest coś innego.

A to oznacza że:
- kernel i rootfs muszą być pod określonymi adresami które bootloader sprawdza
- rootfs_data nie może być częścią voluminu rootfs bo naturalnie zmieni się po pierwszym starcie. Albo po kompletnym starcie trzeba mu coś tam w zmiennych bootloadera zaktualizować żeby widział przy następnym starcie że wszystko jest ok.

Czy jakoś tak to można interpretować.

EDIT: a jak by po pierwszym uruchomieniu w uci-default sprawdzić czy ten warunek istnieje i zmodyfikować go żeby później nie był sprawdzany?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

154

Odp: Netgear LBR20 Orbi

A tak wygląda po pierwszym uruchomieniu:

(IPQ40xx) #  load_chk_dniimg 0x84000000
Loading DNI firmware for checking...
Loading firmware 1 ...

NAND read: device 0 offset 0xa600000, size 0x20000
 131072 bytes read: OK

NAND read: device 0 offset 0xa600000, size 0x1020000
 16908288 bytes read: OK
rootfs imge header corrupted !
Loading firmware 2 ...

NAND read: device 0 offset 0xa600000, size 0x20000
 131072 bytes read: OK

NAND read: device 0 offset 0xa600000, size 0x1020000
 16908288 bytes read: OK
rootfs imge header corrupted !
eth0 PHY0 Down Speed :10 Half duplex
eth0 PHY1 Down Speed :10 Half duplex
eth0 PHY2 Down Speed :10 Half duplex
eth0 PHY3 Down Speed :10 Half duplex
eth0 PHY4 Down Speed :10 Half duplex

Firmware recovering from TFTP server is stopped or failed! :(
(IPQ40xx) #

Od razu stwierdza ,że jest źle i chce TFTP aktywować ,żeby przez lan ściągać dobre smile

155 (edytowany przez MiG25 2024-01-25 18:20:43)

Odp: Netgear LBR20 Orbi

Cezary napisał/a:

a jak by po pierwszym uruchomieniu w uci-default sprawdzić czy ten warunek istnieje i zmodyfikować go żeby później nie był sprawdzany?

Ale ten warunek chyba jest w środku tej komendy load_chk_dniimg więc nie ma jak go modyfikować w uboocie , a bez tej komendy bootm nie odpala...

156

Odp: Netgear LBR20 Orbi

Ale dlaczego właściwie jest bootm 0x84000000 ? przecież to nie jest adres fizyczny tego fw ?
próbowałem początek ubi , ale momentalnie reset:

(IPQ40xx) # bootm 0xa600000
data abort
pc : [<8731a184>]          lr : [<87304094>]
sp : 871efd78  ip : 871f1f52     fp : 871efd94
r10: 00000000  r9 : 00000002     r8 : 871eff60
r7 : 871f1f38  r6 : 873643c8     r5 : 00000000  r4 : 0a600000
r3 : 00000000  r2 : 00000010     r1 : 00000000  r0 : 0a600000
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

resetting ...

157 (edytowany przez Cezary 2024-01-25 18:50:24)

Odp: Netgear LBR20 Orbi

NAND read: device 0 offset 0xa600000, size 0x20000
131072 bytes read: OK

NAND read: device 0 offset 0xa600000, size 0x1020000
16908288 bytes read: OK

0xa600000 to początek kernela. Najpierw sprawdza 128k kernela a później sam kernel i system plików do wielkości 16M z groszami.

To co napiszę jest głupie, ale są takie urządzenia: zrób partycję kernel, rootfs i rootfs_data. Kernel i rootfs mają mieć łącznie  0x1020000 a to co zostanie z wolnego obszaru  niech będzie na rootfs_data. Wtedy wczyta sobie te 16M, ono nie będzie zmienne więc wszystko mu się będzie zgadzało. Albo rootfs_data zrób zamiast partycji reserved.

EDIT: sprawdziłem logi z voxela i tam rootfs_data zaczyna się dopiero po 37MB, więc daleko po obszarze który on czyta i sprawdza. Chyba żeby bo czymś napchać żeby obraz był większy niż 16MB (zrobić pusty plik o rozmiarze powiedzmy 10MB?) i resztę z partycjami zostawić bez zmian. Chyba tez powinno dziać, choć rozwiązanie wydaje mi takie sobie.

Weź do obrazu dodaj plik 10-16MB tak aby skompilowany był powyżej tych 16MB i zobacz czy będzie działał. Bez przerabiania partycji.

Jeżlei to zadziała to trzeba by przerobić makro tworzące obraz i dodać | pad-to 16xxxk żeby obraz był po prostu trochę większy.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

158

Odp: Netgear LBR20 Orbi

Pusty chyba się kompresuje smile bo nic większ obraz nie wyszedł.

159

Odp: Netgear LBR20 Orbi

Zrób plik z randomowymi danymi i go skompresuj i obetnij do tych 12MB. Taki dołącz do obrazu to się więcej nie skompresuje smile

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

160

Odp: Netgear LBR20 Orbi

Wrzuciłem po prostu skompilowany obraz o wielkości 10,5MB , mam nadzieję że nie za mało...

161

Odp: Netgear LBR20 Orbi

Ile ma wynikowy? Musi mieć powyżej tych 16,5M

Ale jeszcze coś mi przyszło do głowy - jak zrobisz sysupgrade to też się nie będą sumy zgadzały. Więc nawet jeżeli będzie działać to trzeba przy sysupgrade też coś zrobić.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

162

Odp: Netgear LBR20 Orbi

Wynikowy ma ponad 20MB teraz , troche się zchodzi zanim to na darmowe mediafire wpadnie....
Tak , po sysupgrade też sumy się nie będą zgadzać .. Narazie zobaczmy img przez nmpr

163

Odp: Netgear LBR20 Orbi

No i niestety po wgraniu img przez nmpr za pierwszym razem sprawdzał  tylko 0x480000 , i po wczytaniu dużego pliku nie było... za drugim razem już brał te  0x1020000  ,ale się nie odpalił.

164

Odp: Netgear LBR20 Orbi

Wróciłem do punktu , w którym wszystki jest w squashfs , podzieliłem partycje , ale system i tak utworzył sobie własną rootfs_data i nie korzysta z mojej...

[    1.520229] 0x00000a600000-0x00000a9c0000 : "kernel"
[    1.524333] 0x00000a9c0000-0x00000b620000 : "rootfs"
[    1.536130] mtd: setting mtd23 (rootfs) as root device
[    1.536475] 1 squashfs-split partitions found on MTD device rootfs
[    1.540217] 0x00000ae80000-0x00000b620000 : "rootfs_data"
[    1.553903] 0x00000b620000-0x00000e200000 : "rootfs_data"
[    1.593859] 0x00000e200000-0x000010000000 : "reserved"

No i bootloader sprawdza teraz tylko  size 0x340000 , czyli tylko kawałek kernela  ....

165

Odp: Netgear LBR20 Orbi

Nie rób tego denx* to sobie nie podzieli.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

166

Odp: Netgear LBR20 Orbi

Że co ? nic takiego "denx" nie widzę....
Ale skoro czyta tylko kernel , to rozszerzę tą partycję rootfs i niech ją dzieli....

167

Odp: Netgear LBR20 Orbi

Jak robiłeś partycję rootfs? Nie wskazałeś tam compability z czymś i dlatego końcówkę zmienia w rootfs?

Wszystko jedno, byle by czytał stałą cześć i przeżywał restart.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

168 (edytowany przez MiG25 2024-01-26 09:49:16)

Odp: Netgear LBR20 Orbi

nie , ma teraz tylko label rootfs i adresy...

natomiast znowu overlay będzie pewnie w /tmp.... pzy pierwszym boocie jest w logach:

[   54.085307] jffs2: notice: (1564) jffs2_build_xattr_subsystem: complete building xattr subsystem, 0 of xdatum (0 unchecked, 0 orphan) and 0 of xref (0 dead, 0 orphan) found.
[   54.151994] overlayfs: upper fs does not support tmpfile.

reboot przeżywa.

169

Odp: Netgear LBR20 Orbi

To normalnie komunikaty.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

170

Odp: Netgear LBR20 Orbi

No tak , po reboocie overlay w tmp, w logach tylko taki błąd:

[   34.087947] jffs2: cannot read OOB for EB at 03340000, requested 8 bytes, read 8 bytes, error -74

171

Odp: Netgear LBR20 Orbi

To z kolei mu nie pasuje definicja nandu. Np. zły rozmiar strony ustawiony czy coś w ten deseń. Było to wcześniej?

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

172

Odp: Netgear LBR20 Orbi

Nie pamiętam ...ale i tak teraz to trzeba zmienić jen jffs2 na ubi ,bo tak nawet sugeruje log:

[    1.981907] mtdblock: MTD device 'rootfs' is NAND, please consider using UBI block devices instead.

to znowu label partycji rootfs trzeba dać "ubi" i będzie magia ? Czy coś więcej ? w tych arggs chyba....
Może coś kojarzysz , jakie urządzenie ma kernel w squash a reszta w ubi ?

173

Odp: Netgear LBR20 Orbi

CellC. No i kernel jest "natywnie", nie jest opakowany w squashfs. Poszukaj które urządzenia mają to makro  KERNEL_IN_UBI

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

174

Odp: Netgear LBR20 Orbi

Teraz mam tak:

[    1.918697] ubi0: attaching mtd23
[    2.100220] ubi0: scanning is finished
[    2.100264] ubi0: empty MTD device detected
[    2.119710] ubi0: attached mtd23 (name "ubifs", size 56 MiB)
[    2.119763] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
[    2.124458] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[    2.131178] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
[    2.137999] ubi0: good PEBs: 450, bad PEBs: 0, corrupted PEBs: 0
[    2.144785] ubi0: user volume: 0, internal volumes: 1, max. volumes count: 128
[    2.151047] ubi0: max/mean erase counter: 0/0, WL threshold: 4096, image sequence number: 2942612546
[    2.158054] ubi0: available PEBs: 406, total reserved PEBs: 44, PEBs reserved for bad PEB handli▒[    2.177195] /dev/root: Can't open blockdev
[    2.177242] VFS: Cannot open root device "ubiblock0_0" or unknown-block(0,0): error -6
[    2.180280] Please append a correct "root=" boot option; here are the available partitions:
[    2.188131] 1f00            1024 mtdblock0
[    2.188145]  (driver?)
[    2.200542] 1f01            1024 mtdblock1

pod co mam przypiąć root= jak nie ubiblock0_0 ?

175

Odp: Netgear LBR20 Orbi

Albo w ogóle nie wypełniaj albo zwykłe /dev/mtdblockXXX czy /dev/mtdXXX

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.