Buenas, en concreto el router es un arv7518pw. La cuestión es que en todas las fuentes que leo (vuestros hilos, wiki oficial de openwrt y diversos blogs) se menciona que, antes de cambiar el bootloader de Arcadyan para instalar Openwrt , se ha de hacer convenientemente un backup de todo el router con herramientas como brndumper (o bien solo de los ajustes de calibración del wifi, que son 64 kb). Pues bien, yo tengo esos backups hechos y me gustaría saber cómo cargar el backup de toda la memoria (8,4 MB) en el router para devolverlo al estado de antes de instalar el nuevo bootloader (u-boot). La verdad es que desconozco totalmente cómo hacer esto y no he conseguido encontrar nada relacionado en el foro o la web.
Por otro lado quiero aportar algo, sobre todo para aquellos amantes de la electrónica que dispongáis de las famosas placas arduino. Se trata de convertir una de estas placas en un conversor de USB a serial para configurar así nuestro router. El procedimiento es muy simple:
- Primero hemos de "cancelar" nuestro circuito integrado, en arduino uno y en mi caso es un atmel atmega 328p. Para ello podemos o bien extraerlo del zócalo o más facil, puentear, unir con un cable el pin de RESET con uno de tierra. Este último método es equivalente a extraer el circuito integrado.
- A continuación con unos jumpers, los típicos de protoboard haremos la conexión tal que:
El pin TX va al TX de vuestro router
El pin RX va al RX de vuestro router
Un ground va para vuestro router
Y si es necesario podéis aportar también unos 3.3 voltios que suministra arduino.
He de aclarar que este es el tinglado que me ha permitido el ahorrar tener que comprarme un conversor de USB a serial. De todo esto extraemos que siempre viene bien tener un arduino a mano!.(http://i62.tinypic.com/zqurd.jpg)
tftp 0x80100000 backup.bin
protect off all
era 0xb0000000 +${filesize}
cp.b 0x80100000 0xB0000000 ${filesize}
Muchas gracias por tu respuesta, digna de conservarla. El problema que tengo es que estoy usando el bootloader de scienti (el que en el serial sale ARV4518 =>) el cual no tiene ni httpd ni tftp, disponiendo sin embargo de loady y loadb. Por otro lado también me parece que he planteado una medida muy drástica: Mi objetivo era digamos empezar de cero porque he instalado un openwrt que no me funciona correctamente (no guarda la configuración después de un ciclo de encendido, ¿tendrá algo que ver un error que me sale Too few erase blocks?). Realmente todo esto lo podría evitar si existe algún modo de sustituir mi openwrt por otro, ¿es eso posible?.
Saludos.
*Edito con una duda: Si la RAM empieza en 0x80000000, ¿Por qué se sube el archivo a esta en la dirección 0x80100000?. Por otro lado me gustaría confirmar si la RAM acaba donde empieza la flash.
loady 0x80500000 openwrt.bin
protect off all
era ${kernel_addr} +${filesize}
cp.b 0x80500000 ${kernel_addr} ${filesize}
Muchas gracias por tu respuesta, brillante. Todo los problemas que tengo vienen a raíz de que mi versión no tiene LuCi y se lo quiero instalar, pero para ello necesita una conexión a internet. Para proporcionar dicha conexión conecto mi astoria al Livebox 2 mediante cable LAN, no recibiendo así conexión ya que ambos routers usan la misma IP (192.168.1.1). De forma que intento cambiarle la IP al router con Openwrt y tras reiniciarlo para aplicar configuración vuelve a los valores anteriores, es como si la configuración se guardara en un archivo temporal. Es por que eso quiero volver a flashear Openwrt. Con esta respuesta me he puesto a investigar y me surgen otras dudas:
- ¿Cómo sé dónde acaba el espacio de RAM que usa el bootloader? ¿Ha este de usar su espacio desde el principio de la memoria? (por la cosa de que es el primer software que se ejecuta al encender el router)
- ¿Tiene el kernel que empezar necesariamente justo donde lo hace la partición mtd2 (la de linux), o puede hacerlo un poco después?
En cualquier caso y para aclarar adjunto la tabla de la flashlayout de la wiki de openwrt
(http://i57.tinypic.com/dfipf4.png)
Espero que me confirmes si estoy en lo cierto al enunciar que la RAM efectivamente sí tiene una dirección de inicio anterior a la flash.
Para acabar, también me gustaría añadir que nunca antes había trabajado a este nivel "tan bajo" con el hardware (en arduino realmente el nivel me da sensación de no ser muy bajo ya que los programas se escriben en el IDE) y me está pareciendo muy interesante, ya que al usar lenguajes de programación de alto nivel (programación web: html, css, php, javascript ...etc.) no le he solido prestar atención al hardware. Saludos!
*Edito!: Ya he hecho el printenv y efectivamente el kernel comienza justo donde empieza la partición mtd2.
Espero que me confirmes si estoy en lo cierto al enunciar que la RAM efectivamente sí tiene una dirección de inicio anterior a la flash.
- ¿Cómo sé dónde acaba el espacio de RAM que usa el bootloader? ¿Ha este de usar su espacio desde el principio de la memoria? (por la cosa de que es el primer software que se ejecuta al encender el router)
- ¿Tiene el kernel que empezar necesariamente justo donde lo hace la partición mtd2 (la de linux), o puede hacerlo un poco después?
mtd -r openwrt.bin linux
config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'
config interface 'lan'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.2.1'
option gateway '192.168.1.1'
option dns '8.8.8.8 8.8.4.4'
option netmask '255.255.255.0'
option ifname 'eth0.1'
config switch
option name 'eth0'
option reset '1'
option enable_vlan '1'
config switch_vlan
option device 'eth0'
option vlan '1'
option ports '0t 2 3 4 5'
config adsl-device 'adsl'
option fwannex 'a'
option annex 'a2p'
config atm-bridge 'atm'
option unit '0'
option vpi '1'
option vci '32'
option encaps 'llc'
option payload 'bridged'
config interface 'wan'
option ifname 'nas0'
option username 'foo'
option password 'bar'
option proto 'static'
option ipaddr '192.168.1.125'
option netmask '255.255.255.0'
option gateway '192.168.1.1'
option dns '8.8.8.8 8.8.4.4'