Do not upgrade to the 12.10.2013 (or newer) TP-Link firmware if you intend to switch to OpenWrt via the TP-Link webinterface. Starting with 12.10.2013 the TP-Link webinterface accepts only RSA signed firmware images with the v3 header.
The RSA Signature is not enforced/validated by u-boot. Therefore, flashing over serial & TFTP still works.
If the device is running firmware version lower than 12.10.2013, OpenWrt can just be installed via the firmware update mechanism in the web interface.
Otherwise, you can explore web interface shell injection, as mentioned in TP-Link TD-W9980.
As mentioned there, you need to split image sysupgrade into two, flashing the first part into mtdblock1 and the other one into mtdblock2. When already in OpenWrt, you might want to erase rootfs_data after boot in failsafe:
mtd -r erase rootfs_data
Installation via Serial + TFTP
CP210x USB to UART bridge (~2$)
Bell wire or some toothpicks for fixing the cable, a Screwdrivers and a wrench.
Open the case by removing the 4 screws on the bottom and unlock the 6 snap locks with a flat screwdriver. Remove the antenna nuts. The circuit board should be now movable. The two cables towards the copper rails can be ignored. Turn the board. The 4 holes in the middle are the connections for the Serial Console. Connect the holes with the cables from the UART bridge like in the picture shown. You can use some old bell wire or toothpicks to stick the cables to the holes.
apt-get install atftpd
// Rename the firmware to a shorter name and put it into the tftp folder.
mv openwrt-18.06.2-lantiq-xrx200-tplink_tdw8980-squashfs-sysupgrade.bin /srv/tftp/openwrt.bin
chown nobody:nogroup -R /srv/tftp
//Run TFTP server
atftpd --daemon /srv/tftp
// You should test the properly working tftp server from another computer. (firewall problems, etc)
Connect the USB UART bridge to a linux computer. Install screen and get the console online:
If you power up the router, the normal boot process should be visible in the console. You can login with admin/1234. If you want you can make a backup of the original firmware. Plug in a fat32 formated USB flash drive and save the router partitions:
Now do a cold reboot for the router while pressing 't' key in the console. The boot process is interrupted and you are within the bootloader. (VR9 prompt). If the prompt asks again for a username and password, you missed the bootloader message 'Hit any key to stop autoboot' and you have to reboot the router again.
Now retrieve the OpenWrt image from the Tftp server and write it to the router:
// Set temporally the IP address for the router:
setenv ipaddr 192.168.11.13
// Set IP address where the tftp server is listen:
setenv serverip 192.168.11.220
setenv bootargs 'board=WD8980'
// Retrieve the OpenWrt image
tftpboot $(loadaddr) openwrt.bin
// Erase old image and write the new one to disk and reboot:
sf erase 0x20000 0x7a0000
sf write $(loadaddr) 0x20000 0x$(filesize)
Now OpenWrt should be starting and listen at 192.168.1.1
toh/tp-link/td-w8980.txt · Last modified: 2019/09/03 20:28 by tmomas