Дело было вечером - делать было нечего. У меня дома стоит роутер от ростелекома, на нём висит IPTV. При установке приставки мастер не смог настроить мой домашний роутер и пришлось взять Sagecom v1704 в аренду.
Сейчас на дворе кризис - денег нет - приходится урезать расходы. Так и я решил - поставить заводскую прошивку на Tp-Link вместо OpenWrt, которая стояла ранее - это и привело роутер в состояние кирпича.
Раньше я его несколько раз доводил его до состояния, когда он находился в вечной перезагрузке, но это всё решалось использованием утилиты tftp и правильными настройками сетевой карты.
Будем реанимировать роутер из состояния кирпича при помощи самодельного программатора.
Роутеры серии TP-Link WR1043nd хороши тем, что имеют на своём борту 1ГБит/с интерфейсы Ethernet - для меня это очень удобно, поскольку я инженер и занимаюсь как разработкой программного обеспечения, так и разработкой и работой со всякими железяками.
В общем для восстановления роутера необходимо подпаяться к его выводам (RX, TX, GND), расположенным под сетевым чипом Realtek.
Чтобы спокойно припаяться я использовал распотрошённый и ни разу ни пользованный провод от сетевой карточки. Аккуратно снял коннектор, зачистил и залудил провода, припаялся к разъёмам.
Перед тем как собирать программатор нам понадобится:
USB кабель для подключения к компьютеру
В итоге должно получиться это - самопальный программатор - только нужно сделать перемычку на Arduino nano между GND и Reset - это позволит Arduino стать USB to ttl преобразователем.
Дальше соединяем провода в следующем порядке:
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
Нам нужно установить параметры последовательного порта, поэтому выбираем устройство для приёма-передачи - у меня это - /dev/ttyUSB0.
У Вас устройство может называться по-другому, поэтому лучше это проверить следующей командной:
ls /dev/tty <нажать Tab - это автодополнение>
Будет выведен список всех устройств в системе, которые уже подключены, в том числе и виртуальные интерфейсы, затем подключаете устройство и снова выполняете комманду:
ls /dev/tty <нажать Tab - это автодополнение>
Устройство должно появиться.
Далее - необходимо указать скорость порта, стоп-байты - 115200 бод, 8 бит, 1 стоп-байт. Выходим из программы.
Подключаем наш программатор к USB порту и набираем в терминале minicom - должна установиться связь между компьютером и преобразователем. Тот в свою очередь будет транслировать всё то, что ему будет посылать роутер.
Запустив minicom, включаем роутер и практически сразу набираем фразу tpl, после этого получим приглашение к вводу команд процессора:
Мы вошли в режим "ручного управления" роутером, подключаем кабель локальной сети, затем набираем команду:
tftpboot 0x81000000 factory-to-ddwrt4300.bin
Пойдёт процесс загрузки. Слева - место, откуда роутер берёт прошивку.
Успешность загрузки - Done. Если он пишет что-то другое, например, пытается получить прошивку, но пишет "retry", то проблемы на стороне tftp сервера и необходимо его настроить.
Идём дальше - надо подчисть байты, убрать часть загрузчика.
Пишем:
erase 0xbf020000 +7b0000
Результат выполнения:
Вот теперь всё - роутер готов к работе. Выключаем питание и включаем - видим в окне minicom стандартные сервисные сообщения.
Проблема, случившая со мной является небольшим отклонением от стандартной - сервисные сообщения при загрузке выдавали kernel panic - это означало то, что система не могла загрузиться с флеш памяти. Обычно такие роутеры уходили в бесконечную перезагрузку, здесь же он просто загружался и ничего более не делал.
На этом всё - вот такая история приключалась со мной.
Читайте про трамваи, троллейбусы и не только:
- Сколько стоит трамвайный путь построить?