DGS-1210-28 के OpenWrt पर ports 24-28 में SFP लगाने से कुछ नहीं बदलता, link copper के पास ही रहता है
Homelab वाला switch: एक D-Link DGS-1210-28 revision F1 जिसे मैंने OpenWrt से flash कर दिया ताकि stock web UI से लड़ना बंद हो जाए. आखिरी चार ports को छोड़कर सब कुछ काम करता है, वो copper/fibre combo वाले हैं.
- Switch: D-Link DGS-1210-28 rev F1
- Firmware: OpenWrt 21.02.0-rc3 (r16172-2aba3e9784)
- Ports 24-28: RTL8214FC PHY के पीछे RJ45/SFP combo (बाकी RTL8218B/RTL8218D पर बैठे हैं)
- Module: एक generic 1G optic जो किसी और switch में ठीक link हो जाता है
Cage में मैं जो भी डालूं, port एक साधारण RJ45 port की तरह behave करता है. Copper side selected बना रहता है और fibre side कभी नहीं आता:
# ethtool lan28
Supported ports: [ TP MII FIBRE ]
Port: MII
Link detected: yes
Boot log में ये ports RTL8214FC combo PHY driver से bound दिखते हैं, और उस driver को SFP के बारे में पता होना चाहिए, तो hardware तरफ सब ठीक लगता है.
अब तक जो try किया:
- module reseat किया, फिर दूसरा try किया
- priority वाली बात के शक में copper cable को port से पूरी तरह निकाल दिया - port copper पर ही रहता है
- module को किसी दूसरे switch पर move किया, वहां link हो जाता है
Vendor firmware के साथ, ये switch module लगते ही खुद port को fibre पर flip कर देता था. क्या इस build पर medium select करने का कोई तरीका है, या combo ports अभी बस usable ही नहीं हैं?
Comments 3
कुछ भी टूटा नहीं है, बस realtek target में automatic medium selection है ही नहीं. RTL8214FC एक combo PHY है जिसमें एक copper half और एक fibre half है, और इस firmware पर वो MII/copper side पर तब तक बना रहता है जब तक कोई उसे कुछ और न बताए. Module लगाना driver के लिए कोई मायने नहीं रखता, क्योंकि switchover किसी ने implement ही नहीं किया.
Medium खुद userspace से select करना होगा:
इसके बाद उस port पर active medium cage बन जाता है और optic आ जाता है. Port को वापस RJ45 half को सौंपने के लिए:
बाकी हर combo port के लिए वही call, एक-एक करके.
Stock firmware से जो आपको याद है वो एक limited auto-select था: वो दोनों halves देखता था और जब दोनों में link होता तो copper जीत जाता. इसीलिए ये regression जैसा लगता है, पर है नहीं - ये function इस target के लिए कभी लिखा ही नहीं गया.
दो बातें ध्यान रखें. ये सिर्फ CLI में है, LuCI में नहीं दिखता, और लोग काफी समय से इसकी मांग कर रहे हैं. और इस build पर कुछ भी आपके लिए medium नहीं चुन सकता, तो अगर हर boot के बाद fibre चाहिए तो पक्का करें कि वो call असल में चले.
यही थी बात, शुक्रिया. एक call और port बदल गया:
Optic तुरंत आ गया और RJ45 half चुप हो गया. बाकी तीनों combo ports के लिए भी वही किया और चारों calls एक startup script में डाल दिए, क्योंकि जैसा आपने कहा कुछ भी choice याद नहीं रखता.
हल्की सी झुंझलाहट है कि per-port toggle को एक shell script में रहना पड़ता है, पर ports अब usable हैं, जो मुझे चाहिए था.
उन ports पर monitoring बनाने से पहले जानने लायक बात: इन boards के SFP side पर link state हमेशा भरोसे लायक नहीं होती. DGS-1210-10P पर device tree में sfp nodes हैं ही नहीं, तो kernel को कभी module-present या loss-of-signal नहीं मिलता और MAC एक permanent carrier report करता है -
ip linkखाली cage के साथ lan9 के लिए<BROADCAST,MULTICAST,UP,LOWER_UP>print करता है, और एक GLC-T-CO copper SFP लगे होने पर भी बिना किसी patch cord के up ही रहता है. DGS-1210-10MP ऐसा व्यवहार नहीं करता, क्योंकि उसकी DTS में पहले से वो nodes हैं.वहां का fix 10MP और Zyxel GS1900-10HP पर आधारित एक device tree change था: हर cage के लिए एक i2c-gpio bus, los-gpio, mod-def0-gpio और tx-disable-gpio के साथ हर cage के लिए एक sfp node, port से reference होता
sfp = <&sfp0>,phy-mode = "1000base-x"औरmanaged = "in-band-status". ये सब होने पर cage I2C पर probe होता है और carrier आखिरकार असली optical signal को track करने लगता है.उस दौर की stock images पर ये व्यवहार बना रहता है, तो अगर आपकी कोई चीज़ किसी combo या SFP port पर carrier देखती है, verify करें कि fibre निकालने पर वो असल में drop होता है या नहीं.