Несколько лет назад попутал меня бес купить родителям DECT-телефон на замену древней 900Mhz-радиотрубке. Из всех представленных в магазине больше всего приглянулась фирмовая и брендовая Motorola D802.
Первые полгода она даже работала. Не без глюков, но терпимо. Потом сдох блок питания одной из трубок, заменил на аналогичный по характеристикам. А еще через год телефон потерял память и начал говорить по-сербски, вот так:
Как заставить серба поверить в то, что он на самом деле американец, как сделать из "кирпича" назад Моторолу? А довольно просто, но для этого нам потребуется паяльник.
Достаточно очевидно, что дело в слетевшей фирмвари, прошивке. Разбираем - два винта + защелки по краям, и готово. Внутри видим кучу кремния, но жизненный опыт подсказывает нам, что особое внимание нужно обратить на две микросхемы: 24C128 - это 16кб i2c-флеш, явно для хранения изменяющихся данных - ID трубки, адресной книги, времени будильника и т. д.; и AT45DB041D - spi флеш на 512 килобайт, где лежит сама прошивка. Обе микросхемы - восьминогие SMD, и для акуратного их снятия лучше пользоваться феном.
Что именно сдохло непонятно, поэтому начнем с мелкой i2c-шки. Для того, чтобы её прочитать, я использовал
Dingoo A320. К шине i2c очень легко припаяться на модуле FM-радио, а работать с флешкой через пакет i2c-tools. Записал в микросхему сломанной трубки данные, слитые с целой - ноль реакции. Окей, значит дело в другом чипе.
Но с другим чипом есть проблема - ни один универсальный флешер из доступных к собиранию на коленке за 5 минут с ними не работает. Даже волшебный flashrom умеет читать, но не умеет писать (о чем я узнал, как всегда, уже после того, как собрал LPT-программатор). И лишь после пары часов гугления нашлась специализированная тулза
ATMEL DataFlash programming tool. Требуемая ей схема подключения к LPT-порту приведена в архиве с программой, но я сделал проще, просто поставил резисторы в 150 Ом на линиях данных и подключил дополнительное питание в виде батарейки 2032.
Так как микросхеме требуется питание 3.3V, а LPT-порт выдает целых 5V, то использование внешнего питания позволяет снять кучу возникающих при согласовании уровней проблем. Всё сразу же заработало, программа увидела микросхему, и после заливки прошивки из живой трубки телефон ожил.
Дабы больше никому не пришлось вскрывать вторую трубку (а владельцам однотрубочного D801 покупать новый телефон) выкладываю дампы микросхем.
AT45DB041D24C128 (занулил там свою адресную книгу, если в телефоне есть проверка CRC и от этого дамп перестал работать - обращайтесь)