Reparar LINKSYS wrt54g v8 (debrick) con JTAG

Con motivo de este articulo voy a crear una categoría que sea la de reparar cosas que previamente hemos roto por manazas como es el caso de mi router LinkSys wrt54g comprado en un bestbuy de Chicago

En este articulo voy a mostraros como construí mi Cable JTAG (sin buffer) y gracias a la utilidad “EJTAG Debrick Utility v2.1.4-Tornado-MOD” pude flashear el cacharro y subirle correctamente el firmware micro (el wrt54g v8 solo tiene 2Mb de memoria) de dd-wrt.

Vamos a fabricar un cable JTAG sin buffer (Xilinx cable) es el cable mas sencillo y barato de fabricar pero puede no funcionar, ya que debéis hacerlo de menos de 15 cm de longitud.

Lista de la compra:

- 4 Resistencias de 100 Ohm
- 1 Conector DB25 Macho
- 12 (o 14) pines para soldar en placa (dependiendo de tu versión el router puede o no llevar el conector)
- Barato eh? todo esto alrededor de 1€
- Y ademas (opcional de compra, si puedes reutilizar algún cable viejo) un cable plano que tenga un conector de preferiblemente 12 pines, pero si tiene mas con solo usar los 12 que vamos a utiliza nos basta.

A soldar!

Dependiendo de la versión del router linksys wrt54g traerá o no los pines para conectar el cable JTAG. El mío es un v8.0 y no lo lleva a si que hay que soldarlo. Es un poco complicado ya que son unos agujeros pequeños y no tienen mucha superficie al rededor para que pegue el estaño, a mi la primera vez se me despego la mitad de los pines.

Una vez hallamos soldado el conector a la placa es el turno del cable.  Siguiendo este esquema (o el de HairyDairyMaid de mas abajo) soldamos las 4 resistencias a los 4 cables correspondientes que son los que van al 13, al 4, 3 y 2. En el conector corresponden al 3, 5, 7 y 9. Normalmente en los cables planos los conectores si son de dos filas de pines (como el que necesitamos),  los cables pares corresponden con una fila de agujeros y los impares con otra, fijate bien en que sueldas el cable correcto al pin del DB25 correctamente y asegurate con el polimetro (y ya de paso miras la continuidad para que salga bien, que esto es algo delicado).

Esquema de conexion del JTAG a un DB25

Esto con una poca maña que tengáis hasta lo podéis hacer sin pbc, en el aire, si solo es soldar 4 resistencias.

JTAG-LPT mapping
-LPT:13 = JTAG:5
-LPT:4 = JTAG:7
-LPT:3 = JTAG:9
-LPT:2 = JTAG:3
-LPT:18~25 = JTAG:2,4,6,8,10,12

La versión de HairyDairyMaid tiene menos que soldar ya que solo el 25 y el 20 del LPT hay que soldarlos al 6 del JTAG (GND)

Una vez tenemos el cable JTAG soldado pasamos a la zona del software:

Necesitamos la utilidad TJTAGv2 (también puedes bajartela de aquí) (Tornado Debrick Utility). Este programa utilizando nuestro recien creado cable JTAG leera la memoria del router, la identifica, y te da la opcion de borrar y grabar datos en la flash. Nosostro vamos a borrar varias partes, incluido el Kernel para poder subirle nuestro DD-WRT (u otro firmware valido).

Cuando es bajaeis la utilidad TJTAGv2 os recomiendo que la descomprimais en C:\carpeta porque luego hay que ejecutarla a traves de la consola (simbolo del sistema). Inicio > Ejecuta > cmd

En la consola debereis ejecutar varias veces “cd ..” hasta que el promt se situe en C:\ luego con “cd carpeta” cambiais el directorio a la carpeta que creasteis para TJTAGv2 y cuando esteis en la carpeta que de windows (ya que en el zip viene compilado para windows y el source para compilarlo en linux) ejecutas “tjtagv2.exe” y os saldrá algo como esto:

Es la lista de chips soportados por el programa. Este está mas actualizado que la utilidad de HairyDairyMod (creo que TJTAGv2 es una modificacion de la version de HairyDairyMaid) ya que soporta nuevos chipset como el mio.

Mas adelante os saldra la lista de parametros y flags opcionales que se le pueden añadir al programa:

Y mas adelante por si tubierais problemas al detectar vuestro router, la lista de flash soportadas y como indicarselas al programa, esto no lo vamos a ver ni a tocar ya que no es necesario.

Lo primero que vamos a ejecutar es un -probeonly para probar la conexion ok?

tjtagv2.exe -probeonly

Si todo sale bien os dira el modelo de procesador y memoria. Lo siguiente es hacer el backup de toda la flash por seguridad (no se si realmente vale para algo, pero a mi me enseñaron  a hacer backup de todo antes de nada)

tjtagv2.exe -backupwholeflash

Esto tardara un ratillo, a si que podeis levantaros e ir al meodromo, asaltar la nevera o ver algún capitulo de Heidy, El equipo A o los power rangers… lo que mas os guste.

Cuando halla terminado habrá generado un archivo bin en la misma carpeta donde está el ejecutable.

Ahora a flashear!

Siguiendo consejos del propio TJTAGv2 flashearemos solo el NVRAM y probaremos a ver si funciona el TFTP, y si funciona subiremos por ahí la imagen del firmware para que el proceso sea mas rapido ¿mejor no?

tjtagv2.exe -erase:nvram

y después de flashear hacemos ping a ver si revive…

ping -t 192.168.1.1

Es importante poner el “-t” para que el ping no pare hasta que nosotros se lo digamos con “Ctrl+C”

También es importante que nuestra ip sea del rango 192.168.1.x

Si obtenemos respuestas con ping despues de flashear utilizando TFTP subiremos el nuevo firmware (o el viejo si encuentras el original de Linksys pero no tiene mucho sentido hacer esto….)

Ahora copiar el firmware a C:\ o una carpeta en C:\ y en la consola mediante el comando “cd” os poneis en ese directorio y renombrais a algo cortito el nombre del bin (yo creo que a mi me fallo por dejar el nombre superlargo que traia al descargarlo) y ejecutais tftp:

tftp -i 192.168.1.1 PUT kernel.bin

Y una vez termine de subir el kernel esperais a que el router se flashe con la nueva imagen y se reinicie (seguid observando las respuestas de ping) y una vez veais que ha terminado de reiniciarse abrir vuestro navegador favorito (expero que sea firefox) y comprobar que 192.168.1.1 os muestra la pagina de información de DD-WRT (o en caso de otros firmware ver que os pide un login, que será alguna convinación de 1234 o 12345 o admin etc….)

Mas información:
wiki DD-WRT
wiki Open-WRT

- Home -