1

Тема: Freeduino спасла жизнь модему.

Доброго времени суток всем.
Решил поделиться своим опытом реанимации TP-LINK 3020 с помощью Freeduino.
История по-моему достаточно полезная. Началось все с того, что от вынужденного безделья решил я поиграться с прошивками и лоханулся по полной программе. Мало того, что я делал это через WiFi, так еще и WiFi раздавался таким же модемом с заводской прошивкой и дефолтными настройками. Видимо айпишники где-то конфликтанули во время перепрошивки, и получил я красивый кирпичик, весело моргающий всеми светодиодами в циклическом ребуте.
Не надо так делать.
Погоревал и полез в Гугл.
Минусы в моем положении были такие: Находился я на работе в дикой глуши, никаких магазинов поблизости, никаких переходников с USB на UART, никаких шнурков от телефонов.
Плюсы: на роутере уже был распаян 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, видимо оно само там где-то соединилось:).
З.Ы: Я эту фридуину паял из комплекта для сборки, до этого ничего мельче провода от утюга не паял. Как-то я крупнее детали себе представлял, когда заказывал. В середине процесса был уже полностью уверен - это не заработает никогда. Заработала зараза.
Так что - глаза боятся, а руки делают. Удачи всем, кто будет повторять.