IC-prog SFP dump के 256 byte देता है, पर दूसरा आधा हिस्सा पहले वाले की copy है, page A2 read नहीं होता (HP 2530-24G)
छोटे operator का network मैं संभालता हूं, नियमित रूप से सस्ते modules को HP के लिए reflash करता हूं। काम आम है: चाइनीज़ 1.25G WDM में brand वाले module की image डालनी है ताकि switch बिना शिकायत किए उन्हें accept कर ले। Donor है J4859C, target हार्डवेयर है HP 2530-24G J9776A।
टेबल पर क्या है:
- HP 2530-24G J9776A switch
- OptiCin और Fiberstore modules, 1.25G WDM
- mini-USB programmer NAG
- Windows पर IC-prog, इसी से पढ़ता और लिखता हूं
Dump 256 byte का बनता है, पर दूसरा आधा हिस्सा पहले वाले से byte-by-byte match करता है:
IC-prog, 0x00-0x7F: прочитано
IC-prog, 0x80-0xFF: тот же самый блок, байт в байт
на части модулей при чтении: No Acknowledge received
अब तक क्या try किया:
- module फिर से लगाया, socket के contacts साफ किए, latch बदला
- अलग-अलग batches के तीन modules चलाकर देखे, तस्वीर same
- USB port, cable और machine बदली, कुछ नहीं बदला
मुझे दूसरा page चाहिए, जहां DDM और service bytes होते हैं, और वो मुझे दिख ही नहीं रहा। यह IC-prog की limitation है, programmer की board खराब है, या modules खुद ऐसा behave करते हैं?
Comments 7
यहां दो independent गड़बड़ियां हैं, और दोनों ही modules में नहीं हैं।
पहली - खुद IC-prog। इसका addressing model linear है, pages switch करना यह जानता ही नहीं, और A2 तक यह सिद्धांततः पहुंच ही नहीं सकता। dump के दूसरे आधे हिस्से में तुम जो देख रहे हो, वो वही A0 है जो दूसरी बार पढ़ी गई। Error यह नहीं दिखाएगा, क्योंकि इसके नज़रिए से सब ठीक है।
दूसरी - board। इस mini-USB programmer पर VccR (pin 15) +5 V पर बैठा दिया गया है, जबकि SFF-8431 के हिसाब से यह free रहना चाहिए, साथ ही power और ground इस तरह wire हुए हैं कि कुछ modules normal mode में जाते ही नहीं। यहीं से
No Acknowledge receivedआता है - सबमें नहीं, बस उनमें जिन्हें यह wiring पसंद नहीं आती।क्या normally काम करता है:
i2cdump -y 3 0x50औरi2cdump -y 3 0x51, एक open Python script भी है जो दोनों pages पढ़ता और लिखता है।Criterion सीधा है: जैसे ही 0x51 जवाब देना शुरू करे, आगे यह module की memory के साथ आम काम है, instrument से लड़ाई नहीं।
Software और hardware को अलग करो, वरना शाम तक guess करते रहोगे। कोई भी Linux लो और देखो कि module दूसरे address पर जवाब देता भी है या नहीं:
Bus number अपना डालना। अगर 0x50 पढ़ा जाता है और 0x51 चुप है - सवाल अब यह नहीं कि dump किससे देख रहे हो, बल्कि यह कि module तक normal power पहुंच भी रहा है या नहीं। और यह बताओ कि उसी programmer से एक पक्का जिंदा donor J4859C क्या देता है: अगर उसका भी दूसरा page नहीं खुलता, तो सस्ते modules का इसमें कोई दोष नहीं, खोदना software plus board वाले combination में पड़ेगा।
Donor सबसे पहले चलाकर देखा: वही socket और वही IC-prog में जिंदा J4859C बिल्कुल वही तस्वीर देता है - 256 byte, दूसरा आधा पहले को repeat करता है। मतलब मामला सस्ते modules का नहीं है। Linux में adapter से भी check किया:
उसी module पर native utility
No Acknowledge receivedदेती है, और IC-prog चुपचाप पहले page की copy दिखा देता है और ऐसे दिखाता है जैसे सब ठीक है। Target modules हैं OptiCin, image मैं इसी J4859C से उतार रहा हूं।writing के बारे में एक बात add करता हूं। 256-byte dump में पहले 128 byte ही मतलब रखते हैं, आगे manufacturer zone है, उसे आम तौर पर छूने की जरूरत नहीं। HP के लिए J4858C और J4859C से images डालते हैं, WDM के लिए कई बार आम LX-image से भी काम चल गया: switch ने module accept कर लिया और wavelength पर ध्यान ही नहीं दिया।
पर सब कुछ लिखा नहीं जाता। 3Com 3CSFP91 और 3CSFP92 पर, और branded Allied Telesis पर भी, writing बिल्कुल नहीं हुई: पढ़ना ठीक चलता है, पर writing apply नहीं होती - WP locked है। तो अगर programmer बदलने के बाद A2 पढ़ा तो जा रहा है, पर writing चुपचाप कहीं गायब हो जाती है, वजह software में मत ढूंढो।
"आगे तो memory के साथ आम काम है" वाली बात पर एक caveat। आम हर जगह नहीं होती। कुछ modules असल में EEPROM हैं ही नहीं: Medick SFP-10G-BX में microcontroller C8051F392 बैठा है, जो A0/A2 को emulate करता है और password मांग सकता है या challenge का जवाब मांग सकता है। बाहर से बिल्कुल normal memory जैसा दिखता है, ठीक writing वाले moment तक। सबसे मुश्किल case जो मुझे मिला वो HP/Aruba की keys वाली interactive EEPROM थी, वहां ready utility के बिना कुछ नहीं हो सकता।
और अगर खुद adapter बना रहे हो, तो legs मत उलझाना: TX_Disable - pin 3, Mod_Abs - pin 6, VeeR - pin 9। जानने वालों के आधे "not readable" modules असल में गलत तरीके से बने socket की वजह से निकले, vendor की protection की वजह से नहीं।
अभी जो लोग इस्तेमाल करते हैं उनमें से: SNR SFP Writer, SFPTotal Plus सीरीज़ और CH341 पर बने homemade वाले - आम तौर पर यह बस SFP, XFP, GBIC और QSFP के sockets वाला board होता है, कभी-कभी printed case में। Universal software नहीं है, हर vendor के लिए अपनी utility है, images firmware की databases और profile forums से खींचते हैं।
दो बातें जो hardware से भी महंगी पड़ती हैं। पहली: कई modules पर 4-byte password होता है, इनमें से ज्यादातर लंबे समय से publish हो चुके हैं, पर चूक गए तो एक महंगे module की brick मिलेगी। दूसरी: memory में घुसने से पहले confirm कर लो कि module वाकई जिंदा है। Temperature, voltage, bias current और TX/RX A0h/A2h से, Junos पर
show interfaces diagnostics opticsया Huawei परdisplay interface transceiver, फिर latch, contacts और lens की सफाई, फिर पक्के काम करने वाले module से बदलकर देखना। इसके बाद कई "मरे हुए" modules बिना किसी firmware के ही जी उठते हैं, load तो उसके बाद iperf3 से check करते हैं।Final result बता रहा हूं। CH341 पर board बनाई, Linux में 0x51 ने तुरंत जवाब दिया, दूसरा page पूरा पढ़ा जाता है, पहले 128 byte की कोई duplicate नहीं। J4859C का image OptiCin में डाला, HP 2530-24G J9776A ने module चुपचाप accept कर लिया, DDM sensible values दिखा रहा है, एक दिन load पर बिना किसी error के चल गया।
IC-prog हटा दिया ताकि फिर से लालच में ना पड़ूं। 3Com 3CSFP91 जो बगल में पड़ा था, वाकई नहीं लिखता: पढ़ा जाता है, writing apply नहीं होती, तो WP वाली बात पूरी तरह matches करती है। Thanks, सवाल बंद।