Usar una fonera para desbrickear otra fonera
Miércoles, Marzo 26th, 2008Por una de esas cosas de la vida el otro día me encontré con una fonera muerta en mis manos y sin mis herramientas/utensilios/materiales/ vacaciones_de_las_tiendas/conocimientos_de_electrónica_necesarios, pero con otra fonera en perfecto estado de funcionamiento, así que con un poco de paciencia, algunas ideas de karman y algo de tozudez conseguí volver a la vida la fonera muerta usando el puerto de serie de la otra.
El proceso no es muy complicado y únicamente necesitamos las dos foneras y 3 cables para poder conectar los pines de las foneras.
Después de seguir el proceso del HOWTO fonera serial port y siguiendo las especificaciones del pinout ( extraido de aquí ) es:

el cable rojo es 3,3V
el cable azul es masa (gnd)
el cable blanco es recepción (rx)
y el cable naranja es transmisión (tx)
por lo que tendremos que conectar los tres cables entre ellas así:
FONERA LIBERADA FONERA BRICKEADA
------------------ * * ------------------ * *
| | 1 * | | 2 *
| CHIP RAM | 2 * | CHIP RAM | 1 *
| | * * | | * *
------------------ 3 * ------------------ 3 *
Para acceder a la fonera brickeada el orden será el siguiente:
1.- Conectamos los cables 1 y 2 en los dos lados y el 3 sólo en la parte de la fonera liberada.
2.- Encendemos la fonera liberada con el firmware que hemos compilado antes para que nos deje libre el puerto serie.
3.- Accedemos a la fonera liberada por ssh y lanzamos cualquiera de los clientes de terminal que tenemos instalados. ( Con minicom NO he conseguido enviar el break para evitar que el redboot no ejecute el script de arranque y con microcom tampoco con el único es con el picocom).
4.- Encendemos la fonera brickeada.
5.- Pasados un par de segundos conectamos el cable 3.
6.- Esperamos y nos apareceran diversos mensajes si están bien conectados los cables hasta que aparecere redboot y ya podemos mandar el ctrl + c que nos pide para interrumpir la ejecución. Si no nos salen los mensajes de manera entendible alguno de los cables no esta bien conectado y tenemos que revisarlos, en caso que pase un minuto y no hayamos recibido nada apagamos la fonera brickeada, comprobamos los cables y volvemos al paso 4.
Y si lo hemos hecho todo bien (y estamos usando picocom) veremos una salida algo como esto:
root@OpenWrt:~# picocom /dev/ttyS0
picocom v1.4
port is : /dev/ttyS0
flowcontrol : none
baudrate is : 9600
parity is : none
databits are : 8
escape is : C-a
noinit is : no
noreset is : no
nolock is : no
send_cmd is : ascii_xfr -s -v -l10
receive_cmd is : rz -vv
Terminal ready
+PHY ID is 0022:5521
Ethernet eth0: MAC address 00:18:84:15:cd:e4
IP: 0.0.0.0/255.255.255.255, Gateway: 0.0.0.0
Default server: 0.0.0.0
RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version v1.3.0 - built 16:57:58, Aug 7 2006
Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.
Board: ap51
RAM: 0×80000000-0×81000000, [0×80040450-0×80fe1000] available
FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0×00010000 bytes each.
== Executing boot script in 1.000 seconds - enter ^C to abort
^C
RedBoot>
Cuando tengamos el redboot para no tener que repetir cada vez esto lo mejor es usar el comando
en la consola y activaremos el redboot por la interfaz de red y aumentaremos el tiempo de espera, dejando el script de arranque sin modificar de la siguiente forma:
fconfig
RedBoot> fconfig
Run script at boot: true
Boot script:
.. fis load -l vmlinux.bin.l7
.. exec
Enter script, terminate with empty line
>> fis load -l vmlinux.bin.l7
>> exec
>>
Boot script timeout (1000ms resolution): 10
Use BOOTP for network configuration: false
Gateway IP address:
Local IP address: 192.168.1.254
Local IP address mask: 255.255.255.255
Default server IP address:
Console baud rate: 9600
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Update RedBoot non-volatile configuration - continue (y/n)? y
… Erase from 0xa87e0000-0xa87f0000: .
… Program from 0×80ff0000-0×81000000 at 0xa87e0000: .
RedBoot>
Con lo que configuraríamos el redboot que escuche en la interfaz de red en la ip 192.168.1.254 y espere 10 segundos antes de ejecutar el script de inicio ( uso los mismos datos que tiene la imágen de la particion del redboot que hay colgada en diversos sitios de internet).
Y ya tenemos nuestra fonera que la podemos jugar con nuestra fonera sin miedo a romperla y sin tener que mover el mundo para arreglarla.
Dejo unas fotos y acabo hasta el próximo día que tenga que escribir algo.
PD. ODIO el tratamiento de wordpress de los tabuladores y espacios.
