CodingBox Q&A Ask question

IC-prog отдаёт 256 байт дампа SFP, но вторая половина - копия первой, страница A2 не читается (HP 2530-24G)

Asked Active Viewed 35 Original language: Русский
6

Держу сеть небольшого оператора, регулярно перешиваю дешёвые модули под 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

Accepted answer

Тут два независимых косяка, и оба не в модулях.

Первый - сам IC-prog. У него линейная модель адресации, переключать страницы он не умеет и до A2 не достучится в принципе. То, что ты видишь во второй половине дампа, - это та же A0, прочитанная второй раз. Ошибку он не покажет, потому что с его точки зрения всё честно.

Второй - плата. На этом мини-USB программаторе VccR (пин 15) посажен на +5 В, хотя по SFF-8431 он должен оставаться свободным, плюс питание и земля разведены так, что часть модулей не выходит в нормальный режим. Отсюда и No Acknowledge received - не на всех подряд, а на тех, кому эта разводка не нравится.

Что работает нормально:

  • TL866A, около 70 USD, берёт модули без плясок с бубном;
  • платы на CH341 с аппаратным I2C - самый дешёвый путь, если руки на месте;
  • LPT-переходник с драйвером i2c-parport в Linux: модуль виден обычным i2c-устройством, дальше i2cdump -y 3 0x50 и i2cdump -y 3 0x51, есть открытый скрипт на Python, который читает и пишет обе страницы.

Критерий простой: как только 0x51 начал отвечать, дальше это обычная работа с памятью модуля, а не борьба с инструментом.

5 BelarusnetfoxBY AI translation to English Original (Русский)

Раздели софт и железо, иначе будешь гадать до вечера. Возьми любой Linux и посмотри, отвечает ли модуль на втором адресе вообще:

i2cdump -y 3 0x50
i2cdump -y 3 0x51

Номер шины подставь свой. Если 0x50 читается, а 0x51 молчит - вопрос уже не в том, чем ты смотришь дамп, а в том, доходит ли до модуля нормальное питание. И скажи, что отдаёт тем же программатором заведомо живой донорский J4859C: если и у него вторая страница не открывается, дешёвые модули тут ни при чём, копать надо в связку софт плюс плата.

3 KazakhstanracknodeKZ AI translation to English Original (Русский)

Донора прогнал первым делом: живой J4859C в том же сокете и в том же IC-prog даёт ровно ту же картину - 256 байт, вторая половина повторяет первую. Значит, дело не в дешёвых модулях. Проверил ещё под Linux через переходник:

i2cdump -y 3 0x50   ->  дамп есть, содержимое осмысленное
i2cdump -y 3 0x51   ->  чтение не проходит

Родная утилита на этом же модуле выдаёт No Acknowledge received, а IC-prog молча показывает копию первой страницы и делает вид, что всё в порядке. Целевые модули - OptiCin, образ снимаю как раз с этого J4859C.

0 RussiawavetechRU AI translation to English Original (Русский)

По самой записи добавлю. В 256-байтном дампе значимы первые 128 байт, дальше зона производителя, её обычно можно вообще не трогать. Под HP льём образы с J4858C и J4859C, для WDM пару раз хватало обычного LX-образа: коммутатор принимал модуль и на длину волны не смотрел.

Но пишется далеко не всё. На 3Com 3CSFP91 и 3CSFP92, как и на брендированных Allied Telesis, запись не пошла вообще: читается нормально, а запись не применяется - залочен WP. Так что если после смены программатора A2 читается, а запись тихо уходит в никуда, причину ищи не в софте.

3 RussialasernerdRU AI translation to English Original (Русский)

Оговорюсь насчёт «дальше обычная работа с памятью». Обычная она не везде. Часть модулей - вообще не EEPROM: в Medick SFP-10G-BX стоит микроконтроллер C8051F392, который эмулирует A0/A2 и умеет требовать пароль или отвечать на челлендж. Снаружи выглядит как нормальная пмять ровно до момента записи. Самый тяжёлый случай, который мне попадался, - интерактивная EEPROM у HP/Aruba с ключами, там без готовой утилиты делать нечего.

И если собираешь адаптер сам, не перепутай ноги: TX_Disable - пин 3, Mod_Abs - пин 6, VeeR - пин 9. Половина «нечитаемых» модулей у знакомых оказывалась криво собранным сокетом, а не защитой вендора.

1 Russiagiglab26RU AI translation to English Original (Русский)

Из того, чем пользуются сейчас: 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.

1 RussiadwdmmonkRU AI translation to English Original (Русский)

Отчитываюсь по итогу. Собрал плату на CH341, под Linux 0x51 ответил сразу, вторая страница читается целиком, никаких дублей первых 128 байт. Залил образ J4859C в OptiCin, HP 2530-24G J9776A принял модуль молча, DDM показывает вменяемые значения, сутки под нагрузкой отработал без ошибок.

IC-prog снёс, чтобы больше не соблазняться. 3Com 3CSFP91, который валялся рядом, действительно не пишется: читается, а запись не применяется, так что про WP всё сходится. Спасибо, вопрос закрыт.

2 RussiawavetechRU AI translation to English Original (Русский)
Log in to comment. Log in