Реанимация роутера TP-LINK 3020

в 3:23, , рубрики: arduino, cyberwrt, diy или сделай сам, tp-link mr3020, программирование микроконтроллеров, прошивка, метки:

Доброго времени суток всем.

Решил поделиться своим опытом реанимации Wi-Fi роутера TP-LINK 3020.

Началось все с того, что от вынужденного безделья решил я поиграться с прошивками CyberWRT. И это плохо кончилось. Я даже сам не совсем понял, что произошло. Скорее всего дело было в том, что с роутером я работал через WiFi, который раздавался точно таким же роутером с заводской прошивкой и дефолтными настройками. Видимо в какой-то момент произошел сброс настроек испытуемого, соответственно конфликт IP адресов, и получил я красивый кирпич, моргающий всеми светодиодами в циклическом ребуте.

Не надо так делать.

Погоревал и полез в Гугл.

Минусы в моем положении были такие: Я находился на работе в дикой глуши, никаких переходников с USB на UART, у меня не было. До магазина радиодеталей около 565 километров по прямой. Да и не факт, что там продавалось то, что надо.
Плюсы: на роутере уже был распаян UART. Распаять его, кстати, две минуты под стандартную гребенку 2.54. И была в наличии плата Freeduino с USB портом. Только вот что-то примеров использования ее в качестве USB-UART моста я в инете не встретил. В основном напирали на платы с несколькими аппаратными UART, а тут один только. Ну и я не такой уж специалист большой. Однако время свободное было, роутер уже полутруп — терять практически нечего. Был риск убить роутер полностью, был вариант подождать возвращения домой (через месяц) и заняться роутером там, поискав нормальный переходник. Но месяц без этого роутера означал для меня потерю впустую кучи времени, которое я планировал потратить как раз на потрошение этого роутера. Второй роутер мучить было жалко и страшно.

Ну и поехало. Достал фридуину, присобачил к компу. Нашел в интернете хитрый скетч:

void setup() { 
pinMode(0, INPUT);
pinMode(1, INPUT);
}
void loop() {
}

И все. Что там инпут, куда инпут — непонятно. Смутно представляя себе предстоящие мучения с софтварным serial или еще с чем, пока непонятным, стал подключать роутер. RX-TX, TX-RX. Где-то советовали резистор для согласования напряжений, у меня его не было. Кто-то советовал закоротить RESET на землю, что тоже казалось мне подозрительным. Решил, что полтора вольта разницы пофиг. Роутер подключил к сетевой карте ноутбука и сдуру включил… И увидел повторяющееся в такт мигающим светодиодам каждые две секунды:

U-Boot 1.1.4 (Nov 28 2011 - 09:34:00)
AP121 (ar9330) U-boot
DRAM:32 MB
..........
.......
..
eth0, eth1
Autobooting in 1 seconds...

И где я это увидел? В окне ардуиновского serial монитора. А вверху окна ненавязчиво маячило поле ввода и кнопка с чисто русским «Послать». Я подумал, посомневался, набрал там «tpl», выждал появления «Autobooting in 1 seconds» и послал. Без всяких там дополнительных терминалов, Putty и тому подобного. И оно остановилось!

Это просто не могло быть правдой.

Набрал «printenv» — работает!

Я был в шоке. Дальше все как по маслу:
— скачал tftpd32, всунул в его папку прошивку.
— Установил IP сетевой карты ноутбука 192.168.1.100.
— запуск tftpd32, IP — 192.168.1.100, Show Dir — путь к прошивке — Copy.
— tftpboot 0x80000000 CyberWrt-v1.4.bin — готово
— erase 0x9f020000 +0x3c0000 — готово
— cp.b 0x80000000 0x9f020000 0x3c0000 — готово
— bootm 0x9f020000 — готово!
— вернул сетевухе получение IP автоматом…

И все это из serial монитора от Ардуино…

И все! В результате — живой роутер. Причем что интересно — я даже «землю» забыл соединить между роутером и фридуиной. Заметил это уже после прошивки. Просто роутер питание получал от USB того же ноута, что и Freeduino, видимо оно само там где-то соединилось.
Так что все оказалось гораздо проще, чем я предполагал. Глаза боятся, а руки делают. Удачи всем, кто будет повторять.

Автор: OJV

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js