Оживить роутер TP link tl mr3020 с помощью arduino mega2560

AlexSMG95
Offline
Зарегистрирован: 28.02.2013

Всем доброго времени суток!
Вообщем вот в чем ситуация прошивал роутер на прошивку OpenWRT через веб интерфейс после перепрошивки роутер перестал работать(загружаться) доступа к веб интерфейсу нету на роутере горит только индикатор питания! Читал гугл нашел статью где говорится что с помощью arduino и uart портом роутера можно перешить роутер. Так вот я пытался сконфигурировать скетч arduino так что бы я мог на uart посылать запросы типа "tpl" но у меня ничего не получилось! но у меня получилось сконфигурировать скетч arduino так что я могу видеть процесс загрузки роутера (проверка памяти подключение загрузчика и т.п) после того как я увидел что загрузчик роутера жив и пытается загрузится камень с сердца упал и появилась надежда! Подскажите пожалуйста как сконфигурировать скетч чтобы получилось удачно прошить роутер 

P.S процесс прошивки мне известен
вот код чтения загрузки роутера:

String inputString = "";   
boolean stringComplete = false; 
void setup() {
  Serial.begin(115200);
  inputString.reserve(200);
}
void loop() 
{
  if (stringComplete) 
  {
    Serial.println(inputString); 
    inputString = "";
    stringComplete = false;
  }
}
void serialEvent() 
{
  while (Serial.available()) 
  {
    char inChar = (char)Serial.read(); 
    inputString += inChar;

    if (inChar == '\n') 
    {
      stringComplete = true;
    } 

  }
}

Заранее спасибо!

AlexSMG95
Offline
Зарегистрирован: 28.02.2013

Неужели ни кто не поможет?

Snubist
Offline
Зарегистрирован: 18.02.2013

Извини, я не спец. Тем более по меге, но давай попробуем разобраться.

Что ты делаешь сейчас, судя по коду, читаешь из Serial порта, и прочитанное посылаешь туда же . Все что ты туда посылаешь, отслеживаешь монитором IDE.

Для прошивки тебе нужно просто писать и считывать данные из порта. У тебя не получится сделать это используя один порт для связи  КОМП-АРДУИНО и АРДУИНО-РОУТЕР (ты будешь считывать данные посылаемые роутером, и отправлять их обратно что бы передать компу, но их же получит и роутер, хотя ждет совсем других данных). Хотя может я и не прав.

Но у меги три таких порта, следовательно можно развести, подключив мегу на Serial2.

А в скетче использовать что то типа Serial2.write=Serial1.read(), и соответственно на оборот Serial1.write=Serial2.read(), то есть все что пришло со второго порта посылаем в первый, все что пришло с первого посылаем во второй. 

После чего, Ардуина станет простым переходником USB-UART. Далее уже качаем прошивку и прошиваем https://docs.google.com/file/d/0B8RHAmW4AacRYzZjMjZkMGUtZjFiNi00MTRhLTgyN2YtMDM1YjRjNjJlN2Y4/edit?hl=en&pli=1

Может я конечно не прав, тогда пусть гуру поправят, но я рыл бы именно в эту сторону.

А может всетаки легче найти переходник?

 

 

alex_r61
Offline
Зарегистрирован: 20.06.2012

А при чём здесь Arduino? Соедините порт mr3020 через переходник TTL Serial-USB и работайте через терминальную программу.
Я сделал как здесь написано http://wiki.openwrt.org/ru/toh/tp-link/tl-mr3020 и никаких проблем.
У вас ядро грузится, какие сообщения выдаёт?

AlexSMG95
Offline
Зарегистрирован: 28.02.2013

alex_r61 пишет:
А при чём здесь Arduino? Соедините порт mr3020 через переходник TTL Serial-USB и работайте через терминальную программу. Я сделал как здесь написано http://wiki.openwrt.org/ru/toh/tp-link/tl-mr3020 и никаких проблем. У вас ядро грузится, какие сообщения выдаёт?

В том то и дело что перехлдника у меня такого нет а ардуино можно использовать как переходник только все запутаннее 
вот лог порта:
 

U-Boot 1.1.4 (Nov 28 2011 - 09:34:00)


AP121 (
ar9330) U-boot


DR
AM:  32 MB

led turning on for 1s...

id read 0x100000ff

flash size 4194304, sector count = 64

Flash:  4 MB

Using default environment



In:    serial

Out:   serial

Err:   serial

Net:   ag7240_enet_initialize...

No valid address in Flash. Using fixed address

No valid address in Flash. Using fixed address

: cfg1 0x5 cfg2 0x7114

eth0: 00:03:7f:09:0b:ad

ag7240_phy_setup 

eth0 up

: cfg1 0xf cfg2 0x7214

eth1: 00:03:7f:09:0b:ad

athrs26_reg_init_lan

ATHRS26: resetting s26

ATHRS26: s26 reset done

ag7240_phy_setup 

eth1 up

eth0, eth1

Autobooting in 1 seconds

## Booting image at 9f020000 ...

   Uncompressing Kernel Image ... OK


