1 (edytowany przez MiG25 2024-03-08 11:19:00)

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 smile )
Zaznaczyłem który pin od czego , ale trzeba lupą zobaczyć :
https://i.ibb.co/Pmrf9KB/20240116-103524.jpg


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 0x83000000

Po 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.bin

Powró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=serial

Teraz , 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 0x05a00000

Czyszczenie danych env uboota

nand erase 0x680000 0x80000

Tryb 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

2

Odp: Netgear LBR20 Orbi

Ja tylko dodam że z alternatyw jest na niego voxel, a co za tym idzie pełny dostęp do ssh no i sdk z którego voxel jest zbudowany, ale oparty o bardzoe stare sdk bazujące na openwrt.

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

3

Odp: Netgear LBR20 Orbi

SSH to i chyba na oryginale można włączyć , ale nie da to nam dostępu do opkg i pakietów... A Voxel nic więcej realnie nie daje.
Nawet ,żeby wifi wyłączyć , to trzeba ileś tam skryptów poblokować...

4

Odp: Netgear LBR20 Orbi

Nawet nie wiem, szybko się pozbyłem oryginału.

Zaczynaj portowanie. Ja mam jeszcze swoje rzeczy do zrobienia, za jakieś dwa tygodnie powinien zakończyć swój projekt to mogę się przyłączyć. Ale znając życie zdążysz już to zrobić.

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

5

Odp: Netgear LBR20 Orbi

No chyba za bardzo przeceniasz moje możliwości smile
Initramfs co stworzyłem zatrzymało się na "Starting kernel...."
Więc z desperacji wgrywałem wszystkie initramfs z IPQ4019 , najpierw z Netgearów , później z ZTE , i każdy jeden zatrzymywał się dokładnie  tym samym miejcu... Może ktoś wie , gdzie szybko znaleść źródła Netgeara ( oni podobno dużo udostępniają)..

6

Odp: Netgear LBR20 Orbi

Znów voxel:

https://github.com/SVoxel/ORBI-LBR20

I netgeara https://kb.netgear.com/2649/NETGEAR-Ope … ammers-GPL

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

7

Odp: Netgear LBR20 Orbi

@MiG25:
- ściągasz obraz initramfs z https://dl.eko.one.pl/firmware/?version … gear_rbr50
- zmieniasz nazwę na image, robisz serwer tftp na np. 192.168.1.166
- uruchamiasz lbr20, przerywasz bootloader, robisz

setenv serverip 192.168.1.166; set fdt_high 0x84000000; tftpboot 0x84000000 image; bootm 0x84000000

Obraz się wczytuje i po kilku sekundach masz:

(IPQ40xx) # setenv serverip 192.168.1.166; set fdt_high 0x84000000; tftpboot 0x84000000 image; bootm 0x84000000
eth0 PHY0 Down Speed :10 Half duplex
eth0 PHY1 Down Speed :10 Half duplex
eth0 PHY2 Down Speed :10 Half duplex
eth0 PHY3 up Speed :1000 Full duplex
eth0 PHY4 Down Speed :10 Half duplex
Using eth0 device
TFTP from server 192.168.1.166; our IP address is 192.168.1.1
Filename 'image'.
Load address: 0x84000000
Loading: #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     ##########################################
done
Bytes transferred = 6337812 (60b514 hex)
## Booting kernel from FIT Image at 84000000 ...
   Using 'config@1' configuration
   Trying 'kernel-1' kernel subimage
     Description:  ARM OpenWrt Linux-5.15.139
     Type:         Kernel Image
     Compression:  uncompressed
     Data Start:   0x840000e4
     Data Size:    6317672 Bytes = 6 MiB
     Architecture: ARM
     OS:           Linux
     Load Address: 0x80208000
     Entry Point:  0x80208000
     Hash algo:    crc32
     Hash value:   5c4274c7
     Hash algo:    sha1
     Hash value:   b5a9556d90c318108768976b975063c989949d93
   Verifying Hash Integrity ... crc32+ sha1+ OK
