1 (edytowany przez acc 2019-01-11 00:30:57)

Temat: TP-Link Archer C2300 - OpenWrt, problem z mii

Cześć,

Archer C2300 - router, którym społeczność OpenWrt nie jest zainteresowana ze względu na procesor Broadcoma. W normalnej sytuacji pewnie i ja sam bym go nie kupił ze względu na brak alternatywnego oprogramowania. Ale stało się... prezent od żony, nie można sprzedać smile Postanowiłem więc się nim trochę pobawić.... Od sprzętu nie wymagam całkowicie alternatywnego OpenWrt (czytałem trochę o zamkniętych binarnych sterownikach itp). Chciałbym wykorzystać to co jest, jedynie trochę to wzbogacając smile

Firmware TP-Linka to mocno przerobiony OpenWrt Attitude Adjustment. Sprzętowo platforma bardzo mocna - sporo pamięci, procesor dual core 1.8ghz... Udało mi się już sporo - odkryłem gdzie jest uart, jak postawić pełnoprawny demon ssh, jak zmieniać konfigurację korzystając z Backup/Restore na oryginalnym firmware...

Postanowiłem przyczynić się trochę społeczności i postęp prac udokumentować. Można poczytać na https://github.com/acc-/tplink-archer-c2300/wiki

To tyle tytułem wstępu - teraz czas na opisanie problemu. Skompilowałem moduły usbnet, cdc_ether na linuxie (cross compile dla aarch64). Chciałbym na tym sprzęcie odpalić modem LTE. Niestety, nie udaje mi się wczytać usbnet - wygląda jakby w kernelu brakowało funkcji 'mii*'.

insmod usbnet.ko

usbnet: Unknown symbol mii_ethtool_sset (err 0)
usbnet: Unknown symbol mii_link_ok (err 0)
usbnet: Unknown symbol usb_autopm_get_interface_no_resume (err 0)
usbnet: Unknown symbol pm_runtime_enable (err 0)
usbnet: Unknown symbol usb_autopm_get_interface_async (err 0)
usbnet: Unknown symbol usb_autopm_put_interface_async (err 0)
usbnet: Unknown symbol mii_nway_restart (err 0)
usbnet: Unknown symbol usb_autopm_get_interface (err 0)
usbnet: Unknown symbol mii_ethtool_gset (err 0)

Niestety, przy menuconfig nie można wybrać nic związanego z CONFIG_MII. Znalazłem to w .config, ale zmiana z 'y' na 'm' nie działa. Mam wrażenie że kernel jest celowo okrojony, a tych funkcji nie można skompilować jako osobny moduł sad

