Insertar un SFP en los puertos 24-28 de un DGS-1210-28 con OpenWrt no cambia nada, el cobre mantiene el enlace
Switch de laboratorio doméstico: un D-Link DGS-1210-28 revisión F1 que flasheé con OpenWrt para dejar de pelear con la interfaz web de fábrica. Todo funciona salvo los últimos cuatro puertos, que son los combo cobre/fibra.
- Switch: D-Link DGS-1210-28 rev F1
- Firmware: OpenWrt 21.02.0-rc3 (r16172-2aba3e9784)
- Puertos 24-28: combo RJ45/SFP detrás de un PHY RTL8214FC (el resto va sobre RTL8218B/RTL8218D)
- Módulo: una óptica genérica de 1G que enlaza bien en otro switch
Sea lo que sea lo que ponga en la jaula, el puerto se comporta como un puerto RJ45 ordinario. El lado de cobre se queda seleccionado y el lado de fibra nunca sube:
# ethtool lan28
Supported ports: [ TP MII FIBRE ]
Port: MII
Link detected: yes
El log de arranque sí muestra estos puertos vinculados al driver del PHY combo RTL8214FC, y se supone que ese driver conoce SFP, así que el lado del hardware se ve correcto.
Probado hasta ahora:
- reasenté el módulo, luego probé uno segundo
- saqué el cable de cobre del puerto por completo por si era cosa de prioridad - el puerto se queda en cobre
- moví el módulo a otro switch, donde enlaza
Con el firmware de fábrica, este switch solía pasar el puerto a fibra por sí solo en el momento en que se insertaba un módulo. ¿Hay una forma de seleccionar el medio en esta build, o los puertos combo simplemente no son usables todavía?
Comments 3
Nada está roto, simplemente no hay selección automática de medio en el target realtek. El RTL8214FC es un PHY combo con una mitad de cobre y una mitad de fibra, y en este firmware se queda en el lado MII/cobre hasta que algo le diga lo contrario. Insertar un módulo no significa nada para el driver, porque nadie implementó el cambio.
Tú mismo seleccionas el medio desde el espacio de usuario:
Después de eso la jaula es el medio activo en ese puerto y la óptica sube. Para devolver el puerto a la mitad RJ45:
Misma llamada para cada uno de los otros puertos combo, uno por puerto.
Lo que recuerdas del firmware de fábrica era una autoselección limitada: miraba ambas mitades y el cobre ganaba siempre que ambas tuvieran enlace. Por eso esto se lee como una regresión, pero no lo es - la función simplemente nunca se escribió para este target.
Dos advertencias. Es solo por CLI, no está expuesto en LuCI, y la gente lleva tiempo pidiendo eso. Y nada en esta build puede elegir el medio por ti, así que si quieres fibra después de cada arranque, asegúrate de que esa llamada realmente se ejecute.
Eso era, gracias. Una llamada y el puerto cambió:
La óptica subió de inmediato y la mitad RJ45 se quedó en silencio. Hice lo mismo para los otros tres puertos combo y puse las cuatro llamadas en un script de arranque, ya que como dices nada recuerda la elección.
Ligeramente molesto que un interruptor por puerto tenga que vivir en un script de shell, pero los puertos ya son usables, que era lo que necesitaba.
Vale la pena saberlo antes de construir monitoreo sobre esos puertos: el estado del enlace en el lado SFP de estas placas no siempre es de fiar. En el DGS-1210-10P el device tree no tiene ningún nodo sfp en absoluto, así que el kernel nunca recibe módulo-presente ni pérdida-de-señal y el MAC reporta una portadora permanente -
ip linkimprime<BROADCAST,MULTICAST,UP,LOWER_UP>para lan9 con la jaula vacía, y se mantiene arriba con un SFP de cobre GLC-T-CO puesto y sin latiguillo en él. El DGS-1210-10MP no se comporta así, porque su DTS ya tiene los nodos.El arreglo ahí fue un cambio en el device tree modelado sobre el 10MP y sobre el Zyxel GS1900-10HP: un bus i2c-gpio por jaula, un nodo sfp por jaula con los-gpio, mod-def0-gpio y tx-disable-gpio,
sfp = <&sfp0>referenciado desde el puerto,phy-mode = "1000base-x"ymanaged = "in-band-status". Con eso en su sitio la jaula se sondea por I2C y la portadora finalmente sigue la señal óptica real.En las imágenes de fábrica de esa época el comportamiento persiste, así que si algo tuyo vigila la portadora en un puerto combo o SFP, verifica que realmente caiga cuando sacas la fibra.