OpenWrt en TD-W8970 por puerto serie
Por el 1 de Abril de 2022
En este tutorial voy a recuperar un router TP Link TD-WR8970 v1.2 inutilizado debido a una instalación incorrecta de OpenWrt. Se trata de un router con una documentación bastante confusa ya que después de inyectar el comando `telnetd -p 1023 -l login`
mediante el SSID o el archivo de configuración y acceder hay que seguir las instrucciones de la página del TD-W9980. Lo hice pero falló, creo que es porque no extendí la imagen que va a mtd2
con carácteres \'0xFF\' como explico aquí.
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
Herramientas necesarias
- Cable UTP Ethernet
- Un ordenador con servidor TFTP
- Prolific CP2102 USB a UART
- Cable Dupont hembra-hembra
- Conector de hilera de pines 4x1
Adaptador USB a puerto serie RS232

Usaré el adaptador USB a RS232 Prolific CP2102 que es compatible con OpenBSD, muy barato y funciona perfectamente. Es el mismo que se usa para conectarse al puerto serie de la Raspberry Pi.
De aquí conectaré TXD a TX, RXD a RX y GND a GND. Es de vital importancia no conectar ningún pin de alimentación.
Procedimiento

Lo primero es abrir el router quitando los cuatro tornillos de la parte trasera y haciendo palanca con cuidado en los tres extremos de cada lateral para sacar la carcasa. Quitando la tuerca y la arandela de cada una de las tres antenas se puede sacar completamente la placa. En la foto indico donde hay que conectar los pines TX, RX y GND del CP2102; en realidad en la placa TX y RX están cambiados ya que la conexión es cruzada.
Aunque es posible soldar directamente un cable, si se tiene el equipo adecuado se puede desoldar y soldar una hilera de pines con separación de 2.54mm una vez quitado el estaño de los cuatro agujeros con una pistola de desoldar accediendo desde la parte inferior.

Con estos tres pines conectados usando los cables Dupont hembra-hembra y el CP2102 conectado al ordenador se enciende el router con su alimentador y, si todo es correcto, si ya estás conectado a la consola se verá arrancar u-boot.
Para ello usaré el programa cu(1) (para Linux está Minicom) de esta forma, añadiendo previamente al usuario al grupo dialer para no necesitar root:
$ cu -s 115200 -l cuaU0
Servidor TFTP
Ahora configuro un servidor TFTP en un ordenador con IP 192.168.1.2 que va conectado por cable UTP al puerto LAN1 del router. Para ello uso tftpd(8), creando previamente un directorio con la imagen que se va a enviar al router:
# mkdir /var/tftproot
# cp openwrt-21.02.2-lantiq-xrx200-tplink_tdw8970-squashfs-sysupgrade.bin /var/tftproot/openwrt.bin
# tftpd /var/tftproot
Instalación de OpenWrt
Con todo conectado, nada más encender el router empezará a arrancar u-boot y se verá por la consola. Hay que interrumpir el arranque pulsando la tecla \'t\'t para llegar a una línea de comandos donde, siguiendo las instrucciones de OpenWrt, hay que poner estos comandos:
# setenv ipaddr 192.168.1.1
# setenv serverip 192.168.1.2
# setenv bootargs \'board=WD8970\'
# tftproot 0x81000000 openwrt.bin
# sf erase 0x20000 0x7a0000
# sf write 0x81000000 0x20000 0x$(filesize)
# reset
Una vez hecho esto, al cabo de unos minutos habrá arrancado OpenWrt y estará escuchando en la dirección IP 192.168.1.1.