Startin
g kernel ...


[
    0.000000] Linux version 3.3.8 (fnord@tschunk) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #1 Tue Aug 21 12:04:20 UTC 2012

[    0.000000] bootconsole [early0] enabled
[    0.000000] CPUS 24Kc)
[    0.0000
00] SoC: Atheros AR9330 rev 1
[    0.000000] Clocks: CPU:400.0z, DDR:400.000MHz, A
HB:200.000MHz, Ref:25.000MHz
[    0.000000] Determined physicaM map:
[    0.00000
0]  memory: 02000000 @ 00000000 (usable)

 

AlexSMG95
Offline
Зарегистрирован: 28.02.2013

Snubist пишет:

Извини, я не спец. Тем более по меге, но давай попробуем разобраться.

Что ты делаешь сейчас, судя по коду, читаешь из Serial порта, и прочитанное посылаешь туда же . Все что ты туда посылаешь, отслеживаешь монитором IDE.

Для прошивки тебе нужно просто писать и считывать данные из порта. У тебя не получится сделать это используя один порт для связи  КОМП-АРДУИНО и АРДУИНО-РОУТЕР (ты будешь считывать данные посылаемые роутером, и отправлять их обратно что бы передать компу, но их же получит и роутер, хотя ждет совсем других данных). Хотя может я и не прав.

Но у меги три таких порта, следовательно можно развести, подключив мегу на Serial2.

А в скетче использовать что то типа Serial2.write=Serial1.read(), и соответственно на оборот Serial1.write=Serial2.read(), то есть все что пришло со второго порта посылаем в первый, все что пришло с первого посылаем во второй. 

После чего, Ардуина станет простым переходником USB-UART. Далее уже качаем прошивку и прошиваем https://docs.google.com/file/d/0B8RHAmW4AacRYzZjMjZkMGUtZjFiNi00MTRhLTgyN2YtMDM1YjRjNjJlN2Y4/edit?hl=en&pli=1

Может я конечно не прав, тогда пусть гуру поправят, но я рыл бы именно в эту сторону.

А может всетаки легче найти переходник?

 

 

Спасибо я примерно понял в какую сторонну нужно идти!
понимаете я живу в Томске и тут проблемно найти такой переходник!

alex_r61
Offline
Зарегистрирован: 20.06.2012

Купите USB переходник от сотового телефона, там зачастую стоит PL2303. Их как грязи.

Ядро похоже грузится, надо подключаться через Serial порт терминальной программой.

Но прошивка другая , вот что у меня выдаёт:

U-Boot 1.1.4 (Mar 20 2012 - 11:37:54)

AP121 (ar9330) U-boot

DRAM:  32 MB
led turning on for 1s...
id read 0x100000ff
flash size 4194304, sector count = 64
Flash:  4 MB
Using default environment

In:    serial
Out:   serial
Err:   serial
Net:   ag7240_enet_initialize...
No valid address in Flash. Using fixed address
No valid address in Flash. Using fixed address
: cfg1 0x5 cfg2 0x7114
eth0: 00:03:7f:09:0b:ad
ag7240_phy_setup
eth0 up
: cfg1 0xf cfg2 0x7214
eth1: 00:03:7f:09:0b:ad
athrs26_reg_init_lan
ATHRS26: resetting s26
ATHRS26: s26 reset done
ag7240_phy_setup
eth1 up
eth0, eth1
Autobooting in 1 seconds
## Booting image at 9f020000 ...
   Uncompressing Kernel Image ... OK

Starting kernel ...

[    0.000000] Linux version 3.3.8 (blogic@Debian-60-squeeze-64-minimal) (gcc ve
rsion 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #1 Sun Nov 18 04:31
:55 UTC 2012
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU revision is: 00019374 (MIPS 24Kc)
[    0.000000] SoC: Atheros AR9330 rev 1
[    0.000000] Clocks: CPU:400.000MHz, DDR:400.000MHz, AHB:200.000MHz, Ref:25.000MHz

 

zlo2k
Offline
Зарегистрирован: 09.03.2013

Я буквально на днях проделывал тоже самое, скетч заливал наипростейший
 

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

Потом просто подключал

aduino -> router uart

землю к земле

tx -> rx

rx - >tx

и через putty прошивал :) надеюсь поможет ...

AlexSMG95
Offline
Зарегистрирован: 28.02.2013

Всем спасибо с проблеммой справился!

dmw
Offline
Зарегистрирован: 24.03.2013

Для Arduino Mega 2560 использовал следующий скетч:

void setup() {
  Serial.begin(115200);
  Serial1.begin(115200);
}
void loop()
{
   while (Serial.available())
       Serial1.write(Serial.read());
   while (Serial1.available())
       Serial.write(Serial1.read());
}

подключение UART роутера (слева) к меге (справа):

VCC - 3.3V

GND - GND

RX - TX1 (18 пин)

TX - RX1 (19 пин)

дальше по следующей инструкции с 4 пункта:

http://forum.tp-linkru.ru/viewtopic.php?p=13086#p13086