IC-prog отдаёт 256 байт дампа SFP, но вторая половина - копия первой, страница A2 не читается (HP 2530-24G)
Держу сеть небольшого оператора, регулярно перешиваю дешёвые модули под HP. Задача обычная: залить в китайские 1.25G WDM образ фирменного модуля, чтобы коммутатор принимал их без ругани. Донор - J4859C, целевая железка - HP 2530-24G J9776A.
Что на столе:
- коммутатор HP 2530-24G J9776A
- модули OptiCin и Fiberstore, 1.25G WDM
- мини-USB программатор NAG
- IC-prog под Windows, читаю и пишу через него
Дамп снимается на 256 байт, но вторая половина совпадает с первой байт в байт:
IC-prog, 0x00-0x7F: прочитано
IC-prog, 0x80-0xFF: тот же самый блок, байт в байт
на части модулей при чтении: No Acknowledge received
Что уже пробовал:
- переставлял модуль, чистил контакты в сокете, менял защёлку
- прогнал три модуля из разных партий, картина одинаковая
- менял USB-порт, кабель и машину, ничего не изменилось
Мне нужна вторая страница, где DDM и служебные байты, и я её просто не вижу. Это ограничение IC-prog, кривая плата программатора или сами модули так себя ведут?
Comments 7
Тут два независимых косяка, и оба не в модулях.
Первый - сам IC-prog. У него линейная модель адресации, переключать страницы он не умеет и до A2 не достучится в принципе. То, что ты видишь во второй половине дампа, - это та же A0, прочитанная второй раз. Ошибку он не покажет, потому что с его точки зрения всё честно.
Второй - плата. На этом мини-USB программаторе VccR (пин 15) посажен на +5 В, хотя по SFF-8431 он должен оставаться свободным, плюс питание и земля разведены так, что часть модулей не выходит в нормальный режим. Отсюда и
No Acknowledge received- не на всех подряд, а на тех, кому эта разводка не нравится.Что работает нормально:
i2cdump -y 3 0x50иi2cdump -y 3 0x51, есть открытый скрипт на Python, который читает и пишет обе страницы.Критерий простой: как только 0x51 начал отвечать, дальше это обычная работа с памятью модуля, а не борьба с инструментом.
Раздели софт и железо, иначе будешь гадать до вечера. Возьми любой Linux и посмотри, отвечает ли модуль на втором адресе вообще:
Номер шины подставь свой. Если 0x50 читается, а 0x51 молчит - вопрос уже не в том, чем ты смотришь дамп, а в том, доходит ли до модуля нормальное питание. И скажи, что отдаёт тем же программатором заведомо живой донорский J4859C: если и у него вторая страница не открывается, дешёвые модули тут ни при чём, копать надо в связку софт плюс плата.
Донора прогнал первым делом: живой J4859C в том же сокете и в том же IC-prog даёт ровно ту же картину - 256 байт, вторая половина повторяет первую. Значит, дело не в дешёвых модулях. Проверил ещё под Linux через переходник:
Родная утилита на этом же модуле выдаёт
No Acknowledge received, а IC-prog молча показывает копию первой страницы и делает вид, что всё в порядке. Целевые модули - OptiCin, образ снимаю как раз с этого J4859C.По самой записи добавлю. В 256-байтном дампе значимы первые 128 байт, дальше зона производителя, её обычно можно вообще не трогать. Под HP льём образы с J4858C и J4859C, для WDM пару раз хватало обычного LX-образа: коммутатор принимал модуль и на длину волны не смотрел.
Но пишется далеко не всё. На 3Com 3CSFP91 и 3CSFP92, как и на брендированных Allied Telesis, запись не пошла вообще: читается нормально, а запись не применяется - залочен WP. Так что если после смены программатора A2 читается, а запись тихо уходит в никуда, причину ищи не в софте.
Оговорюсь насчёт «дальше обычная работа с памятью». Обычная она не везде. Часть модулей - вообще не EEPROM: в Medick SFP-10G-BX стоит микроконтроллер C8051F392, который эмулирует A0/A2 и умеет требовать пароль или отвечать на челлендж. Снаружи выглядит как нормальная пмять ровно до момента записи. Самый тяжёлый случай, который мне попадался, - интерактивная EEPROM у HP/Aruba с ключами, там без готовой утилиты делать нечего.
И если собираешь адаптер сам, не перепутай ноги: TX_Disable - пин 3, Mod_Abs - пин 6, VeeR - пин 9. Половина «нечитаемых» модулей у знакомых оказывалась криво собранным сокетом, а не защитой вендора.
Из того, чем пользуются сейчас: SNR SFP Writer, серия SFPTotal Plus и самоделки на CH341 - обычно это просто плата с сокетами под SFP, XFP, GBIC и QSFP, иногда в напечатанном корпусе. Универсального софта нет, под каждого вендора своя утилита, образы тянут из баз прошивок и с профильных форумов.
Два момента, которые стоят дороже железа. Первый: у многих модулей стоит 4-байтный пароль, большая часть их давно опубликована, но промахнёшься - получишь кирпич из недешёвого модуля. Второй: прежде чем лезть в память, убедись, что модуль вообще живой. Температура, напряжение, ток смещения и TX/RX из A0h/A2h,
show interfaces diagnostics opticsна Junos илиdisplay interface transceiverна Huawei, потом чистка защёлок, контактов и линз, потом замена на заведомо рабочий. Часть «мёртвых» модулей после этого оживает без всякой прошивки, а нагрузку уже потом проверяешь через iperf3.Отчитываюсь по итогу. Собрал плату на CH341, под Linux 0x51 ответил сразу, вторая страница читается целиком, никаких дублей первых 128 байт. Залил образ J4859C в OptiCin, HP 2530-24G J9776A принял модуль молча, DDM показывает вменяемые значения, сутки под нагрузкой отработал без ошибок.
IC-prog снёс, чтобы больше не соблазняться. 3Com 3CSFP91, который валялся рядом, действительно не пишется: читается, а запись не применяется, так что про WP всё сходится. Спасибо, вопрос закрыт.