Inserir um SFP nas portas 24-28 de um DGS-1210-28 no OpenWrt não muda nada, o cobre mantém o link
Switch de homelab: um D-Link DGS-1210-28 revisão F1 que eu flashei com OpenWrt para parar de brigar com a UI web de fábrica. Tudo funciona, exceto as últimas quatro portas, que são as combo cobre/fibra.
- Switch: D-Link DGS-1210-28 rev F1
- Firmware: OpenWrt 21.02.0-rc3 (r16172-2aba3e9784)
- Portas 24-28: combo RJ45/SFP atrás de um PHY RTL8214FC (o resto fica no RTL8218B/RTL8218D)
- Módulo: uma óptica genérica 1G que linka bem em outro switch
Seja lá o que eu coloque na gaiola, a porta se comporta como uma porta RJ45 comum. O lado de cobre continua selecionado e o lado de fibra nunca sobe:
# ethtool lan28
Supported ports: [ TP MII FIBRE ]
Port: MII
Link detected: yes
O log de boot mostra essas portas associadas ao driver de PHY combo RTL8214FC, e esse driver deveria saber lidar com SFP, então o lado do hardware parece certo.
Já tentei:
- reencaixei o módulo, depois tentei um segundo
- tirei o cabo de cobre da porta completamente, para o caso de ser uma questão de prioridade - a porta continua no cobre
- movi o módulo para outro switch, onde ele linka
Com o firmware de fábrica nele, esse switch costumava virar a porta para fibra sozinho no momento em que um módulo entrava. Tem algum jeito de selecionar o meio nessa build, ou as portas combo simplesmente ainda não são utilizáveis?
Comments 3
Nada está quebrado, só não tem seleção automática de meio no target realtek. O RTL8214FC é um PHY combo com uma metade de cobre e uma metade de fibra, e nesse firmware ele fica no lado MII/cobre até algo dizer o contrário. Inserir um módulo não significa nada para o driver, porque ninguém implementou a troca.
Você seleciona o meio você mesmo pelo userspace:
Depois disso a gaiola é o meio ativo naquela porta e a óptica sobe. Para devolver a porta à metade RJ45:
Mesma chamada para cada uma das outras portas combo, uma por porta.
O que você lembra do firmware de fábrica era uma auto-seleção limitada: ela olhava as duas metades e o cobre ganhava sempre que as duas tinham link. É por isso que isso parece uma regressão, mas não é - a função simplesmente nunca foi escrita para esse target.
Duas ressalvas. É só CLI, não está exposto na LuCI, e as pessoas andam pedindo isso há um tempo. E nada nessa build consegue escolher o meio por você, então se você quer fibra depois de todo boot, garanta que essa chamada realmente rode.
Era isso, obrigado. Uma chamada e a porta trocou:
A óptica subiu imediatamente e a metade RJ45 ficou quieta. Fiz o mesmo para as outras três portas combo e coloquei as quatro chamadas num script de inicialização, já que, como você disse, nada lembra a escolha.
Meio irritante que um toggle por porta tenha que morar num shell script, mas as portas estão utilizáveis agora, que era o que eu precisava.
Vale saber antes de você construir monitoramento em cima dessas portas: o estado de link do lado SFP dessas placas nem sempre é confiável. No DGS-1210-10P a device tree não tem nó sfp nenhum, então o kernel nunca recebe module-present nem loss-of-signal e a MAC reporta um carrier permanente -
ip linkimprime<BROADCAST,MULTICAST,UP,LOWER_UP>para lan9 com a gaiola vazia, e continua up com um SFP de cobre GLC-T-CO encaixado e nenhum cordão nele. O DGS-1210-10MP não se comporta assim, porque a DTS dele já tem os nós.A correção lá foi uma mudança de device tree baseada no 10MP e no Zyxel GS1900-10HP: um barramento i2c-gpio por gaiola, um nó sfp por gaiola com los-gpio, mod-def0-gpio e tx-disable-gpio,
sfp = <&sfp0>referenciado a partir da porta,phy-mode = "1000base-x"emanaged = "in-band-status". Com isso no lugar, a gaiola é sondada por I2C e o carrier finalmente acompanha o sinal óptico real.Nas imagens de fábrica daquele período o comportamento persiste, então se alguma coisa sua observa carrier numa porta combo ou SFP, verifique se ele realmente cai quando você tira a fibra.