OpenWrt en routers Conceptronic C54APRA, D-Link G604T, D-Link G624T | Algo de Linux

martes, 26 de enero de 2010

OpenWrt en routers Conceptronic C54APRA, D-Link G604T, D-Link G624T

Como ya comenté en algún artículo anterior, tengo un router Conceptronic C54APRA al que le puse el firmware del Dlink G604T y posteriormente pasé a Dlink G624T con el firmware V3.02B01T02.EU-A.20061124.

Después lo actualicé a la V310B01T02.EU-A20070613, simplemente por tener una versión más nueva del sistema, pero no me gustó porque perdía ciertas posibilidades como, por ejemplo, WDS, así que volví a dejarle el firmware V3.02B01T02.EU-A.20061124 del Dlink G624T.

La última prueba que he hecho con él ha sido esta semana, actualizándolo con la versión 8.09.2 del firmware kamikaze OpenWrt para dispositivos ar7.
Decir que me ha gustado mucho las posibilidades que ofrece este firmware, pero, después de probarlo, he vuelto a colocar el firmware anterior porque el kamikaze no tenía soporte para WPA.

Explico cómo he colocado este firmware por si en algún momento me interesara volver a hacerlo o por si a alguien le sirviera mi experiencia. En cualquier caso, me he basado en las instrucciones de oldwiki de OpenWrt.

Estos routers tienen un chip AR7 de Texas Instruments. Este chip contiene un bootloader llamado ADAM2 que ofrece soporte para:
  • La consola serie TI AR7 (16c550 compatible).
  • El driver TI Ethernet.
  • TCP/IP.
  • Cliente DHCP.
  • Servidor FTP.
  • Y FLASH memory writer/eraser.
ADAM2 se encuentra en la partición FLASH mtd2.

Este bootloader nos es muy útil para poder flashear el router con firmwares alternativos al original como kamikaze, o, por ejemplo, para recuperar nuestro router tras un mal flasheo.

Lo primero que tenemos que hacer es averiguar la dirección IP de ADAM2. Podemos hacerlo, conectándonos vía telnet a nuestro router con el firmware que tengamos antes de cambiarlo. Por ejemplo, suponiendo que la dirección IP de nuestro router es 172.22.65.1, ejecutamos en un terminal:

$ telnet 172.22.65.1

Veremos una salida similar a la siguiente:

Trying 172.22.65.1...
Connected to 172.22.65.1.
Escape character is '^]'.

BusyBox on (none) login:


Donde nos pide el login. Introduciremos root y nos pedirá el password de administrador. Introduciremos el password de administrador que tengamos en nuestro router.
Una vez introducido, ya estamos dentro del router:

BusyBox v0.61.pre (2007.04.13-08:29+0000) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

#


Ejecutaremos la siguiente combinación de comandos:

# cat /proc/ticfg/env | grep my_ipaddress

Y el router nos devolverá la IP de ADAM2. Mi router tiene la 192.168.1.199. Esa es la dirección que tendré que usar cuando el router se está iniciando para acceder al bootloader.

No voy a entrar en detalles muy concretos, pero, en resumen, lo que tenemos que hacer es configurar el mapeado de mtd1 y flashear el firmware sobre mtd1 vía FTP.

Así que. ahora que sabemos que nuestra IP es la 192.168.1.199, reiniciaremos el router y haremos un telnet a nuestra IP en el puerto 21, ejecutando el siguiente comando en consola, lo más pronto que podamos (puesto que queremos que el telnet se conecte al bootloader, que se ejecuta en el inicio del router):

$ telnet 192.168.1.199 21

Veremos algo como lo siguiente:

Trying 192.168.1.199...
Connected to 192.168.1.199.
Escape character is '^]'.

220 ADAM2 FTP Server ready.

Si no lo vemos es porque hemos tardado mucho en ejecutar el comando, tras reiniciar el router. Así que tendremos que volver a reiniciarlo y ejecutar de nuevo el comando lo más pronto que podamos.

