[Solved] Tp-Link w8980b: How to flash with serial console?

Hello Forum,

i have a TP-Link W8980b and I want to flash it with OpenWRT. I cannot use the Webinterface. I bought a Silicon Labs CP210x USB to UART bridge. I connected Rx on the TP Link board to Tx on the CP210x pin and vice versa like in mentioned this article. plus ground. In the Windows 7 Device manager I can set the com interface, baud rate, 8 data bits, no parity, no stop bit. I made the same settings at putty. I open putty and power up the router, I press t and enter but nothing happens. No output in the putty window.

In the manual they say I have to connect the left side of R225 to ground. I have to do this shortly after powering up? What does it do? Some kind of reboot in UART mode? With a needle I pinned the the left side of R225, (not the encircled one from the picture) and connected it to ground from CP210x, but nothing happens?

I have never worked with a serial console before. Can someone give me advice what I'm doing wrong?



1 Like

I exchanged the cables for Tx and Rx and now it works.
The output on the serial console is:

If I connect the left pin of R225 to ground, nothing happens. I tried it while powering up and after booting up.

If I write ' cat u-boot.asc > /dev/ttyUSB0' in another shell, I get a lot of error messages. I dont think the bootloader gets uploaded.

  1. Why do I have to update the bootloader?
  2. And what is the next step after updating the bootloader? How to install OpenWrt?
1 Like

The web interface hack worked for me after cross-flashing a patched TD-W9980 vendor firmware.

Before powering up. I don't know exactly for how long you need to keep it connected. I wouldn't break the GND connection until U-Boot has been transferred.

It will cause the CPU to load and run a bootloader you send via UART, and ignore the U-Boot stored in flash.

I cannot see the CFG 04 prompt in your log. It would indicate that the R225-GND connection was recognized, which is a precondition for uploading U-Boot via UART.

I can only speculate here. The likely reason is that the vendor U-Boot does not support one of the steps needed to flash OpenWrt.

As I understand this bootstrapping process, the replacement U-Boot is only loaded into RAM, not written to flash. Your actions can still be undone by power-cycling at this stage.

See the TD-W9980 wiki page. The 8980 and 9980 only differ in their vendor firmware. Their hardware is identical.


Thank you Mpa for the elaborate answer :slight_smile:

I switched from Windows 7 to Debian.
The Serial Console Log without connecting R225 to ground: https://pastebin.com/j9VNAu39
The Serial Console Log with connecting R225 the whole time to ground: https://pastebin.com/WCcvzXsa

The boot process differ, but there is still no 'CFG 04'.
In booth power ups there is a 'Hit any key to stop autoboot' message with a 1 second timer, I pressed some buttons but no stopping.

The second boot with connecting R225 to ground stops with the messages 'tcpConnector() started... Bind to br0'. At this time I tried to transfer the u-boot.asc. This time I get no error messages, but also no reaction.

There seems to be no image for the TP-Link W8980B with Lantiq XWAY VRX268:
Do I have to compile an OpenWRT Image from source?
Its this image: http://downloads.openwrt.org/releases/18.06.2/targets/lantiq/xrx200/openwrt-18.06.2-lantiq-xrx200-tplink_tdw8980-squashfs-sysupgrade.bin

I have a TD-W8980 and I think you need to type tpl and then it stops the boot. You can copy paste the words because you need to type very fast.

I dont think if you need to replace the bootloader because for mine I didnt replace it. The stock one worked flawlessly and I was able to boot OpenWrt.


It worked. Thanks :slight_smile:

I also think you will need to flash it with W8980 image from downloads because they are the same models. The only difference is that yours can only work with Annex B but other can work with both A & B.

1 Like

I'm unable to write the u-boot bootloader to the router. Maybe its not necessary? I have setup a tftp server and put this image from this site into the server folder. I can abort the autoboot and enter the 'U-Boot 2010.06-LANTIQ-v-2.0.40-svn4782 (Oct 18 2013 - 14:18:54)'

Then I followed this manual:

setenv ipaddr
setenv serverip
setenv bootargs 'board=WD8980'
tftpboot 0x81000000 openwrt.bin
Now the openwrt image is transferred.

The next steps would be:

sf erase 0x20000 0x7a0000
sf write 0x81000000 0x20000 0x$(filesize)

But the 8990 has another flash partition layout. Or is the output of cat /proc/mtd also in hex? In this case I can stick with the numbers?

Just go with the following, these are same for both of them.

tftp $(loadaddr) openwrt-18.06.1-lantiq-xrx200-tplink_tdw8980-squashfs-sysupgrade.bin
# Note: If you get timeouts (T) executing this command, you probably did not set up the networking/tftpd correctly or your ethernet cable is bad.
sf erase 0x20000 0x7a0000
sf write $(loadaddr) 0x20000 0x$(filesize)

According to https://openwrt.org/toh/tp-link/td-w9980#install_openwrt_via_serial_interface.

That is for 8970 you should be following instructions for 8980.


It worked. OpenWrt is booting. Thanks a lot :slight_smile:

The instructions in the wiki are not for fully replacing the bootloader, they only want you to load the different bootloader to RAM once and use it to do the flash. But that seems unnecessary.

1 Like

@peterfarge If your problem is solved, please consider marking this topic as [Solved]. (Click the pencil behind the topic...)

You can also mark the reply that solved your problem:

1 Like

I have added a more elaborate install manual for the serial console.

Putting another u-boot to the router never worked and is also not needed. I connected the left pin of R225 to ground, it changed the bootup process, but there was no 'CFG 04' and if I send the u-boot.asc, it gives error messages or no messages at all.

Thanks for your help :slight_smile:
And I'm watching this thread with great interest.

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.