Cambiar e Firmware de un Linksys al de Linux

El tema de cambiar el firmware del router es un tema bastante particular, de alli que no se termine de aclarar o que no exista una onica manera de hacerlo. Este documento pretende ser una guia para poder cambiar el firmware de nuestro Linksys de una manera relativamente segura, sencilla y eficaz.

AVISO: INSTALAR UN FIRMWARE NO OFICIAL INVALIDA LA GARANTIA

Consideraciones previas

1) Firmware que queremos poner

Hay unas cuantas posibilidades a la hora de ponerle un firmware al Linksys. El archivo tiene que ser un .bin, aunque tambian puede venir comprimido (.zip).
Las opciones que tenemos son las siguientes:

Firmware Linksys
http://www.linksys.com

Este es el firmware original que viene con el router. Hay que tener especial cuidado a la hora de bajarlo, asegurandonos que es el adecuado para nuestro modelo y versión de router. Tambian tener en cuenta que hay distintas versiones para Europa y los Estados Unidos (la versión europea pone "EU" en el nombre).
NOTA: el firmware que figura en la pagina española de Linksys para el WRT54GS v.4 (4.50.9) no funciona. Hay que utilizar el que se da desde la pagina para EEUU, lo que limita el router, quitando dos canales altos.

Alchemy y Talisman, de Sveasoft
http://www.sveasoft.com

Son firmwares basados en el de Linksys. Alchemy fue el primer clon del firmware de Linksys que apareció. Tiene lo que tiene el Linksys mas algunos agregados mas. Cobran $20 anuales por entrar a sus foros para usar el Talisman (el Alchemy es gratuito). Son firmwares muy completos y populares.
El Talisman tiene varias versiones, con distintas prestaciones de acuerdo al uso que queremos darle: Basic, Micro, VPN, Hotspot, Mesh, VoIP y OEM.

DD-WRT, por Brainslayer
http://www.dd-wrt.com

Otro clon del Linksys, basado en el Alchemy de Sveasoft. Es un firmware completo y gratuito, creado por Brainslayer, un programador aleman (recientemente ha comenzado a colaborar con fon).
Tiene distintas versiones para WRT54G y WRT54GS y viene en 3 "sabores": mini, std (completo) y voip.

OpenWRT
http://openwrt.org

Este firmware es completamente distinto a los anteriores. No es un clon del Linksys, es un firmware "vainilla", es decir, viene con lo minimo indispensable y luego el usuario le va instalando paquetes para agregarle funciones. El firmware de fon esta basado en OpenWRT (en el administrador del router esta la lista de paquetes utilizados). Requiere algo de experiencia en Linux por parte del usuario para poder configurarlo a gusto.

Firmware fon
http://es.fon.com

En el caso de que tengamos un router con el firmware original de Linksys o con algon otro firmware, o el router tenga instalado un firmware viejo de fon y queramos actualizarlo podemos emplear este mismo proceso para poner el firmware de fon. Este firmware esta basado en el OpenWRT, con algunas modificaciones sobre todo en la interfaz Web. Hay que tener en cuenta que es un firmware en fase beta, muy lejos de estar completo, y que no tiene todas las funcionalidades que el firmware original del Linksys (u otros firmwares mas completos) ofrecen (como DMZ “zona desmilitarizada- o la posibilidad de abrir puertos con facilidad). De todas maneras, para aquellos que estan acostumbrados al OpenWRT o tengan conocimientos de Linux no es muy complicado agregarle paquetes nuevos para que el router gane nuevas prestaciones. Mi recomendación personal es: si no eres un usuario experimentado, esperar a que salga de beta, ya que se le han encontrado algunos problemas de seguridad que al momento de escribir esta guia todavia no han sido resueltos del todo.

Existen otros firmwares (como el TinyPEAP, que tiene un servidor Radius incorporado), pero no son importantes para el caso. Si quieres experimentar con ellos debes tener conocimientos de Linux y de administración de redes, de lo contrario no son de mucha utilidad para un usuario casual.

