Найти тему

Реанимируем Tp-Link WR1043nd v1 из состояния кирпича

Дело было вечером - делать было нечего. У меня дома стоит роутер от ростелекома, на нём висит IPTV. При установке приставки мастер не смог настроить мой домашний роутер и пришлось взять Sagecom v1704 в аренду.

Сейчас на дворе кризис - денег нет - приходится урезать расходы. Так и я решил - поставить заводскую прошивку на Tp-Link вместо OpenWrt, которая стояла ранее - это и привело роутер в состояние кирпича.

Раньше я его несколько раз доводил его до состояния, когда он находился в вечной перезагрузке, но это всё решалось использованием утилиты tftp и правильными настройками сетевой карты.

Будем реанимировать роутер из состояния кирпича при помощи самодельного программатора.

Роутеры серии TP-Link WR1043nd хороши тем, что имеют на своём борту 1ГБит/с интерфейсы Ethernet - для меня это очень удобно, поскольку я инженер и занимаюсь как разработкой программного обеспечения, так и разработкой и работой со всякими железяками.

В общем для восстановления роутера необходимо подпаяться к его выводам (RX, TX, GND), расположенным под сетевым чипом Realtek.

Чёрный провод - GND, Красный провод - RX, Зелёный провод - TX
Чёрный провод - GND, Красный провод - RX, Зелёный провод - TX

Чтобы спокойно припаяться я использовал распотрошённый и ни разу ни пользованный провод от сетевой карточки. Аккуратно снял коннектор, зачистил и залудил провода, припаялся к разъёмам.

Перед тем как собирать программатор нам понадобится:

ПЛИС Arduino nano
ПЛИС Arduino nano

макетная плата - бредборд
макетная плата - бредборд

провода
провода

USB кабель для подключения к компьютеру

В итоге должно получиться это - самопальный программатор - только нужно сделать перемычку на Arduino nano между GND и Reset - это позволит Arduino стать USB to ttl преобразователем.

-6

Дальше соединяем провода в следующем порядке:

Arduino RX - RX Роутера

Arduino TX - TX Роутера

Arduino GND - GND Роутера

Обычно при подключении по ttl используется перекрёстная схема, когда RX соединяется с TX и наоборот, но здесь работает только так.

Подключаем роутер с использованием сетевого кабеля, на компьютере выставляем IP адрес 192.168.0.5, маска 255.255.255.0, шлюз 192.168.0.2

Для Windows лучше использовать putty и tftpd.

Для Linux систем, использующих Deb пакеты устанавливаем tftp сервер и зависимости:

sudo apt-get install openbsd-inetd tftpd tftp

Затем в папку /srv/tftp/ копируем образ устанавливаемой прошивки. У меня это DD-wrt.

Далее - устанавливаем программу для работы с COM портом:

sudo apt-get install minicom

Запускаем её:

minicom -s
-7

Нам нужно установить параметры последовательного порта, поэтому выбираем устройство для приёма-передачи - у меня это - /dev/ttyUSB0.

-8

У Вас устройство может называться по-другому, поэтому лучше это проверить следующей командной:

ls /dev/tty <нажать Tab - это автодополнение>
-9

Будет выведен список всех устройств в системе, которые уже подключены, в том числе и виртуальные интерфейсы, затем подключаете устройство и снова выполняете комманду:

ls /dev/tty <нажать Tab - это автодополнение>
-10

Устройство должно появиться.

Далее - необходимо указать скорость порта, стоп-байты - 115200 бод, 8 бит, 1 стоп-байт. Выходим из программы.

-11

Подключаем наш программатор к USB порту и набираем в терминале minicom - должна установиться связь между компьютером и преобразователем. Тот в свою очередь будет транслировать всё то, что ему будет посылать роутер.

Запустив minicom, включаем роутер и практически сразу набираем фразу tpl, после этого получим приглашение к вводу команд процессора:

-12

Мы вошли в режим "ручного управления" роутером, подключаем кабель локальной сети, затем набираем команду:

tftpboot 0x81000000 factory-to-ddwrt4300.bin

Пойдёт процесс загрузки. Слева - место, откуда роутер берёт прошивку.

-13

Успешность загрузки - Done. Если он пишет что-то другое, например, пытается получить прошивку, но пишет "retry", то проблемы на стороне tftp сервера и необходимо его настроить.

Идём дальше - надо подчисть байты, убрать часть загрузчика.

Пишем:

erase 0xbf020000 +7b0000

Результат выполнения:

-14

Вот теперь всё - роутер готов к работе. Выключаем питание и включаем - видим в окне minicom стандартные сервисные сообщения.

-15

Проблема, случившая со мной является небольшим отклонением от стандартной - сервисные сообщения при загрузке выдавали kernel panic - это означало то, что система не могла загрузиться с флеш памяти. Обычно такие роутеры уходили в бесконечную перезагрузку, здесь же он просто загружался и ничего более не делал.

На этом всё - вот такая история приключалась со мной.

Читайте про трамваи, троллейбусы и не только: