Temat: Netgear LBR20 Orbi
SoC Type: Qualcomm IPQ4019
RAM: 512 MiB
Flash: 256 MiB , SLC NAND, 2 Gbit (Macronix MX30LF2G18AC)
Bootloader: U-Boot
Modem LTE CAT.18 Quectel EG-18EA , Max. 1.2Gbps downlink / 150Mbps uplink (agreguje 5pasm DL , jedno UL)
WiFi class AC2200:
-radio0 : 5G na czipie QCA9888 , WiFi5- 802.11a/n/ac MU-MIMO 2x2 , 887Mbps , 80MHz - tu ma ograniczoną antenę do niskich kanałów ( przy 100 i wyżej sygnał jest bardzo słaby )
- radio1: 2G na czipie IPQ4019 ,WiFi4- 802.11b/g/n MIMO2x2 300Mbps 40Mhz
- radio2: 5G na czipie IPQ4019 , WiFi5- 802.11a/n/ac MU-MIMO 2x2 , 887Mbps ,80Mhz - tu ma ograniczoną antenę do wysokich kanałów , od 100 do 165. ( standardowo ustawiony kanał 100 , aby go włączyć trzeba ustawić country , lub ew. ustawić kanał 149 - tam nie ma DFS).
Ethernet: 2x1GbE (WAN/LAN1, LAN2)
LEDs: section power : green and red , section on top (orbi) on driver TLC59208F: red, green ,blue and white
USB ports: No
Button: 2 Reset and SYNC(WPS)
Power: 12 VDC, 2,5 A
Connector type: Barrel
Do rozebrania potrzebny Torx 10 , dwie śruby są pod naklejką tuż obok gniazd antenowych , po czym jedna połówka rozsuwa się względem drugiej ( potrzebne jeszcze odglejenie dwóch gumowych nóżek i naklejki na spodzie ).
Widok płyty od strony konektora serial ( wlutowane fabrcznie
)
Zaznaczyłem który pin od czego , ale trzeba lupą zobaczyć :
Oprogramowanie modemu:
Standardowo do wyboru A08 lub A11 dostępne na stronie Netgear. Jest możliwość aktualizacji i powrotu. Można także pokusić się o wersję A12 ,lub A13 z modemu np Zyxel LTE5398-M904 , lub innych dostępnych źródeł. ).
Ja nie zauważyłem żadnej różnicy w działaniu.
Aktualizację najwygodniej przeprowadzić z przeglądarki oryginalnego oprogramowania.
Instalacja OpenWRT:
1. Po prostu wgrywamy przez przeglądarkę lub NMRPFlash plik *factory.img
Lub:
2. Rozbieramy router , dostajemy się do konsoli UART i podłączamy konwerter USB-TTL 3,3V 115200baud 8N1 .
Zatrzymujemy uboot przyciskiem ESC , ustawiamy komputerowi stały adres 192.168.1.10 (maska 255.255.255.0),łączymy kablem lan router z komputerem , ,po czym uruchamiamy serwer tpftp ( najszybciej programikiem Tpftpd64) , umieszczamy w katalogu plik initramfs o nazwie openwrt-ipq40xx-generic-netgear_lbr20-initramfs-zImage.itb i w konsoli wklejamy komendę:
setenv serverip 192.168.1.10; set fdt_high 0x85000000; tftpboot 0x83000000 openwrt-ipq40xx-generic-netgear_lbr20-initramfs-zImage.itb; bootm 0x83000000Po uruchomieniu w ramie openwrt , wgrywamy poprzez scp lub ściągmy bezpośrednio z sieci plik sysupgrade do katalogu /tmp o nazwie openwrt-ipq40xx-generic-netgear_lbr20-squashfs-sysupgrade.bin i w konsoli wpisujemy:
sysupgrade -n /tmp/openwrt-ipq40xx-generic-netgear_lbr20-squashfs-sysupgrade.binPowrót do oryginalnego oprogramowania:
Ściągamy ze strony Netgear oprogramowanie w postaci pliku *.img i wgrywamy go programem NMRPFlash.
Jeśli używaliśmy partycji ntgrdata to warto ją przed powrotem wyczyścić ,np. poleceniem "mtd erase ntgrdata" (trzeba najpierw zainstalować pakiet kmod-mtd-rw i go odpowiednio uruchomić).
Wyłączanie sprawdzania CRC przez uBoot.
Urządzenie ma standardowo w uBoot wbudowany programik do sprawdzania sumy CRC wgranego fw. Jeśli stwierdzi ,że suma się zmieniła (a tak się dzieje po pierwszym sysupgrage) ,to urządzenie usilnie podczas startu będzie próbować ściągać "prawidłowe oprogramowanie" przez pord LAN2 najpierw przez NMRP a następnie przez TFTP , do tego stopnia , że jeśli jest podłączone jakiekolwiek urządzenie do tego portu , to LBR20 nie uruchomi OpenWRT ,tylko będzie czekać w nieskończoność na upgrade.
Najprostszą metodą jest nie używać portu LAN2 ,lub ew na czas startu wyjść wtyczkę.
Jeśli jednak będziemy używać portu LAN2 , to możemy wyłączyć sprawdzanie tej sumy CRC przez uBoot.
Orginalnie uboot używa defaultowych komend ENV. Jeśli je zmieniamy , zapisuje je w partycji mtd8 o nazwie 0:APPSBLENV.
Aby przepisać defaultowe ENV do partcji mtd8 wykonujemy po kolei komendy:
fw_setenv baudrate "115200"
fw_setenv bootcmd "mii write 0x3 0x0 0x800; sleep 3; nmrp; load_chk_dniimg 0x84000000; setenv fdt_high 0x87000000; bootm 0x84000000"
fw_setenv bootdelay "1"
fw_setenv delenv "nand erase 0x680000 0x80000"
fw_setenv ethact "eth0"
fw_setenv flash_type "2"
fw_setenv ipaddr "192.168.1.1"
fw_setenv loadaddr "0x84000000"
fw_setenv machid "8010001"
fw_setenv serverip "192.168.1.10"
fw_setenv stderr "serial"
fw_setenv stdin "serial"
fw_setenv stdout "serial"Za pierwszym razem ( jeśli mtd8 nie miało żadnych wartości może wyskoczyć ostrzeżenie o błędnej CRC i używaniu wartości defaultowych.Na wszelki wypadek można ponawić tą samą komendę.)
Na koniec sprawdzamy , czy wszystkie pozycje się dodały komendą fw_printenv , i wygląda to tak:
baudrate=115200
bootcmd=mii write 0x3 0x0 0x800; sleep 3; nmrp; load_chk_dniimg 0x84000000; setenv fdt_high 0x87000000; bootm 0x84000000
bootdelay=1
delenv=nand erase 0x680000 0x80000
ethact=eth0
flash_type=2
ipaddr=192.168.1.1
loadaddr=0x84000000
machid=8010001
serverip=192.168.1.10
stderr=serial
stdin=serial
stdout=serialTeraz , aby wyłączyć sprawdzanie CRC zastępujemy pozycię bootcmd , wpisujemy:
fw_setenv bootcmd "mii write 0x3 0x0 0x800; sleep 3; nmrp; nboot 0x84000000 0 0xa600000; setenv fdt_high 0x87000000; bootm 0x84000000"I sprawdzamy fw_printenv , czy pozycja bootcmd została zmieniona , i czy są pozostałe pozycje. Ważne ,aby sprawdzić je , ponieważ każdy błąd może spowodować , że uboot zinterpretuje je inaczej , i openwrt się nie uruchomi , pozostanie jedynie dostanie się do konsoli serial przez konwerter.
Kilka poleceń z uBoota:
- czyszczenie ntgrdata:
nand erase 0x1300000 0xa600000- czyszczenie partycji firmware (wraz rootfs i rootfs_data) wraz z reserved:
nand erase 0xa600000 0x05a00000Czyszczenie danych env uboota
nand erase 0x680000 0x80000Tryb NMRP odpala się sam i czeka chwilę na wgranie obrazu , bądź też możemy go uruchomić z uboota poleceniem "nmrp".
NMRPFlash do ściągnięcia z githuba: https://github.com/jclehner/nmrpflash