CodingBox Q&A Ask question

Программатор возвращает WRITE FAIL на SFP+, который чисто читается: мёртвый EEPROM или что-то блокирует запись?

Asked Active Viewed 93 AI translation from English
3

Мы перекодируем небольшую партию модулей под хосты заказчиков почти каждый месяц, ничего экзотичного: читаем исходную страницу, записываем строку вендора, которую хочет хост, ставим модуль в коммутатор и идём дальше. Один модуль из текущей партии отказывается от каждой записи, при этом читается идеально, и прежде чем его выбросить, хочу узнать, есть ли что ещё попробовать.

Стенд:

  • USB-программатор класса CH341 с платой-переходником для SFP
  • модуль SFP+, с поддержкой диагностики, читается нормально холодным и после power cycle
  • та же оснастка записала три других модуля из того же лотка часом ранее

Что выводит инструмент в момент нажатия записи:

WRITE FAIL

Повторное чтение сразу после этого возвращает исходную страницу побайтово, то есть не записалось вообще ничего, даже частично.

Что я пробовал:

  • переустановил модуль и заменил плату-переходник на запасную
  • записал один байт в область, которая мне не важна, вместо всей страницы - тот же результат
  • подтвердил, что чтение стабильно при нескольких циклах включения, так что проводка не на грани

Это модуль, который чисто читается, но никогда не принимает запись, просто изношен, или в самом модуле есть что-то, что может намеренно отказывать в записи?

Comments 5

Чисто читается, запись отклоняется, исходная страница после этого не тронута. Изношенный EEPROM обычно так себя не ведёт. Мёртвые ячейки дают плохое обратное чтение или страницу, записавшуюся наполовину, а не аккуратный отказ со всем нетронутым.

И поскольку даже тот единственный байт вне области вендора отскочил, это не плохая область на чипе, это компонент, отказывающий от записи целиком. Прежде чем что-либо решать, стоит выяснить две вещи. Во-первых, кто на самом деле произвёл модуль: смотрите на строку вендора в уже снятой странице, а не на то, что написано на лотке. Во-вторых, проходит ли запись, если выполнить её сразу же после подачи питания, до того как что-то ещё на шине успело поговорить с модулем. Вероятное объяснение отличается в зависимости от этих ответов, и одно из них вообще не неисправность.

2 Ukrainenetguru15UA Show original (English) AI translation

Это больше похоже на защиту паролем, чем на повреждение. SFF-8472 позволяет модулю с поддержкой диагностики требовать 4-байтовый пароль перед тем, как принять любую запись. Не отправьте ничего или отправьте неправильный, и модуль отвечает на запись ошибкой, при этом чтение остаётся полностью открытым, что и есть ваш WRITE FAIL с неизменной страницей на возврате. Это особенность компонента, а не симптом умирающего.

Что это значит для вашего стенда: программатор, который знает про это, позволяет ввести пароль производителя или хоста, а те, что получше, подберут неизвестный перебором и пересчитают контрольные суммы за вас после записи. У оснастки класса CH341 вообще нет автоматизации контрольных сумм, так что даже после прохождения пароля их придётся исправлять самому, иначе получите модуль, чья страница выглядит правильной для вас, а хост всё равно отказывается его принимать.

Обычная оговорка: я сталкивался с этим на нескольких модулях, и путь с паролем там сработал, так что попробуйте на своём компоненте, прежде чем списывать что-либо со счетов.

4 Franceedgenode83FR Show original (English) AI translation

Добавлю к этому: у некоторых вендоров пароли на самом деле не секрет. В обороте есть общие подборки паролей трансиверов Ubiquiti с записями вроде 0x00001011 и простых строк вроде SFPX и QSFP, так что если модуль вышел из этой экосистемы, попробовать известные обойдётся в пять минут, прежде чем лезть в перебор.

А если хотите инструмент, который уже знает весь процесс, а не бороться с общим программатором, UACC-SFP-WIZARD - дешёвый вариант, к которому обычно тянутся. Это не лабораторный прибор, но со стороной модуля он справляется правильно.

3 United StateslasernodeUS Show original (English) AI translation

По теме, из опыта перекодирования модулей под хосты Huawei S5731 и S6730 и старый HP 6120XG. Когда слабым звеном оказывается кейдж или переходник, а не сам модуль, люди паяются напрямую к выводам 4 и 7 модуля, которые являются линиями I2C SDA и SCL, и работают с EEPROM, полностью убрав кейдж из уравнения. Уродливо, и делать это стоит только на компонентах, которые готов потерять, но это устраняет целый класс проблем с контактом.

Компоненты, прошедшие через это здесь: Finisar FTLX8571D3BCV и FTLX8574D3BCV, модули Intel SFP+ LR и SR, SNR-SFP+W73-3 и SNR-SFP+W37-3, а также HP J9150A.

В вашем случае чтение уже устойчиво железно при циклах питания, так что контакт - не ваша проблема. Разбирайтесь сначала с версией про пароль.

3 United Stateslinkeng21US Show original (English) AI translation

Пароль - вероятный ответ, но не останавливайтесь на "ввёл пароль и готово", потому что сразу после этого людей кусают две вещи.

Во-первых, на некоторых компонентах ввод требуется заново после того, как модуль был обесточен, так что скрипт, записывающий несколько страниц подряд, должен быть готов ввести пароль повторно, а не полагаться на то, что одна разблокировка покрывает всю сессию.

Во-вторых, контрольные суммы. С программатором класса CH341 их пересчитывают вручную. Оставьте их устаревшими, и модуль всё равно будет читаться нормально, инструмент отчитается об успехе, а хост тихо откажется принимать модуль всё равно, и тогда все снова начнут винить железо. Считайте страницу обратно и проверьте суммы, прежде чем этот модуль попадёт в коммутатор заказчика.

1 United Arab Emirateslambdahawk88AE Show original (English) AI translation
Log in to comment. Log in