Para conectarnos a ADAM2, tendremos que introducir un nombre de usuario (adam2) y un password (adam2). Así que, escribiremos lo siguiente en la consola de telnet que tenemos abierta:

USER adam2

Nos mostrará un mensaje similar al siguiente:

331 Password required for adam2

Introduciremos el password (adam2), mediante el comando PASS:

PASS adam2

Nos mostrará un mensaje similar al siguiente:

User adam2 successfully logged in.

Lo que nos confirma que estamos logueados con el usuario adam2.

Bien, pues ahora que estamos logueados, lo siguiente que haremos será ver cómo están mapeadas las variables mtd1, mtd2, mtd3 y mtd4. Para ello ejecutaremos comandos GETENV con cada una de las variables:

GETENV mtd0
mtd0 0x900a1000,0x903f0000
200 GETENV command successful
GETENV mtd1
mtd1 0x90010090,0x900a1000
200 GETENV command successful
GETENV mtd2
mtd2 0x90000000,0x90010000
200 GETENV command successful
GETENV mtd3
mtd3 0x903f0000,0x90400000
200 GETENV command successful
GETENV mtd4
mtd4 0x90010000,0x903f0000
200 GETENV command successful


Como podemos ver, cada vez que ejecutamos un comando GETENV, obtenemos el direccionamiento asociado a la variable que consultamos. Y la salida de cada GETENV debería devolvernos los valores que mostramos anteriormente. Debemos asegurarnos de que el mapeo de direcciones de nuestro router coincide con el mostrado arriba.

Como coinciden, para poder cambiar el firmware, lo que vamos a hacer es cambiar el mapeo de mtd1 a 0x90010000,0x903f0000. Para ello usamos el comando SETENV:

SETENV mtd1,0x90010000,0x903f0000


Al ejecutar el comando recibiremos un mensaje informándonos de que se ha ejecutado correctamente:

200 GETENV command successful

Por tanto, ahora que ya hemos cambiado el direccionamiento, salimos:

QUIT

Con lo que acabamos de hacer, ya podemos flashear nuestro router vía ftp. Así que descargamos el firmware: 8.09.2 (el último disponible a día de hoy).

Para flashearlo, no sé por qué, hay que utilizar el cliente ftp de windows. He intentado hacerlo varias veces desde linux, pero, por alguna razón, la comunicación se cuelga y no finaliza.

Así que, buscamos un windows, conectamos el router y abrimos un terminal de comandos con cmd.

Una vez que tenemos el terminal de comandos abierto, hacemos ftp a la direccón adam2 de nuestro router:

ftp 192.168.1.199

El router nos mostrará un mensaje y nos perguntará un usuario y una password. Introduciremos adam2 como usuario y como password:

Connected to c54apra (192.168.199.1).
220 ADAM2 FTP Server ready.
Name (192.168.1.1:user): adam2
530 Please login with USER and PASS.
SSL not available
331 Password required for adam2.
Password: adam2


Y veremos un mensaje en el que nos dice que el usuario adam2 se ha logueado correctamente:

230 User adam2 successfully logged in.
ftp>


En el prompt de ftp establecemos el modo de transferencia binario e indicamos, por decirlo de algún modo, que vamos a flashear:


ftp> binary
ftp> quote MEDIA FLSH


El siguiente paso, será transferir el archivo:

put "openwrt-ar7-squashfs.bin" "openwrt-ar7-squashfs.bin mtd1"


Tardará un poquito en flashearlo, pero no demasiado. Una vez que termine, veremos de nuevo el prompt de ftp:

ftp>

Reiniciamos el router:

ftp>quote REBOOT

Y salimos de ftp:

ftp>QUIT

Y listo. Ya tendremos nuestro router funcionando con OpenWRT.

11 comentarios:

Musutruke dijo...

