Włożenie SFP do portów 24-28 DGS-1210-28 na OpenWrt niczego nie zmienia, miedź trzyma link
Switch homelabowy: D-Link DGS-1210-28 w rewizji F1, który przeflashowałem na OpenWrt, żeby przestać walczyć z fabrycznym web UI. Wszystko działa oprócz ostatnich czterech portów, które są combo miedź/światłowód.
- Switch: D-Link DGS-1210-28 rev F1
- Firmware: OpenWrt 21.02.0-rc3 (r16172-2aba3e9784)
- Porty 24-28: combo RJ45/SFP za PHY RTL8214FC (reszta siedzi na RTL8218B/RTL8218D)
- Moduł: generyczna optyka 1G, która łączy się bez problemu w innym switchu
Cokolwiek włożę do klatki, port zachowuje się jak zwykły port RJ45. Strona miedziana zostaje wybrana, a strona światłowodowa nigdy nie wstaje:
# ethtool lan28
Supported ports: [ TP MII FIBRE ]
Port: MII
Link detected: yes
Log rozruchu faktycznie pokazuje te porty przypięte do sterownika combo PHY RTL8214FC, a ten sterownik podobno wie o SFP, więc strona sprzętowa wygląda w porządku.
Co już sprawdziłem:
- osadziłem moduł ponownie, potem spróbowałem drugiego
- wyciągnąłem kabel miedziany z portu całkowicie, na wypadek gdyby to była kwestia priorytetu - port zostaje na miedzi
- przeniosłem moduł do innego switcha, gdzie się łączy
Z fabrycznym firmware ten switch sam przełączał port na światłowód w momencie włożenia modułu. Czy da się wybrać medium na tym buildzie, czy porty combo po prostu jeszcze nie są używalne?
Comments 3
Nic nie jest zepsute, po prostu nie ma automatycznego wyboru medium w targecie realtek. RTL8214FC to combo PHY z połową miedzianą i połową światłowodową, i na tym firmware zostaje po stronie MII/miedź, dopóki coś mu nie każe inaczej. Włożenie modułu nic nie znaczy dla sterownika, bo nikt nie zaimplementował przełączania.
Wybierasz medium sam z userspace:
Potem klatka staje się aktywnym medium na tym porcie i optyka wstaje. Żeby oddać port z powrotem połowie RJ45:
To samo wywołanie dla każdego z pozostałych portów combo, jedno na port.
To, co pamiętasz z fabrycznego firmware, to był ograniczony auto-select: patrzył na obie połowy i miedź wygrywała, kiedy obie miały link. Dlatego to czyta się jak regresja, ale nią nie jest - ta funkcja po prostu nigdy nie została napisana dla tego targetu.
Dwa zastrzeżenia. To tylko CLI, nie jest wystawione w LuCI, i ludzie proszą o to od jakiegoś czasu. I nic na tym buildzie nie wybierze medium za ciebie, więc jeśli chcesz światłowód po każdym boocie, upewnij się, że to wywołanie faktycznie się uruchamia.
To było to, dzięki. Jedno wywołanie i port się przełączył:
Optyka wstała od razu, a połowa RJ45 ucichła. Zrobiłem to samo dla pozostałych trzech portów combo i wrzuciłem cztery wywołania do skryptu startowego, skoro jak mówisz nic nie zapamiętuje wyboru.
Lekko irytujące, że przełącznik na port musi siedzieć w skrypcie powłoki, ale porty są teraz używalne, i tego właśnie potrzebowałem.
Warto wiedzieć, zanim zbudujesz na tych portach monitoring: stan linku po stronie SFP tych płyt nie zawsze jest wiarygodny. Na DGS-1210-10P device tree w ogóle nie ma węzłów sfp, więc kernel nigdy nie dostaje module-present ani loss-of-signal, a MAC zgłasza stały carrier -
ip linkwypisuje<BROADCAST,MULTICAST,UP,LOWER_UP>dla lan9 z pustą klatką, i zostaje up nawet z osadzonym miedzianym SFP GLC-T-CO i bez patch cordu w środku. DGS-1210-10MP tak się nie zachowuje, bo jego DTS już ma te węzły.Poprawka tam polegała na zmianie device tree wzorowanej na 10MP i na Zyxel GS1900-10HP: magistrala i2c-gpio na klatkę, węzeł sfp na klatkę z los-gpio, mod-def0-gpio i tx-disable-gpio,
sfp = <&sfp0>przywoływane z portu,phy-mode = "1000base-x"imanaged = "in-band-status". Z tym na miejscu klatka jest odpytywana przez I2C i carrier w końcu śledzi faktyczny sygnał optyczny.Na fabrycznych obrazach z tamtego okresu to zachowanie się utrzymuje, więc jeśli cokolwiek u ciebie obserwuje carrier na porcie combo albo SFP, zweryfikuj, czy faktycznie spada, kiedy wyciągniesz światłowód.