Mi recomendación: poner el firmware original o el DD-WRT, que funciona muy bien.

2) Modelo de router

Es muy importante saber exactamente que modelo de router tenemos. Basicamente los modelos de router que se utilizan con fon son 2, el WRT54G (llamado ahora WRT54GL) y el WRT54GS. Ademas hay que observar cuidadosamente la versión del router, que puede ser de la v.1 a la v.4. La versión 5 del WRT54G y del WRT54GS no son compatibles con fon (ni con OpenWRT) ya que no tienen Linux como sistema operativo, por lo que no se utilizan para fon y no se recomiendan para aquellas personas que quieran ugar con su router. El WRT54GL es una copia del WRT54G v.4.

El modelo G v.1 a v.4 y el GS v.4 tienen 4MB de Flash y 16MB de RAM. El GS v.1 a v.3 tiene 8MB de Flash y 32 MB de RAM. El GL, al igual que el G v.4 tiene 4MB de Flash y 16MB de RAM.
Para saber que versión de router tenemos debemos mirar la etiqueta que viene debajo. Tambian es posible saber el modelo a travas del nomero de serie, si es que queremos comprar un router y el modelo no viene especificado en la caja. Esto se puede saber en la pagina de OpenWRT (http://wiki.openwrt.org/OpenWrtDocs/Hardware/Linksys), entrando al modelo de router que queremos adquirir (G/GS/GL).

3) Sistema operativo de nuestra maquina

El sistema operativo que tengamos instalado es muy importante, ya que dependiendo de cual utilicemos la actualización es mas sencilla o mas complicada. Sobre todo por los programas que utilizaremos para acceder al router y por la capacidad de los clientes TFTP de cada sistema.
Si tenemos Windows 2000 o XP utilizaremos el cliente TFTP a travas de un Simbolo del Sistema (emulador de terminal, o lo que antiguamente se utilizaba para acceder a DOS). Tambian es posible usar un cliente TFTP aparte. La desventaja de Windows es que el cliente TFTP no permite el reintento automatico de envio del fichero al router, por lo que debemos sincronizar la operación muy bien para que se pueda cargar el firmware en el router en el momento preciso y sin problemas.
Si tenemos Linux y nuestra distro no tiene instalado un cliente TFTP debemos instalarlo para poder actualizar el firmware (en Ubuntu a travas de Synaptic). Cambiar el firmware a travas de Linux es la manera mas sencilla, por lo que quien no tenga Linux instalado y quiera hacerlo a travas de este sistema puede obtener algon LiveCD de cualquier distro amiga (Knoppix, Ubuntu, etc.) para no tener que instalar el sistema en su maquina.
En un Mac se utiliza el MacTFTP que ya viene instalado, pero como hace bastante tiempo que no hecho mano a un Mac no se que tan dificil puede llegar a ser, aunque no creo que suponga un gran problema (se aceptan reportes de experiencia en Mac).

Actualizar el firmware

El primer paso es obtener el firmware deseado. Una vez que lo hayamos bajado (y descomprimido si es necesario para obtener un fichero .bin) lo guardamos con el nombre code.bin en un directorio al que tengamos facil acceso (una carpeta con un nombre sencillo directamente en el disco duro en Windows o la carpeta de usuario en Linux o Mac, por ejemplo).

Como vamos a tener que reconfigurar parametros de red es importante que contemos con todo lo necesario (ficheros de firmware, programas, etc.) en el mismo ordenador, ya que lo mejor es desconectar el acceso a Internet al actualizar el firmware.

El paso siguiente es conectarse al router (a la dirección actual, que puede ser 192.168.1.1, 192.168.1.2, 192.168.10.1ó 192.168.182.1 en el caso de fon) con un navegador (Explorer, Firefox, Konqueror, etc.), acceder con la cuenta (user=vacio, pass=admin), entrar en la parte de administración del router y activar la opción Boot Wait. Guardar el cambio para que tenga efecto y reiniciar el router.

