CodingBox Q&A Ask question

SFP in Ports 24-28 eines DGS-1210-28 auf OpenWrt einstecken ändert nichts, Kupfer behält den Link

Asked Active Viewed 96 AI translation from English
3

Homelab-Switch: ein D-Link DGS-1210-28 Revision F1, den ich mit OpenWrt geflasht habe, um nicht mehr gegen das Stock-Web-UI zu kämpfen. Alles funktioniert außer den letzten vier Ports, den Kupfer/Faser-Combo-Ports.

  • Switch: D-Link DGS-1210-28 rev F1
  • Firmware: OpenWrt 21.02.0-rc3 (r16172-2aba3e9784)
  • Ports 24-28: RJ45/SFP-Combo hinter einem RTL8214FC-PHY (der Rest sitzt auf RTL8218B/RTL8218D)
  • Modul: eine generische 1G-Optik, die in einem anderen Switch problemlos linkt

Was auch immer ich in den Käfig stecke, der Port verhält sich wie ein gewöhnlicher RJ45-Port. Die Kupferseite bleibt ausgewählt, und die Faserseite kommt nie hoch:

# ethtool lan28
        Supported ports: [ TP MII FIBRE ]
        Port: MII
        Link detected: yes

Das Boot-Log zeigt tatsächlich, dass diese Ports an den RTL8214FC-Combo-PHY-Treiber gebunden sind, und dieser Treiber soll SFP kennen, die Hardware-Seite sieht also richtig aus.

Bisher versucht:

  • das Modul neu gesteckt, dann ein zweites probiert
  • das Kupferkabel komplett aus dem Port gezogen, falls es eine Prioritätssache ist - Port bleibt auf Kupfer
  • das Modul in einen anderen Switch verschoben, wo es linkt

Mit der Herstellerfirmware hat dieser Switch früher den Port von selbst auf Faser umgeschaltet, sobald ein Modul reinkam. Gibt es einen Weg, auf diesem Build das Medium auszuwählen, oder sind die Combo-Ports einfach noch nicht nutzbar?

Comments 3

Accepted answer

Nichts ist kaputt, es gibt im Realtek-Target nur keine automatische Medienauswahl. Der RTL8214FC ist ein Combo-PHY mit einer Kupfer- und einer Faserhälfte, und auf dieser Firmware bleibt er auf der MII/Kupfer-Seite, bis ihm jemand etwas anderes sagt. Ein Modul einzustecken bedeutet dem Treiber nichts, weil niemand die Umschaltung implementiert hat.

Du wählst das Medium selbst aus dem Userspace:

ethtool -s lan28 port fibre

Danach ist der Käfig das aktive Medium an diesem Port, und die Optik kommt hoch. Um den Port an die RJ45-Hälfte zurückzugeben:

ethtool -s lan28 port tp

Derselbe Aufruf für jeden der anderen Combo-Ports, einer pro Port.

Was du von der Stock-Firmware in Erinnerung hast, war eine begrenzte Auto-Auswahl: Sie schaute auf beide Hälften, und Kupfer gewann, wann immer beide einen Link hatten. Deshalb liest sich das wie eine Regression, ist es aber nicht - die Funktion wurde für dieses Target schlicht nie geschrieben.

Zwei Einschränkungen. Es ist nur CLI, nicht in LuCI freigelegt, und Leute fragen schon eine Weile danach. Und nichts auf diesem Build kann das Medium für dich wählen, willst du also nach jedem Boot Faser, stell sicher, dass dieser Aufruf tatsächlich läuft.

7 South KoreanetrunnerKR Show original (English) AI translation

Das war's, danke. Ein Aufruf, und der Port ist umgesprungen:

# ethtool -s lan28 port fibre
# ethtool lan28 | grep Port:
        Port: FIBRE

Die Optik kam sofort hoch, und die RJ45-Hälfte wurde still. Habe dasselbe für die anderen drei Combo-Ports gemacht und die vier Aufrufe in ein Startskript gepackt, da sich, wie du sagst, nichts die Wahl merkt.

Leicht ärgerlich, dass ein Per-Port-Toggle in einem Shellskript leben muss, aber die Ports sind jetzt nutzbar, und das war's, was ich brauchte.

4 VietnamtxhawkVN Show original (English) AI translation

Lohnt sich zu wissen, bevor du Monitoring auf diese Ports aufsetzt: Der Link-Status auf der SFP-Seite dieser Boards ist nicht immer vertrauenswürdig. Am DGS-1210-10P hat der Device Tree überhaupt keine sfp-Nodes, der Kernel bekommt also nie module-present oder loss-of-signal, und der MAC meldet einen dauerhaften Carrier - ip link druckt für lan9 <BROADCAST,MULTICAST,UP,LOWER_UP> bei leerem Käfig, und es bleibt up mit einem gesteckten GLC-T-CO-Kupfer-SFP ohne Patchkabel drin. Der DGS-1210-10MP verhält sich nicht so, weil sein DTS die Nodes schon hat.

Die Lösung dort war eine Device-Tree-Änderung nach dem Vorbild des 10MP und des Zyxel GS1900-10HP: ein i2c-gpio-Bus pro Käfig, ein sfp-Node pro Käfig mit los-gpio, mod-def0-gpio und tx-disable-gpio, sfp = <&sfp0> vom Port aus referenziert, phy-mode = "1000base-x" und managed = "in-band-status". Mit diesen Einträgen wird der Käfig über I2C abgefragt, und der Carrier folgt endlich dem tatsächlichen optischen Signal.

Auf den Stock-Images aus dieser Zeit bleibt das Verhalten bestehen, falls also bei dir irgendetwas den Carrier an einem Combo- oder SFP-Port beobachtet, verifiziere, dass er tatsächlich abfällt, wenn du die Faser ziehst.

3 South Korealinkadmin79KR Show original (English) AI translation
Log in to comment. Log in