## Flattened Device Tree from FIT Image at 84000000
   Using 'config@1' configuration
   Trying 'fdt-1' FDT blob subimage
     Description:  ARM OpenWrt netgear_rbr50 device tree blob
     Type:         Flat Device Tree
     Compression:  uncompressed
     Data Start:   0x84606884
     Data Size:    18255 Bytes = 17.8 KiB
     Architecture: ARM
     Hash algo:    crc32
     Hash value:   7fb98468
     Hash algo:    sha1
     Hash value:   4722b5905c532b44134f778fac2b9e4651519685
   Verifying Hash Integrity ... crc32+ sha1+ OK
   Booting using the fdt blob at 0x84606884
   Loading Kernel Image ... OK
OK
   Loading Device Tree to 83ff8000, end 83fff74e ... OK
Device nand2 not found!
 131072 bytes read: OK
Using machid 0x8010001 from environment

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 5.15.139 (cezary@eko.one.pl) (arm-openwrt-linux-muslgnueabi-gcc (OpenWrt GCC 12.3.0 r23004-7f0db09513) 12.3.0, GNU ld (GNU Binutils) 2.40.0) #0 SMP Fri Jan 5 22:36:31 2024
[    0.000000] CPU: ARMv7 Processor [410fc075] revision 5 (ARMv7), cr=10c5387d
[    0.000000] CPU: div instructions available: patching division code
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] OF: fdt: Machine model: NETGEAR RBR50
[    0.000000] Memory policy: Data cache writealloc
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000080000000-0x000000009fffffff]
[    0.000000]   HighMem  empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080000000-0x0000000087dfffff]
[    0.000000]   node   0: [mem 0x0000000087e00000-0x0000000087ffffff]
[    0.000000]   node   0: [mem 0x0000000088000000-0x000000009fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000009fffffff]
[    0.000000] percpu: Embedded 12 pages/cpu s16588 r8192 d24372 u49152
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 129920
[    0.000000] Kernel command line: root=/dev/mmcblk0p20 blkdevparts=mmcblk0:512K@17K(0:SBL1)ro,512K(0:BOOTCONFIG)ro,512K(0:QSEE)ro,512K(0:QSEE_ALT)ro,256K(0:CDT)ro,256K(0:CDT_ALT)ro,256K(0:DDRPARAMS)ro,256K(0:APPSBLENV)ro,1M(0:APPSBL)ro,1M(0:APPSBL_ALT)ro,256K(0:ART)ro,256K(ARTMTD)ro,2M(language)ro,256K(config)ro,256K(pot)ro,256K(traffic_meter)ro,256K(pot_bak)ro,256K(traffic_meter.bak)ro,3840K(kernel),31488K(rootfs),35328K@9233K(firmware),256K(mtdoops)ro,1457651200(reserved)ro,-(unallocated) rootfstype=squashfs,ext4 rootwait
[    0.000000] Dentry cache hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.000000] Inode-cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 495588K/524288K available (6747K kernel code, 610K rwdata, 1020K rodata, 12288K init, 247K bss, 28700K reserved, 0K cma-reserved, 0K highmem)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1

....

