...

понедельник, 6 апреля 2015 г.

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

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

Решил поделиться своим опытом реанимации 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, видимо оно само там где-то соединилось.

Так что все оказалось гораздо проще, чем я предполагал. Глаза боятся, а руки делают. Удачи всем, кто будет повторять.


This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий