martes, 12 de junio de 2012

Actualizando el firmware de un ZyXEL P660HW-T1 v2

Seguro que más de uno ustedes tiene o a tenido en sus manos un router adsl de estos que, en Argentina, provee Telefónica/Speedy. Es un buen equipo y yo particularmente me he encariñado un poco. El principal inconvenientes con el cual nos topamos los inquietos es la imposibilidad de actualizar su firmware.
Todo tiene solución y por supuesto hay una para aquellos que quieran actualizar su equipo. Si tienes un equipo de estos, y es de tu propiedad claro! ( ya que no vamos a alterar el software de un equipo que nos brinda nuestro proveedor en calidad de comodato, como se te ocurre? ) puedo mostrarte como actualizar su firmware a la última versión provista por su fabricante. Solo tienes que seguir leyendo ;)



Actualizar este equipo es altamente recomendable ya que hay equipos con firmwares que datan del 2005/6 y el más reciente liberado por ZyXEL tiene fecha del 2010. Calculo que 4 o 5 años de actualizaciones deberían ser provechosos. En mi caso particular encontré problemas con los clientes de torrent y alguna que otra función que parecía estar "capada" desde el firmware.

"Cualquier error en el siguiente proceso puede dejar tu router inutilizable e incluso dañar tu computadora."

Primero lo primero! Armando el cable de datos. 


Necesitamos un cable para conectarnos al puerto serie interno que tiene el router ya que para realizar el procedimiento es preciso ingresar al "debug mode" del mismo

Hay varias maneras de conseguirlo:

  • Usando un adaptador USB-Serie. (De esos que nos permiten usar un mouse serie en un puerto USB)
  • Un cable de datos de algún celular viejo (Tiene que ser serie y no USB nativo).
  • Fabricándolo siguiendo un esquema eléctrico.
Como me resulta familiar y más entretenida la electrónica utilicé la última opción y este es el circuito que seguí para fabricar el cable:


Para fabricarlo van a ser necesarios los siguientes materiales:
- 4 electrolíticos de 1uF ( C1, C2, C3 y C4 )
- 1 electrolítico de 200uF ( C6 )
- 1 electrolítico de 47uf ( C5 )
- 1 integrado MAX232 ( IC1 )
- 1 regulador de voltaje 78L05 pero mejor usen un 7805 así no calienta tanto :P ( IC2 )
- 1 conector DB9 Hembra
- 1 batería de 9v con su respectivo "chupete".
- Estaño ( muy poco )
- Soldador de no más de 40W
- Placa universal para pruebas ( Esas que tienen muchos agujeros y son todas iguales ). Salvo que se sientan con ganas de hacer un dibujo y su propio PCB.
- Cable para hacer puentes rígido pero no muy grueso.
- 1 Conector de audio de esos que venían con las lectoras de CDs
- Paciencia!
Una variante más cómoda sería reemplazar, si consiguen ( yo no pude ), el MAX232 por un MAX3232. La diferencia sustancial entre estos dos integrados es que el segundo puede alimentarse tanto con 5 como con 3.3v. De esta manera podríamos eliminar el 7805 y sus capacitores y conectar el pin16 directamente a los 3.3v que entrega el router ( Aunque probablemente haya que cambiar la ficha de audio si es que la utilizaron ).

Conectando al puerto serie.


Al retirar la cubierta del equipo observaremos que el mismo posee en la parte superior un conector de pines. Ese es el puerto serie al cual nos conectaremos ( y de donde pueden sacar 3.3v para alimentar el el circuito del cable si consiguieron el MAX3232 ).




Para conectarnos podemos utilizar cualquier programa que maneje conexiones tipo serie como el Hyperterminal que trae Windows ( XP y anteriores ), Putty o, en mi caso, Teraterm. Es cuestión de gustos ya que lo unico que necesitamos es que soporte transferir y recibir archivos mediante el protocolo XModem.


Si todo funciona correctamente deberíamos ver lo siguiente al encender el router. Un vez que comienza a escribir los puntos en pantalla tenemos 3 segundos para presionar una tecla cualquiera e ingresar al "Debug Mode".


Un vez en "Debug Mode" ingresar el siguiente comando:
ATSE
 

Lo siguiente que tenemos que hacer es ingresar a http://www.tonycool.es/zyxel/zynpass.htm?popUpWindow

Tomamos el valor de semilla retornado por ATSE y con el siguiente formulario obtendremos la contraseña que necesitamos para habilitar las instrucciones privilegiadas. Estas instrucciones no se pueden utilizar sin ingresar la contraseña ya que el mal uso de las mismas puede dañar el router.


Lo que hacemos es escribir:

ATEN1,Contraseña
en este caso,
ATEN1,8786C19
Si obtenemos "OK" como respuesta significa que la contraseña es válida.

Descargando la BootBase del Router


Antes de descargar la bootbase debemos verificar en que posición de memoria comienza y cual es su tamaño. No debería cambiar pero no está de más hacer un pequeño chequeo. Más aún, cuando un error en esta parte podría dejar inservible nuestro router.

Para eso ingresamos la siguiente instrucción:
ATMP

Lo que aquí nos interesa son los datos del punto 3.

Lo siguiente que hacemos es ejecutar la instrucción "ATD0 Inicio_BootBase, Tamaño_Bootbase". Para este ejemplo sería:

ATD0 bfc00000, 4000


Inmediatamente después de ejecutar la instrucción, y si todo va bien, el router nos responde con "Starting XMODEM Download". En este momento debemos iniciar la recepción de la bootbase con nuestro programa terminal. En Teraterm debemos ir a File >> Transfer >> XMODEM >> Receive. Seleccionamos la carpeta y el nombre de archivo y listo.


No es necesario hacerlo 2 veces como yo. Simplemente, y como soy medio paranoico, lo baje 2 veces y comparé por contenido para ver si había algún tipo de error. Solo seleccionen la casilla de CRC cuando inician la descarga y con eso ya deberían quedarse tranquilos.

Modificando y subiendo la Nueva BootBase


El próximo paso que debemos realizar es modificar la bootbase descargada con algún editor Hexadecimal. Yo utilicé i.Hex porque lo recomendaban y es gratuito, pero hay muchos y muy buenos editores.


Una vez abierta la bootbase con el editor hexadecimal, debemos desplazarnos al offset 0x3fd8, como puede apreciarse en la siguiente imagen, y editar las posiciones 0x3fd8 y 0x3fd9 con 0x00 y 0x2e respectivamente. Les recomiendo grabar el archivo con otro nombre así nos queda la bootbase original y la modificada .


Ahora debemos subir nuestra bootbase modificada. Para eso ingresamos las siguientes instrucciones:

ATBT1
Con esto le decimos al router que nos de permiso para escribir en los bloques de seguridad.

ATUX0
Luego de ingresar esta instrucción, el router debería contestarnos con "Starting XMODEM Upload". Lo que debemos hacer es iniciar la transferencia yendo a File >> Transfer >> XMODEM >> Send y seleccionando la bootbase modificada. 

No se olviden de tildar la opcíón de CRC.


Cuando se termine de enviar vemos que el router borra y escribe la bootbase. Reiniciamos el equipo y si no somos creyentes, es buen momento para empezar.



Subiendo la ROM y FIRMWARE de ZyXEL


El router inicio correctamente. Genial, vamos bien!

Ahora debemos volver a ingresar al equipo repitiendo los pasos de ATSE y ATEN1 indicados al principio de este artículo. En algunos foros indican como modificar la bootbase para que no debamos ingresar ATSE, calcular la contraseña con la semilla devuelta e ingresar con ATEN1. Pero sinceramente no lo he probado porque, seamos sinceros, ¿cuantas veces pensamos modificar nuestra bootbase?

Llegados a este punto ya tenemos nuestra bootbase modificada y podemos proceder a subirle la ROM y el firmware de ZyXEL. Si no lo han hecho aún, los pueden descargar desde:


Primero subimos la ROM utilizando las siguientes instrucciones:
ATSE
ATEN1, <Contraseña>
ATUR3


Ahora resta subir el firmware...
Subir el firmware a 9600bps es algo que toma mucho tiempo. Yo lo hice de esta manera y demoré al rededor de 35 minutos. 
Si no quieren esperar tanto y se sienten con suerte, pueden ingresar la siguiente instrucción antes de comenzar para así cambiar la velocidad de comunicación a 115000bps.
ATBA5
Una vez hecho esto vuelven al TeraTerm y cambian la velocidad de conexión a 115kbps

Para subir el firmware ingresamos la siguiente instrucción:

ATUR
Como hicimos con la ROM en este punto seleccionamos el firmware y lo enviamos ( No se olviden de tildar CRC). Dependiendo de la velocidad de conexión, esto puede tardar desde unos pocos minutos a mas de media hora.

Luego de recibir y escribir el firmware el router se reinicia.

Si todo salió correctamente, ingresamos al webadmin que, por defecto, se encuentra en http://192.168.1.1 y observamos la lavada de cara que le dimos a nuestro router. Bastante diferente no?


Espero que les haya servido como lo hizo para mi.

Cualquier cosa, no duden en comentar.

Sls.


5 comentarios:

  1. hola mi nombre es javymetal y queria agradecerte por el aporte, quisiera saber si por casualidad tendrias algun tutorial de como ganarle a la mentira del BARCELONA en el PES 2012(ya que esta muy desparejos para los otros equiopos salvo el R.madrid)
    desde ya muchas gracias y ojala puedas alludarme. Te quiero mucho!!

    ResponderEliminar
    Respuestas
    1. Hola javymetal gracias por comentar. Lamentablemente no puedo darte mucho consejo acerca del PES ya que solo se jugar con FCB!

      Eliminar
  2. Una pinturita!!!
    Un amigo me prestó un cable y seguí el tutto como está (solo agregué un atba4 para el up del firmware) y joyita!!!
    ZyXEL actualizado CHAN!

    Ya que estamos... un tutto para WOL?
    ;-)
    Salu2

    ResponderEliminar
  3. Hola, segui todos los pasos pero el ultimo del fireware se travo, y ya no anda, cuando quiero iniciar con el tera term me salen todos simbolos raros, hay forma de revivirlo? muchas gracias

    ResponderEliminar
  4. Se "trabo" cuando estabas enviando el archivo por XMODEM? Si es así, y el módem escribió mal el bootloader estás sonado

    ResponderEliminar