[   10.209203] ath10k_ahb a800000.wifi: failed to fetch board-2.bin or board.bin from ath10k/QCA4019/hw1.0
[   10.209288] ath10k_ahb a800000.wifi: failed to fetch board file: -12
[   10.217726] ath10k_ahb a800000.wifi: could not probe fw (-12)
[   10.230505] kmodloader: done loading kernel modules from /etc/modules.d/*



BusyBox v1.36.1 (2023-11-15 10:00:19 UTC) built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------------------------------
 |                                                                           |
 | OpenWrt 23.05-SNAPSHOT, r23695-80ef582dee                                 |
 |                                                                           |
 | Build time: 2024-01-06 14:43 CET                                          |
 | Cezary Jackiewicz, https://eko.one.pl                                     |
 |                                                                           |
 -----------------------------------------------------------------------------
 | Machine: NETGEAR RBR50                                                    |
 | Uptime: 0d, 00:00:15                                                      |
 | Load: 0.30 0.07 0.02                                                      |
 | Flash:                                                                    |
 | Memory: total: 496.0MB, free: 470.5MB, used: 5%                           |
 | Leases: 0                                                                 |
 | lan: static, 192.168.1.1                                                  |
 | wan: dhcp, ?                                                              |
 | wan6: dhcpv6, ?                                                           |
 -----------------------------------------------------------------------------
 === WARNING! ================================================================
 There is no root password defined on this device!
 Use the "passwd" command to set up a new password
 in order to prevent unauthorized SSH logins.
 -----------------------------------------------------------------------------

Złom który mam ma uszkodzony modem (nie jest widoczny na magistrali usb, nawet oryginalny soft go nie widzi) więc nie wiem czy usb prawidłowo inicjuje. Część gpio od ledów się zgadza, chyba nie wykrywa flash więc trzeba dts porównać.

Podstawa jest, można na obrazie z RBR50 się wzorować.

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

8 (edytowany przez MiG25 2024-01-20 11:16:26)

Odp: Netgear LBR20 Orbi

Q... A ja chciałem być "sprytny" ,i stwierdziłem ,że będę na domyślny adres 0x86000000 ładował i odpalał... Przez co żaden initramfs nie chciał mi się odpalić.... (Wieszał się na Starting Kernel...  , więc myślałem , że dobrze się do ramu wgrał...)

No ok ,jest od czego zacząć smile

9

Odp: Netgear LBR20 Orbi

Po wgraniu initramfs od rbr50 coś w usb było , ale jakby hub nie miał sterownika:

root@OpenWrt:/# cat /sys/kernel/debug/usb/devices

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 5.15
S:  Manufacturer=Linux 5.15.139 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=xhci-hcd.0.auto
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 0
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 5.15
S:  Manufacturer=Linux 5.15.139 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=xhci-hcd.0.auto
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=(none)
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms
root@OpenWrt:/#

Takie coś na szybko stworzyłem:
https://github.com/MiG-41/openwrt/commi … 6ca13b5638

Narazie się kompiluje , zobaczymy co z tego wyjdzie...

10

Odp: Netgear LBR20 Orbi

Hub to hub, nie ma specjalnego sterownika. A jak nie widzisz urządzeń to pewnie trzeba to jakim gpio przełączyć, zauważ że oryginalny soft robi coś z gpio 29/30/31 czy jakoś tak.

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

11

Odp: Netgear LBR20 Orbi

No jest coś w bootlogu takiego:

 Set GPIO28 to 0

 Set GPIO29 to 0

 Set GPIO30 to 0

 Set GPIO31 to 0

 Set GPIO31 to 1

 Set GPIO29 to 1

 Set GPIO28 to 1

 Set GPIO29 to 0
hyfi_netlink_receive:66:Device not found: br0
hyd: ERROR: Bridge is not attached; start hyfi-bridging first

 Set GPIO29 to 1

Po czym modem się pojawia..
Natomiast tu w dts obecnie ( na podstawie rbr50)  odwołuje się do qcom-ipq4019-orbi.dtsi , a tam m.n. te gpio są ustawione na jakiś sd_pins..
Da się teraz na próbę na sztywno ustawić te gpio z initramsfsa od rbr50 ( tak żeby wykrył modem)

No i z mojego nieudolnie wyciągniętego device-tree  usb2 i usb3 mają inne adresy... Już poprawiłem to w swoim dtsie ,ciekawe , czy to też może na to wpływać...

12

Odp: Netgear LBR20 Orbi

Jeżeli kompilujesz z openwrt to pamiętaj żeby do testów pozaznaczać ręcznie jako <*> wszystkie pakiety który są wpisane w DEVICE_PACKAGES bo inaczej initramfs nie będzie miał ich w sobie, wejdą tylko do sysupgrade i factory. No chyba że przez nmrpflash sprawdzisz czy wgrywa się factory, jeżeli tak możesz po kolei dodawać rzeczy i robić sysupgrade i testować.

GPIO włączasz w userlandzie w https://github.com/openwrt/openwrt/blob … o_switches tylko poszukaj od czego jest poszczególny gpio.

Obrazy od RBR50 mają za dużo ledów zdefiniowanych, więc w dtsie będzie to do zmiany. I zastanawiam się czy czasami firmware do ipq-wifi nie trzeba dodać. Ale nie wiem, nie wchodziłem tak bardzo żeby móc na to odpowiedzieć.

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

13 (edytowany przez MiG25 2024-01-20 16:00:02)

Odp: Netgear LBR20 Orbi

Coś takiego do tego 03_gpio_switches:

netgear,lbr20)
    ucidef_add_gpio_switch "lte_sw1" "LTE Switch 1" "28" "1"
    ucidef_add_gpio_switch "lte_sw2" "LTE Switch 2" "29" "1"
    ucidef_add_gpio_switch "lte_sw3" "LTE Switch 3" "30" "1"
    ucidef_add_gpio_switch "lte_sw4" "LTE Switch 4" "31" "1"
    ;;

Czy też te numerki nie odpowiadają tym gpio ?

No i co do sieci , to dopuki chyba partycji ART nie będzie , to wifi się nie wgra , no i się nie przekonamy ,czy trzeba zmienić...
A narazie partycji żadnych niet...

14

Odp: Netgear LBR20 Orbi

Jeżeli działają to odpowiadają. Tylko znajdź co one faktycznie robię i dostosuj nazwy. Bo do czegoś służą poza włączeniem zasilania na usb, tylko do czego...

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

15

Odp: Netgear LBR20 Orbi

To coś mówi ? (to jest z initramfs rbr50)

root@OpenWrt:/# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 412-511, parent: platform/1000000.pinctrl, 1000000.pinctrl:
 gpio0   : in  high func0 2mA pull up
 gpio1   : in  high func0 2mA pull up
 gpio2   : in  high func0 2mA pull up
 gpio3   : in  low  func0 2mA no pull
 gpio4   : in  high func0 2mA pull up
 gpio5   : in  low  func0 2mA pull down
 gpio6   : in  high func1 2mA pull up
 gpio7   : in  high func1 2mA pull up
 gpio8   : out low  func1 2mA no pull
 gpio9   : out low  func1 2mA no pull
 gpio10  : in  high func0 2mA pull up
 gpio11  : in  high func0 2mA pull up
 gpio12  : in  high func1 2mA pull up
 gpio13  : in  high func1 2mA pull up
 gpio14  : in  low  func1 2mA pull up
 gpio15  : in  low  func1 2mA pull up
 gpio16  : out low  func1 2mA no pull
 gpio17  : out low  func1 2mA no pull
 gpio18  : in  high func0 4mA pull up
 gpio19  : in  high func1 2mA pull down
 gpio20  : out low  func1 2mA no pull
 gpio21  : out low  func1 2mA no pull
 gpio22  : in  high func0 4mA pull up
 gpio23  : out high func1 10mA pull up
 gpio24  : out low  func1 10mA pull down
 gpio25  : out low  func1 10mA pull down
 gpio26  : out low  func1 10mA pull down
 gpio27  : out low  func1 16mA pull down
 gpio28  : in  high func1 10mA pull up
 gpio29  : in  high func1 10mA pull up
 gpio30  : in  high func1 10mA pull up
 gpio31  : in  high func1 10mA pull up
 gpio32  : in  high func1 10mA no pull
 gpio33  : in  high func0 2mA no pull
 gpio34  : in  high func0 2mA pull up
 gpio35  : in  high func0 2mA pull up
 gpio36  : in  high func0 2mA pull down
 gpio37  : in  low  func0 2mA pull down
 gpio38  : out high func0 2mA pull down
 gpio39  : out high func0 2mA pull up
 gpio40  : in  high func0 2mA pull up
 gpio41  : out high func0 2mA pull down
 gpio42  : in  low  func0 2mA pull down
 gpio43  : in  low  func0 2mA pull down
 gpio44  : in  low  func0 2mA pull down
 gpio45  : in  high func0 2mA pull down
 gpio46  : in  high func0 2mA pull down
 gpio47  : in  high func0 2mA pull down
 gpio48  : in  low  func0 2mA pull down
 gpio49  : in  high func0 4mA pull up
 gpio50  : in  high func0 2mA pull up
 gpio51  : in  high func0 2mA pull down
 gpio52  : in  high func1 2mA pull up
 gpio53  : out high func0 2mA pull up
 gpio54  : out low  func0 2mA pull down
 gpio55  : in  high func1 2mA pull down
 gpio56  : in  high func1 2mA pull down
 gpio57  : out low  func0 2mA pull down
 gpio58  : in  low  func3 2mA no pull
 gpio59  : in  high func2 2mA no pull
 gpio60  : out low  func0 2mA pull down
 gpio61  : in  high func1 2mA pull down
 gpio62  : in  high func1 2mA pull down
 gpio63  : out high func0 2mA pull down
 gpio64  : out low  func0 2mA pull down
 gpio65  : in  low  func1 2mA pull down
 gpio66  : in  low  func1 2mA pull down
 gpio67  : in  low  func1 2mA pull down
 gpio68  : in  low  func1 2mA pull down
 gpio69  : in  high func1 2mA pull down
 gpio70  : in  low  func0 2mA pull down
 gpio71  : in  low  func0 2mA pull down
 gpio72  : in  low  func0 2mA pull down
 gpio73  : in  low  func0 2mA pull down
 gpio74  : in  low  func0 2mA pull down
 gpio75  : in  low  func0 2mA pull down
 gpio76  : in  low  func0 2mA pull down
 gpio77  : in  low  func0 2mA pull down
 gpio78  : in  low  func0 2mA pull down
 gpio79  : in  low  func0 2mA pull down
 gpio80  : in  low  func0 2mA pull down
 gpio81  : in  low  func0 2mA pull down
 gpio82  : in  low  func0 2mA pull down
 gpio83  : in  low  func0 2mA pull down
 gpio84  : in  low  func0 2mA pull down
 gpio85  : in  low  func0 2mA pull down
 gpio86  : in  low  func0 2mA pull down
 gpio87  : in  low  func0 2mA pull down
 gpio88  : in  low  func0 2mA pull down
 gpio89  : in  low  func0 2mA pull down
 gpio90  : in  low  func0 2mA pull down
 gpio91  : in  low  func0 2mA pull down
 gpio92  : in  low  func0 2mA pull down
 gpio93  : in  low  func0 2mA pull down
 gpio94  : in  low  func0 2mA pull down
 gpio95  : in  low  func0 2mA pull down
 gpio96  : in  low  func0 2mA pull down
 gpio97  : in  low  func0 2mA pull down
 gpio98  : in  low  func0 2mA pull down
 gpio99  : in  low  func0 2mA pull down
root@OpenWrt:/#

16

Odp: Netgear LBR20 Orbi

Nie, to jest tylko spis dostępnych gpio. Do czego zaś służy dane gpio to już musisz sie sam dowiedzieć metodą prób i błędów ew podglądać oryginalny soft lub jego źródła.

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

17

Odp: Netgear LBR20 Orbi

W oryginalne jest narzędzie o nazwie mnctrl.sh do kontroli prawie wszystkiego. A w nim:

LTE_RST=28
LTE_PWRKEY=29
LTE_USB_BOOT=30
LTE_PWM=31

lte_pwroff()
{
        # Per HW Datasheet, 3.7.2.1- Turn off the module using PWRKEY
        # Drive PWRKEY to low for at least 800ms, then release it
        echo "[MBCTL]: power off LTE module"
        gpio -n gpio_write -c $LTE_PWRKEY -s 0
        sleep 1
        gpio -n gpio_write -c $LTE_PWRKEY -s 1
        echo "Wait ~8s for LTE shutdown(Avoid damage its internal flash)"
        sleep 10
        echo "."
}

lte_pwron()
{
        gpio -n gpio_write -c $LTE_RST -s 0
        gpio -n gpio_write -c $LTE_PWRKEY -s 0
        gpio -n gpio_write -c $LTE_USB_BOOT -s 0
        gpio -n gpio_write -c $LTE_PWM -s 0
        sleep 1
        gpio -n gpio_write -c $LTE_PWM -s 1
        gpio -n gpio_write -c $LTE_PWRKEY -s 1
        gpio -n gpio_write -c $LTE_RST -s 1
        sleep 1
        gpio -n gpio_write -c $LTE_PWRKEY -s 0
        sleep 1
        gpio -n gpio_write -c $LTE_PWRKEY -s 1
}

Przynajmniej wiadomo do czego to służy.

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

18 (edytowany przez MiG25 2024-01-20 17:53:08)

Odp: Netgear LBR20 Orbi

To co mi wyszło z kompilacji znowu nie chciało się uruchomić , zatrzymywało się na "Starting kernel..."
Więc jeszcze obniżyłem adresy do :

set fdt_high 0x83000000; tftpboot 0x83000000 openwrt-ipq40xx-generic-netgear_lbr20-initramfs-zImage.itb; bootm 0x83000000

No i to już ruszyło....

W logu znalazłem

[   12.994269] usbserial: USB Serial support registered for GSM modem (1-port)

Więc mówię jest chyba ok...  Po czym za jakiś czas takie rzeczy:

[   41.348261] export_store: invalid GPIO 28
[   42.362470] export_store: invalid GPIO 29
[   42.853069] ipqess-edma c080000.ethernet eth0: configuring for fixed/internal link mode
[   42.853887] ipqess-edma c080000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[   42.858838] qca8k-ipq4019 c000000.switch wan: configuring for phy/psgmii link mode
[   42.868305] qca8k-ipq4019 c000000.switch: PSGMII calibration!
[   43.375905] export_store: invalid GPIO 30
[   43.826587] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   44.389212] export_store: invalid GPIO 31

I cat /sys/kernel/debug/usb/devices nic nie pokazuje...


Rozumiem , że trzeba dts pisać od nowa wyrzycając to ....orbi.dtsi... ( bo tam te gpio są..)

19

Odp: Netgear LBR20 Orbi

Raczej zaimportuj sobie zawartość orbi.dtsi do swojego dts i zmieniaj.

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

20 (edytowany przez MiG25 2024-01-20 21:02:40)

Odp: Netgear LBR20 Orbi

MiG25 napisał/a:

Coś takiego do tego 03_gpio_switches:

netgear,lbr20)
    ucidef_add_gpio_switch "lte_sw1" "LTE Switch 1" "28" "1"
    ucidef_add_gpio_switch "lte_sw2" "LTE Switch 2" "29" "1"
    ucidef_add_gpio_switch "lte_sw3" "LTE Switch 3" "30" "1"
    ucidef_add_gpio_switch "lte_sw4" "LTE Switch 4" "31" "1"
    ;;

Czy też te numerki nie odpowiadają tym gpio ?

No i co do sieci , to dopuki chyba partycji ART nie będzie , to wifi się nie wgra , no i się nie przekonamy ,czy trzeba zmienić...
A narazie partycji żadnych niet...

Wpisanie tego do 03_gpio_switches nie powoduje uruchomienia tych GPIO... pojawiają się błędy przy starcie

 27.505939] export_store: invalid GPIO 28
Thu Jan  1 00:00:27 1970 daemon.notice procd: /etc/rc.d/S94gpio_switch: sh: write error: Invalid argument
Thu Jan  1 00:00:28 1970 daemon.notice procd: /etc/rc.d/S94gpio_switch: /etc/rc.common: eval: line 42: can't create /sys/class/gpio/gpio28/value: nonexistent directory

także ręcznie to nic nie daje:

echo 28 >/sys/class/gpio/export
 export_store: invalid GPIO 28
ash: write error: Invalid argument

21 (edytowany przez Cezary 2024-01-20 21:20:34)

Odp: Netgear LBR20 Orbi

Przecież wiesz dlaczego - w dts'w od RBR'a masz te gpio wykorzystywane do karty SD, więc jeżeli nadal bazujesz na tamtym *orbi.dtsi musisz sobie usunąć całego noda albo fizycznie to wywalić z dts jeżeli skopiowałeś jego zawartość dla lbr20.

Zrób całego dts od początku, nie includuj tam tego bo i tak będziesz go zmieniał (np. jest inna liczna lanów, ledów) itd.

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

22

Odp: Netgear LBR20 Orbi

Nie no na to wpadłem , jest zrobiony nowy dts bez *orbi.dtsi ( ale bazujący na nim) , i obsługa karty sd wyrzucona razem z tymi pinami.

23

Odp: Netgear LBR20 Orbi

pokaż

cat /sys/kernrl/debug/gpio
ls -al /sys/class/gpio
Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

24

Odp: Netgear LBR20 Orbi

root@OpenWrt:/# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 412-511, parent: platform/1000000.pinctrl, 1000000.pinctrl:
 gpio0   : in  high func0 2mA pull up
 gpio1   : in  high func0 2mA pull up
 gpio2   : in  high func0 2mA pull up
 gpio3   : in  low  func0 2mA no pull
 gpio4   : in  high func0 2mA pull up
 gpio5   : in  low  func0 2mA pull down
 gpio6   : in  high func1 2mA pull up
 gpio7   : in  high func1 2mA pull up
 gpio8   : out low  func1 2mA no pull
 gpio9   : out low  func1 2mA no pull
 gpio10  : in  high func0 2mA pull up
 gpio11  : in  high func0 2mA pull up
 gpio12  : in  high func1 2mA pull up
 gpio13  : in  high func1 2mA pull up
 gpio14  : in  low  func1 2mA pull up
 gpio15  : in  low  func1 2mA pull up
 gpio16  : out low  func1 2mA no pull
 gpio17  : out low  func1 2mA no pull
 gpio18  : in  high func0 4mA pull up
 gpio19  : in  high func1 2mA pull down
 gpio20  : out low  func1 2mA no pull
 gpio21  : out low  func1 2mA no pull
 gpio22  : out low  func0 4mA pull up
 gpio23  : out high func0 4mA pull up
 gpio24  : out low  func0 2mA pull down
 gpio25  : out low  func0 2mA pull down
 gpio26  : out low  func0 2mA pull down
 gpio27  : out low  func0 2mA pull down
 gpio28  : in  high func1 10mA pull up
 gpio29  : in  high func1 10mA pull up
 gpio30  : in  high func1 10mA pull up
 gpio31  : in  high func1 10mA pull up
 gpio32  : in  high func0 2mA pull up
 gpio33  : in  high func0 2mA no pull
 gpio34  : in  high func0 2mA pull up
 gpio35  : in  high func0 2mA pull up
 gpio36  : in  high func0 2mA pull down
 gpio37  : in  low  func0 2mA pull down
 gpio38  : out high func0 2mA pull down
 gpio39  : out high func0 2mA pull up
 gpio40  : in  high func0 2mA pull up
 gpio41  : out high func0 2mA pull down
 gpio42  : in  low  func0 2mA pull down
 gpio43  : in  low  func0 2mA pull down
 gpio44  : in  low  func0 2mA pull down
 gpio45  : in  high func0 2mA pull down
 gpio46  : in  high func0 2mA pull down
 gpio47  : in  high func0 2mA pull down
 gpio48  : in  low  func0 2mA pull down
 gpio49  : in  high func0 4mA pull up
 gpio50  : in  high func0 2mA pull up
 gpio51  : in  high func0 2mA pull down
 gpio52  : in  high func1 2mA pull up
 gpio53  : out high func0 2mA pull up
 gpio54  : out low  func0 2mA pull down
 gpio55  : in  high func1 2mA pull down
 gpio56  : in  high func1 2mA pull down
 gpio57  : out low  func0 2mA pull down
 gpio58  : in  low  func3 2mA no pull
 gpio59  : in  high func2 2mA no pull
 gpio60  : out low  func0 2mA pull down
 gpio61  : in  high func1 2mA pull down
 gpio62  : in  high func1 2mA pull down
 gpio63  : out high func0 2mA pull down
 gpio64  : out low  func0 2mA pull down
 gpio65  : in  low  func1 2mA pull down
 gpio66  : in  low  func1 2mA pull down
 gpio67  : in  low  func1 2mA pull down
 gpio68  : in  low  func1 2mA pull down
 gpio69  : in  high func1 2mA pull down
 gpio70  : in  low  func0 2mA pull down
 gpio71  : in  low  func0 2mA pull down
 gpio72  : in  low  func0 2mA pull down
 gpio73  : in  low  func0 2mA pull down
 gpio74  : in  low  func0 2mA pull down
 gpio75  : in  low  func0 2mA pull down
 gpio76  : in  low  func0 2mA pull down
 gpio77  : in  low  func0 2mA pull down
 gpio78  : in  low  func0 2mA pull down
 gpio79  : in  low  func0 2mA pull down
 gpio80  : in  low  func0 2mA pull down
 gpio81  : in  low  func0 2mA pull down
 gpio82  : in  low  func0 2mA pull down
 gpio83  : in  low  func0 2mA pull down
 gpio84  : in  low  func0 2mA pull down
 gpio85  : in  low  func0 2mA pull down
 gpio86  : in  low  func0 2mA pull down
 gpio87  : in  low  func0 2mA pull down
 gpio88  : in  low  func0 2mA pull down
 gpio89  : in  low  func0 2mA pull down
 gpio90  : in  low  func0 2mA pull down
 gpio91  : in  low  func0 2mA pull down
 gpio92  : in  low  func0 2mA pull down
 gpio93  : in  low  func0 2mA pull down
 gpio94  : in  low  func0 2mA pull down
 gpio95  : in  low  func0 2mA pull down
 gpio96  : in  low  func0 2mA pull down
 gpio97  : in  low  func0 2mA pull down
 gpio98  : in  low  func0 2mA pull down
 gpio99  : in  low  func0 2mA pull down
root@OpenWrt:/# ls -al /sys/class/gpio
drwxr-xr-x    2 root     root             0 Jan  1 00:00 .
drwxr-xr-x   33 root     root             0 Jan  1 00:00 ..
--w-------    1 root     root          4096 Jan  1 00:01 export
lrwxrwxrwx    1 root     root             0 Jan  1 00:00 gpiochip412 -> ../../devices/platform/soc/1000000.pinctrl/gpio/gpiochip412
--w-------    1 root     root          4096 Jan  1 00:00 unexport
root@OpenWrt:/#

25

Odp: Netgear LBR20 Orbi

Twoje gpio zaczyna się od offsetu 412 więc gpio 28 to jest 412+28 = 440. Zrób export 440, 441 itd.

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