Upgrade TP-Link PowerLine Adapter Firmware

This post covers the procedure of upgrading the firmware of TP-LINK TL-WPA4226KIT v4 PowerLine adapters.

The TP-LINK TL-WPA4226KIT v4 consists of two units:

  • TL-PA4020P (2xRJ45, passthru unit)
  • TL-WPA4220 v4 (2xRJ45, WiFi unit)

I got frequent drops of connection, averaging from 2 to 5 times a day. Like 2 minutes operation interruptions. The rest network worked fine and I concluded that the problem was in the connection between those two units.
Upgrading the firmware from TP-Link’s website didn’t fix the problem.

It seems that TP-Link’s updates hadn’t upgraded the units’ firmware since 27/10/2017 (TL-WPA4220) and 28/04/2016 (TL-PA4020P).

I bumped into this post in TP-Link’s forum which links to files that include newer firmware/drivers than the one in TP-Link’s official updates.
Keep in mind that this new firmware is not flashable with the conventional tpPLC utility.

Upgrade procedure

Make sure you have directly connected your PC/laptop to the receiver unit (TL-WPA4220 in my case) with an ethernet cable.

New firmware file

The first step is to download the new firmware file (FW-QCA7420-1.5.0.0026-02-CS-20200114.nvm) from the post I linked above.

Install open-plc-utils

open-plc-utils GitHub repository can be found here.

git clone https://github.com/qca/open-plc-utils
cd open-plc-utils
make

You will probably get errors regarding missing libraries.
You need to work it out using the package manager of your linux distribution and rerun make.

Once you have successfully built the open-plc-utils program, it is time to install it.

sudo make install

Optionally, install manpages:

sudo make manuals

Collect the .pib files that will be used in flashing

Firstly, find out the interface name of your network card (NIC).
Mine was enp3s0. You can find yours with:

ip addr

Then, we need to identify the PL units along with some info.
The sudo plcstat -t -i enp3s0 command provides what we need:

P/L NET TEI ------ MAC ------ ------ BDA ------  TX  RX CHIPSET FIRMWARE
LOC STA 002 D8:47:32:C8:73:39 D4:BE:D9:D9:BB:4A n/a n/a QCA7420 MAC-QCA7420-1.4.0.20-00-20171027-CS
REM CCO 001 98:48:27:63:5C:F9 8C:68:C8:F4:BE:27 128 094 QCA7420 MAC-QCA7420-1.3.1.2141-00-20160428-CS

D8:47:32:C8:73:39 is the address of my WPA4220 with firmware version MAC-QCA7420-1.4.0.20-00-20171027-CS
98:48:27:63:5C:F9 is the address of my PA4020P with firmware version MAC-QCA7420-1.3.1.2141-00-20160428-CS

To identify which address belongs to which unit, you can match it with the address written on the sticker on each unit.

Getting the .pib files

For PA4020P:

sudo plctool -i enp3s0 -p TL-PA4020P.pib 98:48:27:63:5C:F9

For WPA4220:

sudo plctool -i enp3s0 -p TL-WPA4220.pib D8:47:32:C8:73:39

We’ve got two .pib files:

  • TL-WPA4220.pib
  • TL-PA4020P.pib

Flashing the new firmware

In this step we will use the .nvm file from earlier and the two .pib files we acquired in the previous step.

For TL-PA4020P

sudo plctool -i enp3s0 -P TL-PA4020P.pib -N FW-QCA7420-1.5.0.0026-02-CS-20200114.nvm -R 98:48:27:63:5C:F9

Which outputs a long wall of text ending with:

.
.
MODULE_SUB_ID 0x0000
MODULE_LENGTH 1132
MODULE_OFFSET 0x046C0000
enp3s0 98:48:27:63:5C:F9 Close Session
enp3s0 98:48:27:63:5C:F9 Reset Device
enp3s0 98:48:27:63:5C:F9 Resetting ...

Congratulations! We have successfully flashed the new firmware on our TL-PA4020P!

For TL-WPA4220

sudo plctool -i enp3s0 -P TL-WPA4220.pib -N FW-QCA7420-1.5.0.0026-02-CS-20200114.nvm -R D8:47:32:C8:73:39
.
.
.
MODULE_SUB_ID 0x0000
MODULE_LENGTH 1132
MODULE_OFFSET 0x046C0000
enp3s0 D8:47:32:C8:73:39 Close Session
enp3s0 D8:47:32:C8:73:39 Reset Device
enp3s0 D8:47:32:C8:73:39 Resetting ...

Congratulations! We have successfully flashed the new firmware on our TL-WPA4220!

Checking the firmware version

sudo plcstat -t -i enp3s0
P/L NET TEI ------ MAC ------ ------ BDA ------  TX  RX CHIPSET FIRMWARE
LOC STA 006 D8:47:32:C8:73:39 D4:BE:D9:D9:BB:4A n/a n/a QCA7420 MAC-QCA7420-1.5.0.26-02-20200114-CS
REM CCO 004 98:48:27:63:5C:F9 7C:64:56:8A:82:5A 169 107 QCA7420 MAC-QCA7420-1.5.0.26-02-20200114-CS

Notice the new firmware version for both units:

MAC-QCA7420-1.5.0.26-02-20200114-CS

Conclusion

Since the upgrade, no connection interruptions have occurred.

TP-Link needs to provide updates that include newer firmware/drivers for their products.