He seguido los pasos y accedo al ftp de adam2, pero luego siempre da error al cargar el fichero de firmware ????????????
me parece que he hecho un brick

Musutruke dijo...

He hecho todo el proceso y ha ido bien, luego he entrado con:

ftp 192.168.1.199
Connected to c54apra (192.168.199.1).
220 ADAM2 FTP Server ready.
Name (192.168.1.1:user): adam2
530 Please login with USER and PASS.
SSL not available
331 Password required for adam2.
Password: adam2
230 User adam2 successfully logged in.

ftp> binary
ftp> quote MEDIA FLSH


hasta aqui todo ok
pero cuando hago esto
put "openwrt-ar7-squashfs.bin" "openwrt-ar7-squashfs.bin mtd1"
se produce error

Esteban M. Navas dijo...

¿Con qué estás haciendo el ftp? ¿Con linux o con windows?

Como comentaba en el artículo, intenté hacer varias veces el ftp desde linux, pero, por alguna razón, la comunicación se colgaba y no finalizaba. Una vez le dejé más de una hora y nada.

Así que, busqué un windows, conecté el router, abrí un terminal de comandos con cmd y ejecuté el flasheo desde allí sin problemas. Además tardó muy poco.

No creo que lo brickees. Teniendo adam2 me parece imposible.
Yo intenté flashearlo desde linux unas cuantas veces, después conseguí hacerlo desde un windows y pude volver a restaurar el sistema original para probar otra cosa sin problemas.

Tampopo dijo...

He probado a instalarlo en un D-Link G624T. Todo bien, subo por FTP openwrt-ar7-squashfs.bin y reinicio. Pero el router se queda pillado y sigue adam2 escuchando en 192.168.0.199. No veo que intente arrancar el router.

Anónimo dijo...

Hace unos días actualicé mi C54APRA2+ a openWRT, y aunque he conseguido configurar el ADSL, lo único que no me funciona es la WIFI.

Me gustaría volver al firmware anterior, ¿cómo lo has conseguido?

Muchas gracias.

Esteban M. Navas dijo...

Lo hice usando adam2. Es más o menos así: Te conectas al router haciendo ftp a adam2 y cambiar el firmware de la misma forma que pusiste openwrt openwrt-ar7-squashfs.bin, sólo que en lugar de usar ese firmware, utilizas uno que te descargues desde la web de Dlink, o el que tenías. Por ejemplo:

ftp> quote MEDIA FLSH
ftp> bin
ftp> put DLinkEU-A_DSL-G624T_singleimage_kernel_fs_V3.02B01T02.EU-A.20070413 "DLinkEU-A_DSL-G624T_singleimage_kernel_fs_V3.02B01T02.EU-A.20070413 mtd1"
ftp> quote REBOOT

Antonio dijo...

He seguido todos los pasos tal cual los explicas, para un D-Link DSL-G624T. He instalado el firmware de openWRT perfectamente. Gracias por tu ayuda.

Vicent dijo...

hola , lo estoy intentando con un D-Link DSL-G624T y todo perfecto asta despues de cambiar el mapeo de mtd1 , despues de hacer esto no me deja entrar por ftp ni por telnet :(,teneis alguna idea de lo que puedo hacer?

Anónimo dijo...

Hola, he seguido tus pasos para instalar el nuevo firmware, pero tengo una duda. Estoy compilando la version 10.03 de backfire pero
he quedado estancado (la verdad no tengo ni idea) con la opcion de target system y target profile. Indagando he visto que el router un C54APRA tiene una wifi alpha wmp-g04 con un chip TNETW1130GVF pero entre las opciones que me da no encuentro ninguna que sea similar. Cual deberia poner?

Anónimo dijo...

Aqui tiene la ultima ya compilada paara ar7 pero no va muy fina, este hardware es bastante malo.

Anónimo dijo...

http://downloads.openwrt.org/snapshots/backfire/10.03.1-RC5-testing/ar7/

Se olvido el link,