miércoles, febrero 10, 2010

Reparando un router wireless WRT54G

Cuando un amigo del trabajo me comentó que su router (enrutador de paquetes casero, wireless), dejó de funcionar pensé que sería buena idea ofrecerme para revisarlo y ver si podía hacer algo mágico ;)

Se trata de este router


Todo estaba impecable, menos de un año de uso y sin embargo el aparatito le dejó de funcionar, que raro es todo...

Mi amigo me cuenta que intentó seguir una guía de internet haciendo un corto en los pines de la memoria flash, dudando del método reviso el datasheet (modelo MBM29LV160) y parece que fuera correcto, aunque ello no solucionó el problema.

Esto versa en el datasheet
The MBM29LV160T/B also has a hardware RESET pin. When this pin is driven low, execution of any Embedded
Program Algorithm or Embedded Erase Algorithm is terminated. The internal state machine is then reset to the
read mode. The RESET pin may be tied to the system reset circuitry. Therefore, if a system reset occurs during
the Embedded Program Algorithm or Embedded Erase Algorithm, the device is automatically reset to the read
mode and will have erroneous data stored in the address locations being programmed or erased. These locations
need re-writing after the Reset. Resetting the device enables the system’s microprocessor to read the boot-up
firmware from the Flash memory.



Es decir, hay que seguir investigando, entonces procedo a abrir el aparato y veo que los pines sufrieron bastante daño con el método de "pinchar cablecitos".


Luego de leer, estudiar, leer y luego leer más las siguientes páginas:
http://www.dd-wrt.com/wiki/index.php/JTAG
http://www.dd-wrt.com/wiki/index.php/Recover_from_a_Bad_Flash
http://www.tiaowiki.com/w/Debrick_Routers_Using_JTAG_Cable
https://www.underground.org.mx/index.php?topic=23308.0

Decido que voy a intentar con el armado del cable JTAG, tomar una vieja PC pentium IV con puerto paralelo y SO ubuntu, recompilar el programa de HairyDairyMaid (aka lightbulb), etc

Pero primero lo primero, soldar los pines la placa para el conector JTAG


Luego armar el conector con las instrucciones de lightbulb


Luego de realizar un backup de toda la memoria flash tuve que actualizar todos los bloques
CFE (actualizando la MAC address)
KERNEL(le puse un DD-WRT ya que el de linksys no funcionaba)
NVRAM (la borré directamente)




Pero, nada de todo esto funcionaba hasta darme cuenta que el router no asignaba la IP a mi pc, entonces la establecí de forma fija:
IP: 192.168.1.2
MASK: 255.255.255.0
GW: 192.168.1.1

El router se conectó correctamente, acto seguido con el utilitario tftp

tftp 192.168.1.1
bin
put dd-wrt.bin

Luego de unos minutos el router salió funcionando con el nuevo kernel, mi amigo se salvó de pagar uno nuevo y a mi me salió otra cana.



Importante:
Esta no es una guía para hacer un "debrick" o recuperar un router, consultar a las páginas mencionadas.
Cualquier acción incorrecta sin conocimiento necesario puede dejar vuestro router inutilizable.