Este paso es importantisimo. Y recomiendo verificarlo, apagando y encendiendo el router (y reconectandose a al) para verificar que esta opción ha quedado activada. Este parametro es el que nos permitira actualizar el firmware del router incluso si le ponemos un firmware equivocado y el router no responde. Lo que hace esta opción es que durante los primeros 3 segundos luego de encender el router aste espera a ver si recibe un nuevo firmware a travas del servidor TFTP, y luego continua con la carga del firmware que tenga en memoria. Durante esos 3 segundos la dirección del router se revierte a 192.168.1.1 y pasado ese tiempo vuelve a tener la dirección que hayamos especificado en el firmware (fon, por ejemplo viene con la dirección 192.168.182.1).
Es aconsejable antes de realizar cualquier experimento con el router dejar esta opción activada, para poder resucitar el router en caso de error.

Luego desconectamos la red (u otro router que tengamos) y conectamos el router Linksys directamente al ordenador por cable, poniendo un extremo de un cable de red (no cruzado) desde la red Ethernet del ordenador a la boca 1 del router Linksys.
ATENCION: nunca actualizar el firmware del router a travas de WiFi. Las conexiones WiFi pueden interrumpirse por diversos motivos y podriamos dejar el router inutilizable.

A continuación deshabilitamos el firewall si tenemos uno instalado en nuestro ordenador. Si querais, y es recomendable, podais deshabilitar tambian el antivirus, para que no moleste ni corte la carga del firmware al router. Y por supuesto, cuantos menos programas tengamos ejecutandose en el ordenador, mas seguro es el proceso, por lo que se recomienda cerrar todos los programas que no sean necesarios.

Lo siguiente es reconfigurar la red y la tarjeta de red. Cuando actualicemos el firmware el router va a tener la dirección 192.168.1.1 (al menos durante 3 segundos), por lo que debemos asignar una IP fija a nuestro ordenador dentro del rango 192.168.1.2 al 192.168.1.254. La mascara de subred debe ser 255.255.255.0 y la puerta de enlace 192.168.1.1 (el mismo router). Ningon otro dispositivo de red debe tener asignada la dirección 192.168.1.1.

Tambian debemos configurar la tarjeta para que la velocidad no sea superior a la de 10 BaseT y dejar activado el modo duplex.

Windows: Conexiones de Red > Propiedades > Configurar > Opciones Avanzadas > Tipo de conexión (o Propiedades > Link Speed/Duplex mode). Marcamos 10 BaseT doplex media (o 10 Full Mode) y damos a
Mac: Preferencias de sistema > Red > Configuración: Manual (Avanzada), Velocidad: 10 BaseT/UTP, Duplex: Full Duplex.

Linux: Marcar los valores desde la Administración de Red.

Una vez que ya tenemos el router conectado por cable y los IPs asignados y tenemos el firmware listo en un directorio accesible y la opción de Boot Wait activada ya estamos listos para cambiar el firmware del Linksys.

El procedimiento basico para actualizar el firmware por TFTP es el siguiente:

1. Desconectar la energia del router
2. Abrir el cliente de TFTP
3. Poner la dirección del router (192.168.1.1) en el cliente
4. Poner el modo en octet (binary)
5. Indicar al cliente (si es posible) que continoe enviando el fichero hasta que tenga axito
6. Enviar el firmware
7. Conectar el router (en algon caso con el botón de Reset presionado) mientras el cliente TFTP ejecuta el comando constantemente (o hacerlo de manera sincronizada con el cliente TFTP).
8. El cliente TFTP recibira un comando del router y comenzara a enviar el firmware.

Una vez que haya subido el fichero al router comenzara el booteo. Se debe esperar a que esto termine (el router, en la mayoria de los casos se reiniciara) y a partir de ese momento ya podemos acceder via Web al router. Si pasados 5 minutos no vemos cambio en el router podemos apagarlo y encenderlo.

