Bir DGS-1210-28'in OpenWrt'teki 24-28 portlarına SFP takmak hiçbir şeyi değiştirmiyor, link bakırda kalıyor
Homelab switch: stok web arayüzüyle uğraşmayı bırakmak için OpenWrt flashladığım bir D-Link DGS-1210-28 revizyon F1. Bakır/fiber combo olan son dört port dışında her şey çalışıyor.
- Switch: D-Link DGS-1210-28 rev F1
- Firmware: OpenWrt 21.02.0-rc3 (r16172-2aba3e9784)
- Port 24-28: bir RTL8214FC PHY arkasında RJ45/SFP combo (geri kalanı RTL8218B/RTL8218D üzerinde oturuyor)
- Modül: başka bir switch'te sorunsuz link kuran generic bir 1G optik
Cage'e ne koyarsam koyayım, port sıradan bir RJ45 portu gibi davranıyor. Bakır taraf seçili kalıyor ve fiber taraf hiç gelmiyor:
# ethtool lan28
Supported ports: [ TP MII FIBRE ]
Port: MII
Link detected: yes
Boot log, bu portların gerçekten RTL8214FC combo PHY driver'ına bağlı olduğunu gösteriyor, ve o driver'ın SFP'yi bilmesi gerekiyor, yani donanım tarafı doğru görünüyor.
Şimdiye kadar denenenler:
- modülü yeniden oturttum, sonra ikinci bir tanesini denedim
- bir öncelik meselesi olma ihtimaline karşı bakır kabloyu porttan tamamen çektim - port bakırda kalıyor
- modülü başka bir switch'e taşıdım, orada link kuruyor
Üzerinde vendor firmware'i varken, bu switch bir modül girdiği anda portu kendiliğinden fibere çeviriyordu. Bu build'de medium'u seçmenin bir yolu var mı, yoksa combo portlar henüz kullanılabilir değil mi?
Comments 3
Hiçbir şey bozuk değil, sadece realtek target'ında otomatik medium seçimi yok. RTL8214FC, bir bakır yarısı ve bir fiber yarısı olan bir combo PHY, ve bu firmware'de bir şey ona aksini söyleyene kadar MII/bakır tarafında kalıyor. Bir modül takmak driver için hiçbir anlam ifade etmiyor, çünkü kimse switchover'ı implemente etmemiş.
Medium'u kendiniz userspace'den seçiyorsunuz:
Bundan sonra cage o portta aktif medium oluyor ve optik geliyor. Portu RJ45 yarısına geri vermek için:
Diğer combo portların her biri için aynı çağrı, port başına bir kere.
Stok firmware'den hatırladığınız şey sınırlı bir auto-select'ti: her iki yarıya da bakıyordu ve ikisinde de link olduğunda bakır kazanıyordu. Bunun bir regresyon gibi okunmasının sebebi de bu, ama değil - fonksiyon bu target için basitçe hiç yazılmamış.
İki uyarı. Sadece CLI, LuCI'de sunulmuyor, ve insanlar bir süredir bunu istiyor. Ve bu build'de hiçbir şey medium'u sizin için seçemiyor, yani her boot'tan sonra fiber istiyorsanız, o çağrının gerçekten çalıştığından emin olun.
Aynen oydu, teşekkürler. Tek bir çağrı ve port geçiş yaptı:
Optik hemen geldi ve RJ45 yarısı sessizleşti. Diğer üç combo port için de aynısını yaptım ve dediğiniz gibi hiçbir şey seçimi hatırlamadığı için dört çağrıyı bir startup script'ine koydum.
Port başına bir toggle'ın bir shell script'inde yaşaması hafifçe can sıkıcı, ama portlar artık kullanılabilir, ihtiyacım olan da buydu.
O portların üzerine monitoring kurmadan önce bilmeye değer: bu kartların SFP tarafındaki link durumu her zaman güvenilir değil. DGS-1210-10P'de device tree'de hiç sfp node'u yok, yani kernel hiçbir zaman module-present ya da loss-of-signal almıyor ve MAC kalıcı bir carrier raporluyor -
ip link, boş bir cage'le lan9 için<BROADCAST,MULTICAST,UP,LOWER_UP>basıyor, ve içinde patch kordon olmadan oturmuş bir GLC-T-CO bakır SFP ile up kalıyor. DGS-1210-10MP böyle davranmıyor, çünkü onun DTS'inde node'lar zaten var.Oradaki düzeltme, 10MP ve Zyxel GS1900-10HP'yi model alan bir device tree değişikliğiydi: cage başına bir i2c-gpio bus, los-gpio, mod-def0-gpio ve tx-disable-gpio ile cage başına bir sfp node'u, porttan referans verilen
sfp = <&sfp0>,phy-mode = "1000base-x"vemanaged = "in-band-status". Bunlar yerinde olunca cage I2C üzerinden probe ediliyor ve carrier sonunda gerçek optik sinyali takip ediyor.O dönemin stok image'larında davranış devam ediyor, yani sizin herhangi bir şeyiniz bir combo ya da SFP portunda carrier izliyorsa, fiberi çektiğinizde gerçekten düştüğünü doğrulayın.