Admin Libre - Administración de sistemas y redes

OpenWrt en TD-W8970
Por Francisco Gaitán el 1 de Abril de 2022

En este tutorial voy a instalar OpenWrt en un TP Link TD-WR8970 v1.2 usando el método del archivo de configuración ya que el método de asignarle como SSID `telnetd -p 1023 -l login` no funcionó con la versión del firmware que usa el router.

Este modelo de router sólo es compatible con OpenWrt en las versiones v1 y v1.2 ya que las versiones posteriores usan los infames chips de Broadcom.

Referencias

Procedimiento

Enciendo el router con el botón reset pulsado durante unos 20 segundos. Luego accedo al mismo a través de http://192.168.1.1 (usuario y contraseña admin / admin) y descargo una copia de seguridad de la configuración.

Después convierto ese archivo binario de configuración a XML con la herramienta tpconf_bin_xml, lo abro con el editor de texto y después de la línea correspondiente a SerialNumber inserto esta:

<Description val="TD-W8970 v1`telnetd -p 1023 -l login`" />

Una vez modificado el archivo XML lo convierto a binario con la misma herramienta y lo cargo desde la página del router. Éste reiniciará, y cuando arranque dará un login al hacer telnet al puerto 1023:

$ telnet 192.168.1.1 1023
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is \'^]\'.
TD-W8970 login: 

El login es admin / 1234.

Preparando la imagen de OpenWrt para grabar

Partiré de una instalación inicial de OpenWrt 15 desde la cual actualizaré a OpenWrt 21.0.2. Hay que crear dos imágenes que van en distintas particiones del router:

$ dd if=openwrt-15.05.1-lantiq-xrx200-TDW8970-sysupgrade.image of=openwrt-15.05.1-lantiq-xrx200-TDW8970-sysupgrade-1.image bs=1310720 skip=1

Ahora hay que rellenar la imagen -sysupgrade-1.image de caracteres 0xFF hasta llegar al tamaño de la partición /dev/mtd2 que en este modelo en concreto es de 6684672 bytes, para lo cual creo primero un archivo de ese tamaño lleno de 0xFF y luego escribo al principio el archivo -sysupgrade-1.image:

$ dd if=/dev/zero ibs=1 count=6684672 | tr "\000" "\377" >padded.bin
6684672+0 records in
13056+0 records out
6684672 bytes transferred in 9.882 secs (676401 bytes/sec)
$ dd if=openwrt-15.05.1-lantiq-xrx200-TDW8970-sysupgrade-1.image of=padded.bin conv=notrunc
5632+1 records in
5632+1 records out
2883588 bytes transferred in 0.028 secs (102424890 bytes/sec)

Grabando las imágenes en el router

  • openwrt-15.05.1-lantiq-xrx200-TDW8970-sysupgrade.image va a /dev/mtdblock1
  • padded.bin va a /dev/mtdblock2

Grabo ambos ficheros a un pendrive formateado con FAT16 o FAT32, que al conectar al router aparece montado en el directorio /var/usbdisk/sda4. Logueado desde el telnet hago una copia de las particiones del router:

cat /dev/mtd0 > /var/usbdisk/sda4/mtd0
cat /dev/mtd1 > /var/usbdisk/sda4/mtd1
cat /dev/mtd2 > /var/usbdisk/sda4/mtd2
cat /dev/mtd3 > /var/usbdisk/sda4/mtd3
cat /dev/mtd4 > /var/usbdisk/sda4/mtd4
cat /dev/mtd5 > /var/usbdisk/sda4/mtd5
cat /dev/mtd6 > /var/usbdisk/sda4/mtd6

Ahora grabo los archivos mencionados anteriormente en el router. El primer comando da el error no such space left on device, pero esto no es problema.

cat /var/usbdisk/sda4/openwrt-15.05.1-lantiq-xrx200-TDW8970-sysupgrade.image > /dev/mtdblock1
cat /var/usbdisk/sda4/padded.bin > /dev/mtdblock2

Ahora apago el router con el botón (ojo, no poner reboot), vuelvo a encenderlo y ya puedo acceder a OpenWrt 15 a través del navegador.

Actualización a OpenWrt 21

Desde la página de OpenWrt del router he actualizado directamente a OpenWrt 21.02.2 desmarcando la opción de guardar la configuración. Ha actualizado sin problema, aunque como tardaba mucho al arrancar y pensé que no iba a funcionar al rato lo apagué y lo encendí, pulsando repetidamente el botón trasero para acceder a la consola de recuperación para hacer un Factory Reset:

# firstboot && reboot now

Tras reiniciar ya puedo acceder a un flamante OpenWrt 21.02.2.

Qué hacer si falla algo

Si algo va mal puedes recuperar el router por la conexión serie.

Destacado

Contacto

Si has encontrado algún error o quieres comentarme algo mándame un correo a webmaster@adminlibre.org