• asociación sil
  • estatutos
  • galaecia.net
  • as ondas dos sils
  • foro
  • usuario
Principal

Recuperar una Fonera desde otra Fonera

Chany — Lun, 04/28/2008 - 16:46

Con estos pasos se puede usar el puerto serie de una Fonera para entrar en el RedBoot de otra Fonera para recuperarla o para flashearla, y evitar así construir un adaptador con el chip MAX232 o similar. Vamos a usar dos Foneras 2100. Para la 2200 también se puede hacer, pero habría que tener en cuenta que el orden de los pines del puerto serie es distinto a la hora de construir el cable.

Hace falta:

  1. Una Fonera con OpenWRT y el paquete picocom instalados (ipkg install picocom). Yo usé la versión Kamikaze 7.09 con X-wrt (openwrt-atheros-2.6-vmlinux.lzma y openwrt-atheros-2.6-root.jffs2-64k).
  2. Destornillador pequeño de estrella para abrir las Foneras
  3. Cable de audio de un lector de CD y una aguja
  4. Freifunk Ap51 EasyFlash. Hay una versión traducida al castellano y que teóricamente corrige algunos fallos, pero aún está en fase beta: FonFlasher
  5. Putty u otro programa similar para entrar por SSH o por telnet

Ahora que ya tenemos todo lo que hace falta, empezamos: OpenWRT abre por defecto un terminal en el puerto serie. Hay que desactivarlo para dejar libre el puerto editando el archivo /etc/inittab y borrando o comentando la línea que activa ese terminal. Luego, reiniciarla.

root@OpenWrt:~# vi /etc/inittab
::sysinit:/etc/init.d/rcS S boot
::shutdown:/etc/init.d/rcS K stop
tts/0::askfirst:/bin/ash --login
# ttyS0::askfirst:/bin/ash --login
tty1::askfirst:/bin/ash --login

La parte divertida viene ahora. Hay que modificar un cable de audio de CD para conectar los dos puertos serie de las Foneras. Hay que conectar tierra con tierra, y hacer que la patilla Tx de una coincida con la Rx de la otra.

El resultado final tiene que ser este:

Para cambiar de sitio los cables del conector hay que apretar con una aguja o un clip en la muesca que se ve en la foto y tirar del cable:

Una vez hecho el cable, teniendo encendida la Fonera con OpenWRT y el cable casero conectado sólo a ésta, la otra Fonera apagada, y las dos con un cable de red conectado, escribir:

root@OpenWrt:~# picocom /dev/ttyS0
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

Si se usa otro programa (como minicom o microcom), hay que configurar la conexión por el puerto serie como 9600 8N1 sin control de flujo. Ahora, encender la segunda fonera, esperar un par de segundos y conectar el cable casero (si no, no arrancará correctamente). Si todo va bien, al cabo de un rado veremos la información del RedBoot.

En mi caso, la Fonera se había estropeado al activar la opción JFFS2 del firmware DD-WRT (teóricamente corregido en la v24 RC7), y se había borrado todo el contenido de la memoria flash, así que aparece un mensaje avisando de que hay algún tipo de error en la flash y hay que corregirlo con el comando "fconfig -i", para configurar el arranque. Esto es lo que tendremos que escribir (en negrita):

+**Warning** FLASH configuration checksum error or invalid key
Use 'fconfig -i' to [re]initialize database
PHY ID is 0022:5521
... waiting for BOOTP information
Ethernet eth0: MAC address 00:18:84:1d:1d:20
IP: 192.168.1.104/255.255.255.0, Gateway: 192.168.1.1
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: 0x80000000-0x81000000, [0x80040450-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each.
RedBoot> fconfig -i
Initialize non-volatile configuration - continue (y/n)? y
Run script at boot: true
Boot script:
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.0
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 0x80ff0000-0x81000000 at 0xa87e0000: .
RedBoot>

Una vez hecho esto, ya tenemos acceso otra vez al RedBoot desde el cable red, durante 10 segundos en el arranque y haciendo telnet a 192.168.1.254:9000. Ahora podemos usar otra vez el Freifunk Ap51 EasyFlash para ponerle el firmware que queramos. Recordad que para flashear la Fonera hay gente a la que sólo le funciona con un cable de red cruzado.

AdjuntoTamaño
fonserial.jpg53.68 KB
fonserial_cablecd.jpg37.69 KB
fonserial_conector.jpg40.23 KB
fonserial_pinout_2100.jpg43.73 KB
  • Educación
  • SIL
  • Añadir nuevo comentario

Navegación

  • Inicio
  • Calendario de eventos
  • Contacta con ASIL
  • Blogs
  • Feed aggregator

Enlaces

Humor:

  • Ticket Cero
  • Wardog

Social y Noticias:

  • Radio Lider Salnes
  • Barrapunto


Tira Ecol

continúa...

Barrapunto

  • Un satélite, convertido en basura espacial por una patente
  • Software Libre y Sociedad
  • Disponible Gimp 2.5 para desarrolladores
  • Mark Shuttleworth explica el porqué de Wubi en Ubuntu
  • OpenMac: Clónicos de Mac
more
  • asociación sil
  • estatutos
  • galaecia.net
  • as ondas dos sils
  • foro
  • usuario