Czy ma ktoś jakiś pomysł? Nie chcę budować własnego kernela (czort wie jakie customowe drivery są od broadcom'a)...

2

Odp: TP-Link Archer C2300 - OpenWrt, problem z mii

Moduł mii.ko załaduj wcześniej. Musiał się skompilować skoro udało Ci się skompilować usbnet.ko.

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

3

Odp: TP-Link Archer C2300 - OpenWrt, problem z mii

Hej,

sęk w tym, że on się nawet nie skompilował...

acc@debian:~/c2300/sdk/bcm963xx_router/kernel/linux-4.1/drivers/net$ find . -name mii*
./mii.c

to kernel 4.1.27. W pliku .config mogę tylko wymusić budowanie w kernelu, nie jako moduły:

CONFIG_NETDEVICES=y
CONFIG_MII=y
CONFIG_NET_CORE=y

make config nawet nie daje opcji kompilacji jako moduł - tylko kernel albo wcale. Co więcej, make config nawet nie pyta o MII...

*
* Network device support
*
Network device support (NETDEVICES) [Y/n/?]
  Network core driver support (NET_CORE) [Y/n/?]

tak samo make menuconfig - nie ma tam nic z MII

nie wiem dlaczego make config nie daje w tym przypadku możliwości zbudowania jako moduł...

4

Odp: TP-Link Archer C2300 - OpenWrt, problem z mii

Bo np. kernel stary czy coś zmienili lub coś zależy od tego żeby był na stałe. I teraz jest problem bo jeżeli wymuszone jak jest na stałe to ten standardowy kernel nie jest z tym skompilowany a moduł który masz uważa że powinien być w kernelu. I tyle.

Zobacz czy czegoś nie masz zaznaczonego na stałe to wymusza też zaznaczenie na stałe mii zamiast umożliwiać zbudowanie go jako modułu. O ile kernel 4.1 w ogóle to umożliwia bo już nie pamiętam.

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

5 (edytowany przez acc 2019-01-13 02:40:55)

Odp: TP-Link Archer C2300 - OpenWrt, problem z mii

To musi być coś z samą konfiguracją kernela w paczce GPL od TP-Linka. Ale poradziłem sobie inaczej - wziąłem przekompilowane moduły mii, cdc_ether, usbnet i usbcore z AsusWRT Merlin dla RT-AC86u. Też kernel 4.1.27.

modprobe cdc_ether wczytuje wszystkie zależności poprawnie. Moduły są załadowane:

root@AC2300:~# lsmod | grep  usb
usbnet 21058 1 cdc_ether, Live 0xffffffbffc2b3000
mii 4341 1 usbnet, Live 0xffffffbffc278000
usb_poll 2176 0 - Live 0xffffffbffc9b7000 (O)
usb_storage 46455 0 - Live 0xffffffbffc990000
bcm_usb 1209 0 - Live 0xffffffbffc817000
root@AC2300:~#
root@AC2300:~#
root@AC2300:~# lsmod | grep  cdc
cdc_ether 4864 0 - Live 0xffffffbffc2a9000
usbnet 21058 1 cdc_ether, Live 0xffffffbffc2b3000

Niemniej w momencie wsadzenia modemu E3372 (HiLink), wykrywa mi tylko usb storage...

usb 3-1: USB disconnect, device number 2
usb 3-1: new high-speed USB device number 3 using ehci-platform
usb-storage 3-1:1.0: USB Mass Storage device detected
scsi host1: usb-storage 3-1:1.0
scsi 1:0:0:0: CD-ROM            HUAWEI   Mass Storage     2.31 PQ: 0 ANSI: 2
scsi 1:0:0:1: Direct-Access     HUAWEI   TF CARD Storage  2.31 PQ: 0 ANSI: 2
sd 1:0:0:1: [sda] Attached SCSI removable disk

Podczas gdy mój Xiaomi MiWifi mini wykrywa poprawnie modem i widać że moduł cdc_ether się uaktywnił (i dodatkowo zauważył storage):

[266278.678936] usb 1-1: new high-speed USB device number 7 using ehci-platform
[266278.787654] usb-storage 1-1:1.0: USB Mass Storage device detected
[266278.809922] scsi host0: usb-storage 1-1:1.0
[266279.228724] usb 1-1: USB disconnect, device number 7
[266279.970498] usb 1-1: new high-speed USB device number 8 using ehci-platform
[266280.359859] cdc_ether 1-1:1.0 eth1: register 'cdc_ether' at usb-101c0000.ehci-1, CDC Ethernet Device, 0c:5b:8f:27:9a:64
[266280.374291] cdc_ether 1-1:1.0 eth1: kevent 12 may have been dropped
[266280.382755] cdc_ether 1-1:1.0 eth1: kevent 11 may have been dropped
[266280.398749] cdc_ether 1-1:1.0 eth1: kevent 11 may have been dropped
[266280.437522] usb-storage 1-1:1.2: USB Mass Storage device detected
[266280.465273] scsi host0: usb-storage 1-1:1.2
[266281.547501] scsi 0:0:0:0: Direct-Access     HUAWEI   TF CARD Storage  2.31 PQ: 0 ANSI: 2
[266281.573063] sd 0:0:0:0: [sda] Attached SCSI removable disk

Czy pominąłem jakiś moduł. że cdc_ether mi nie rozpoznaje modemu? Specjalnie ładowałem moduł przez modprobe, a nie po kolei insmod, aby wszystkie zależności mi wykrył...

// Edit: dobra, wiem już, usb_modeswitch... ręcznie zadziałało i pojawiło się urządzenie eth7, teraz muszę to zainstalować po bożemu smile tylko że TP-Link w swoim fw nie ma /udev... jest /dev i hotplug2