Inserire un SFP nelle porte 24-28 di un DGS-1210-28 su OpenWrt non cambia nulla, il rame tiene il link
Switch da homelab: un D-Link DGS-1210-28 revisione F1 che ho flashato con OpenWrt per smettere di lottare con la web UI stock. Tutto funziona tranne le ultime quattro porte, quelle combo rame/fibra.
- Switch: D-Link DGS-1210-28 rev F1
- Firmware: OpenWrt 21.02.0-rc3 (r16172-2aba3e9784)
- Porte 24-28: combo RJ45/SFP dietro un PHY RTL8214FC (il resto sta su RTL8218B/RTL8218D)
- Modulo: un'ottica 1G generica che si collega bene in un altro switch
Qualunque cosa metta nella cage, la porta si comporta come una normale porta RJ45. Il lato rame resta selezionato e il lato fibra non sale mai:
# ethtool lan28
Supported ports: [ TP MII FIBRE ]
Port: MII
Link detected: yes
Il boot log mostra effettivamente queste porte legate al driver combo PHY RTL8214FC, e quel driver dovrebbe sapere gestire l'SFP, quindi il lato hardware sembra a posto.
Provato finora:
- riseduto il modulo, poi provato un secondo
- tolto del tutto il cavo di rame dalla porta nel caso fosse una questione di priorità - la porta resta sul rame
- spostato il modulo su un altro switch, dove si collega
Con il firmware del vendor, questo switch soleva far passare da solo la porta a fibra nel momento in cui un modulo veniva inserito. C'è un modo per selezionare il medium su questa build, oppure le porte combo semplicemente non sono ancora utilizzabili?
Comments 3
Non è rotto niente, semplicemente non c'è selezione automatica del medium nel target realtek. L'RTL8214FC è un PHY combo con una metà rame e una metà fibra, e su questo firmware resta sul lato MII/rame finché qualcosa non gli dice diversamente. Inserire un modulo non significa niente per il driver, perché nessuno ha implementato il passaggio.
Selezioni il medium tu stesso dallo userspace:
Dopo di che la cage è il medium attivo su quella porta e l'ottica sale. Per restituire la porta alla metà RJ45:
Stessa chiamata per ognuna delle altre porte combo, una per porta.
Quello che ricordi dal firmware stock era un auto-select limitato: guardava entrambe le metà e il rame vinceva ogni volta che entrambe avevano link. Ecco perché questo sembra una regressione, ma non lo è - la funzione semplicemente non è mai stata scritta per questo target.
Due avvertenze. È solo da CLI, non è esposto in LuCI, e la gente lo chiede da un po'. E niente su questa build può scegliere il medium al posto tuo, quindi se vuoi la fibra dopo ogni boot, assicurati che quella chiamata giri davvero.
Era proprio quello, grazie. Una chiamata e la porta è passata:
L'ottica è salita immediatamente e la metà RJ45 è rimasta zitta. Ho fatto lo stesso per le altre tre porte combo e ho messo le quattro chiamate in uno script di avvio, visto che come dici tu niente ricorda la scelta.
Leggermente fastidioso che un toggle per porta debba vivere in uno script shell, ma le porte adesso sono utilizzabili, che è quello che mi serviva.
Vale la pena saperlo prima di costruire monitoraggio sopra quelle porte: lo stato del link sul lato SFP di queste schede non è sempre affidabile. Sul DGS-1210-10P il device tree non ha affatto nodi sfp, quindi il kernel non riceve mai module-present o loss-of-signal e il MAC riporta un carrier permanente -
ip linkstampa<BROADCAST,MULTICAST,UP,LOWER_UP>per lan9 con la cage vuota, e resta up anche con un SFP in rame GLC-T-CO inserito e nessuna bretella dentro. Il DGS-1210-10MP non si comporta così, perché il suo DTS ha già i nodi.La correzione lì è stata una modifica al device tree modellata sul 10MP e sullo Zyxel GS1900-10HP: un bus i2c-gpio per cage, un nodo sfp per cage con los-gpio, mod-def0-gpio e tx-disable-gpio,
sfp = <&sfp0>referenziato dalla porta,phy-mode = "1000base-x"emanaged = "in-band-status". Con questi in posizione la cage viene sondata via I2C e il carrier finalmente segue il segnale ottico reale.Sulle immagini stock di quel periodo il comportamento persiste, quindi se qualcosa di tuo osserva il carrier su una porta combo o SFP, verifica che scenda davvero quando stacchi la fibra.