De todas maneras, cada sistema operativo tiene su particularidad, por lo que paso a detallar el procedimiento en las distintas plataformas.

Linux

La actualización en Linux es muy sencilla. Pero antes que nada debemos verificar que tenemos instalado el cliente de TFTP. Una vez que hemos verificado esto (y hemos instalado el cliente si fuera necesario) podemos comenzar el proceso. Las instrucciones que doy las he probado en Ubuntu, pero deberian funcionar en otras distros.
Siempre y cuando tengamos en nuestra carpeta de usuario el firmware renombrado a code.bin, abrimos una ventana de terminal y ponemos lo siguiente:

Código:

tftp 192.168.1.1
tftp> binary
tftp> rexmt 1
tftp> timeout 60
tftp> trace
Packet tracing on.
tftp> put code.bin

Y le damos a [Enter].

Enseguida conectamos el router manteniendo presionado el botón de Reset hasta que comience a enviar el fichero (una vez que envia el fichero podemos soltar el Reset). Esperamos que actualice el firmware y que reinicie y ya podemos acceder a travas de la Web a nuestro router con su nuevo firmware (la dirección sera 192.168.1.1).

Windows

Cambiar el firmware en Windows es un poco mas complejo que en Linux. Por un lado el cliente TFTP no tiene la opción de reintentar el envio del fichero, por lo que debemos sincronizar el comando con el momento en que el router acepta el fichero. Por otro lado Windows autodetecta las redes y apaga la red si el dispositivo no esta encendido, con lo que se produce un retraso entre que detecta el router y nos hace disponible la red para poder enviar el fichero, retraso que puede hacer que la sincronización entre el envio y el bootloader del router sea una empresa muy dificil de conseguir.
Para esto hay dos soluciones: por un lado hacer un ping constante al router para saber cuando es el momento adecuado para enviar el fichero. Por otro utilizar un hub o switch para que Windows no baje la red y no se produzca en retraso entre que encendemos el router y podemos enviarle el firmware.

Las siguientes instrucciones fueron sacadas del sitio de OpenWRT.

- Abrir dos Simbolo del Sistema (Inicio y [Enter]
- En una de las ventanas poner ping -t 192.168.1 y presionar [Enter]
- Comenzara a intentar conectarse con el router. Mantener este proceso ejecutandose.
- En la otra ventana preparar el comando para subir el firmware escribiendo 192.168.1.1 put code.pero NO PRESIONAR [ENTER]
- Conectar el router (si no funciona solo probar con Reset presionado)
- En la ventana del ping comenzara a decir Hardware
- Volver a la ventana tftp. En cuanto el ping vuelva a responder presionar [Enter] en la ventana del tftp
- La imagen deberia comenzar a cargar sin moltiples intentos
- Si el ping comienza a dar Hardware Error y, luego responde y luego vuelve a dar Hardware por un breve momento has esperado demasiado. (Vuelve a intentar todo el proceso)

Errores de TFTP

En algunos casos el firmware no carga y el tftp nos reporta un error. Aqui dejo los que pueden aparecer:

Code pattern is incorrect: El firmware que intentas cargar no es para ese modelo. Buscar el correcto o probar con otro (este es el mensaje que da el firmware en español para el WRT54GS v.4)

Invalid Password: El firmware del router ya ha cargado y el estas intentado conectarte a un servidor protegido por contraseña del firmware, no el del bootloader que es el que permite cambiar el firmware. Volver a intentar tratando de ser mas preciso con la coordinación.

Timeout: El ping para verificar el router esta online. Probar con un cliente de TFTP distinto. (Algunos no funcionan correctamente.

CONCLUSION

Siguiendo este matodo (y especialmente si utilizamos Linux) es muy sencillo cambiar el firmware del router.
Tomando las precauciones necesarias es poco probable que cometamos un error y dejemos el router inservible.
Si encontrais algon error u otro tipo de cambio no dudais en poneros en contacto conmigo.

Datos personales