[Custom Component] TP-Link Router Integration (supports also Mercusys router)

Could you check this comment? X55 router no longer able to connect with HomeAssistant · Issue #366 · AlexandrErohin/home-assistant-tplink-router · GitHub

Hello Aleksandr,

Thank you so much for this. On version 2.30.1 I was able to log back in with the integration.
However, the VPN client toggle was still not visible.

v2.31.0 Released

Changelog

Hi Aleksandr,

I’m using the TP-Link Router Home Assistant integration v2.33.0 with an Archer AX55, but I can’t get the integration to log in to the router.

Router: TP-Link Archer AX55 v1.0
Firmware: 1.5.10 Build 20251119 rel.50509(4555)

The integration is configured correctly as far as I can tell, but authentication fails and the router cannot be accessed through the integration.

Could you please let me know if this model/firmware is currently supported, or if there is anything specific I should check?

Thank you very much for your help!

The support for your router is testing now
Could you test it please? You need to download GitHub - AlexandrErohin/TP-Link-Archer-C6U: Python package for API access and management for TP-Link and Mercusys Routers. See supported routers list · GitHub
and run

from tplinkrouterc6u import TplinkRouterProvider
from logging import Logger

router = TplinkRouterProvider.get_client('http://192.168.0.1', 'password')
router.authorize()
print(router.get_firmware())
print(router.get_status())

Hi Aleksandr,

I tested the exact tplinkrouterc6u version 5.29.0 from the current repository, as requested.

The result is interesting:

  • router.authorize() → OK
  • router.get_firmware() → fails

The exact error is:

TplinkRouterSG - Response with error;
Request admin/firmware?form=upgrade&operation=read;
Response {"data":"DKG1P2DlMGDybQ8e/YF7pj9JcPesMTq+8+k8+RZYYtgznVaHmmeyLPuJdpAkFNrRQNd/ciqmrNgMn3+2LqQr0w=="}

So authentication itself seems to work, but the first authenticated request fails when retrieving the firmware information.

Router: TP-Link Archer AX55 v1.0
Firmware: 1.5.10 Build 20251119 rel.50509(4555)

I have not tested get_status() because get_firmware() fails first.

Thanks!

Update / workaround for Archer AX55

I managed to get VPN Client control working on my Archer AX55 v1.0 from Home Assistant.

The router is running firmware 1.5.10 Build 20251119 rel.50509.

I implemented a small standalone client based on the SG protocol used by the router and verified that it can:

  • authenticate successfully;
  • read VPN Client status;
  • enable the VPN Client;
  • disable the VPN Client.

I then integrated that client into a small standalone Home Assistant custom integration, and the VPN Client can now be switched ON/OFF directly from Home Assistant.

This is currently a minimal proof-of-concept rather than a polished integration, but it confirms that the AX55 VPN Client can be controlled programmatically from HA.

Happy to share the implementation if useful.

@leandro_fuet Would be great if you could create Pull Request with tour edits here GitHub - AlexandrErohin/TP-Link-Archer-C6U: Python package for API access and management for TP-Link and Mercusys Routers. See supported routers list · GitHub Thank you!

v2.34.0 Released

Changelog

v2.37.0 Released

Changelog

Added

  • Option to enable/disable device trackers per router (support_tracker) for setups with multiple routers (e.g. WAN router + separate AP), to avoid duplicate device entries (#390)
  • Async lock so switch actions, reboot, SMS send, and coordinator polling do not race on the same router session (#392)

Fixed

  • Device trackers default to enabled when the option is missing (existing installs keep trackers) after the non-AP customisation work
  • send_sms service now uses the same locked request path as other router actions
  • Fixed MR / EX SMS (and USSD on MR): embedded \n / \r no longer corrupt the wire format; invalid newlines in phone numbers raise ClientException (home-assistant-tplink-router#389)
  • Fixed MR200 LTE: get_lte_status() correctly casts CGI string fields so LTE sensors (network_type, sim_status, signal level, statistics) work as expected (TP-Link-Archer-C6U#214)
  • Fixed C6U wifi: get_wifi() no longer crashes when firmware reports channel as 'auto' (TP-Link-Archer-C6U#202, #201)

v2.39.0 Released

Changelog

Added

  • Two-step config flow: host/credentials first, then optional features (VPN, trackers, DHCP reservations, and related settings) on a second step; credentials are validated before the custom step (#404)
  • Option to give each tracked client its own device entry (tracker_as_device, off by default) - tracked clients currently only get a device card if another integration already registered a device sharing their MAC, otherwise they’re bare entities easy to overlook. Disabling the option later does not delete existing device-registry entries (#397)
  • DHCP reservations diagnostic sensor and add_reservation / delete_reservation services for supported c6u-family routers, with opt-in support_dhcp_reservations (default on) (#405)
  • E-WAN connect switch (DHCP Renew/Release) for MR/EX-family routers that report Ethernet WAN status (#407)

I apologise if this question has been answered before (but there is a lot of stuff to search through!)

I have an Archer AX1800, and the integration has connected nicely - thank you very much for you huge amount of work.

How can I determine the state of the internet connection (ie the state of the Internet LED on the front of the router)?

I wondered whether it might be the “Connection Type”, or maybe the “E-WAN Connect” ?

thanks

v2.42.0 Released

Changelog

Added

  • Supports for extenders RE700X and RE813XE v1.6

Changed

  • Create status sensors and Wi‑Fi/MLO switches only when the device reports a non-None value for that field (avoids forever-unavailable entities on devices that lack Wi‑Fi/WAN/CPU metrics)