Skip to content
Home Assistant TestFlight
Sensors

TP-Link Router

AlexandrErohin/home-assistant-tplink-router · vv2.44.0

HACSLocal polling

Home Assistant component for TP-Link and Mercusys router administration with sensors, button reboot, switches and device tracking.

In Apple Home through HomeKit Bridge

What HomeKit Bridge makes of each kind of entity this integration creates, read from its source code. A device only gets the ones that apply to it.

EntityShows up asNote
switchSwitch or outlet
binary_sensorSensor (motion, contact, leak, smoke…)
sensorSensor (temperature, humidity, air quality…)
buttonButton (as a switch)
device_trackerPresence (as an occupancy sensor)

What people report

Local-polling support for many TP-Link Archer, Deco-class routers, extenders and switches via a client library; firmware updates and wrong client auto-detection are the common failures.

  • Works4
  • Partly works2
  • Not working1
  • Requested2
DeviceIn Home AssistantIn Apple HomeWhat they saidSource
TP-Link Archer AX21 v1.20Works LocalAdded to supported hardware list
Saved copy
I've tested this on my own router

Excerpt saved from GitHub on 2026-10-23.

PR #26 · 2024-01
TP-Link Archer BE230 v1.0Works LocalTested; client rate, online time and traffic attributes added
Saved copy
Summary - Expose tx/rx rate, online time, traffic usage and signal on device_tracker attributes. ## Tested - Archer BE230 v1.0 - Firmware Version: 1.2.5 Build 20260108 rel.68570(4555) ## Notes - Metrics depend on smart_network field fallbacks added in the router client. ## Related - TP-Link-Archer-C6U PR # 138: https://github.com/AlexandrErohin/TP-Link-Archer-C6U/pull/138

Excerpt saved from GitHub on 2026-10-23.

PR #307 · 2026-02
TP-Link Archer NX200 v2.0Works LocalWorks with ex.py client after choosing correct login username
Saved copy
Follow-up: I found a working configuration for my Archer NX200 v2.0 and wanted to close the loop here. Hardware / firmware: Archer NX200 v2.0 1.2.0 3.0.0 v60e0.0 Build 250725 Rel.73467n The key point was the login username. Working Home Assistant configuration: Host: https://192.168.1.1 Login: user (not admin) Password: normal router Local Password Verify SSL: off Remote Management via HTTPS: off To isolate the issue, I tested tplinkrouterc6u directly from the HA terminal. Both TPLinkEXClientGCM and TPLinkEXClient could successfully retrieve the RSA parameters from /cgi/getGDPRParm, so HTTPS …

Excerpt saved from GitHub on 2026-10-23.

Issue #372 · 2026-08
TP-Link TL-SG108E switchWorks LocalPort monitoring and LED control added
Saved copy
Adds LED control for TL-SG108E switches using led_status() and set_led() from tplinkrouterc6u 5.36.0. LED state is included in the normal coordinator refresh. Writes use the existing request path and read the LED state back before updating Home Assistant, so the entity reflects the switch's actual state. Tested on two TL-SG108E v6.0 switches with firmware 1.0.0 Build 20230218 Rel.50633. Home Assistant control and physical LED state matched, external web UI changes were picked up on the next poll, and restart, existing port monitoring, tests, HACS, hassfest and flake8 all passed.

Excerpt saved from GitHub on 2026-10-23.

PR #419 · 2026-10
TP-Link Archer C80 HW 2.20Partly works LocalNewer firmware 1.15.0 response format support in open PR
Saved copy
Summary This PR adds support for the newer TP-Link Archer C80 firmware response format and introduces persistent traffic counters. Tested with: - TP-Link Archer C80 HW 2.20 - Firmware 1.15.0 Build 250729 Rel.63726n(4555) - Access Point mode - Home Assistant running in Docker ## Changes - Add current upload and download throughput sensors - Add persistent upload/download traffic counters: - Today - Month - Total - Restore accumulated counter values after Home Assistant restarts - Add a button to reset all accumulated traffic counters - Keep the existing reboot button unchanged ## Testing - …

Excerpt saved from GitHub on 2026-10-23.

PR #368 · 2026-07
TP-Link RE505X / RE813XE / RE700X extendersPartly works LocalLuCI firmware needs web-encrypted password; plaintext login PR closed
Saved copy
Wraps the admin password entered in plaintext so the TP-Link LuCI AP/extender firmware (RE500X/RE505X/RE813XE/RE700X) can log in without capturing the web-encrypted value from the browser devtools. - re_encrypt.py: fetch the device RSA public key ([n,e]) unauth via /cgi-bin/luci/;stok=/login?form=login&operation=read, RSA PKCS#1 v1.5 encrypt the plaintext -> 256 hex. Pass-through unchanged if the stored value is already >=200 chars (no double-encryption). Falls back cleanly when pycryptodome is unavailable. - init.py / config_flow.py: encrypt for the client only; store plaintext.

Excerpt saved from GitHub on 2026-10-23.

PR #430 · 2026-10
TP-Link Archer C6 v4 firmware 1.15.0Not working LocalUnicodeDecodeError during setup with new firmware; needs library support
Saved copy
Describe the bug The integration fails to set up with my TP-Link Archer C6 v4 router using firmware 1.15.0. The router accepts the connection, but the integration crashes during status retrieval due to a decryption error (UnicodeDecodeError). It seems that the latest firmware changed the encryption or response format, and the integration is no longer compatible. Logs Error setting up entry http://XXX.XXX.XXX.XXX for tplink_router Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 749, in async_setup_with_context result = await …

Excerpt saved from GitHub on 2026-10-23.

Issue #254 · 2025-10
TP-Link Archer C50 / TL-WR841NRequested LocalGDPR-encrypted login support proposed; PR closed unmerged
Saved copy
Summary Fixes #55 and adds support for two families of TP-Link routers that use the GDPR-encrypted `/cgi_gdpr` login endpoint but fail with the standard MR client (error 71234). ### TPLinkC50Client, Archer C50, A5, C55 (512-bit RSA + PKCS#1 v1.5) - Detects routers with a 512-bit RSA key, `INCLUDE_LOGIN_GDPR_ENCRYPT=1` in `oid_str.js`, and `"512,1"` in `tpEncrypt.js` - Login: `POST /cgi_gdpr` with RSA-PKCS#1-v1.5-encrypted sign (53-byte chunks) + AES-128-CBC-encrypted data - Requires a `GET /` after login to activate the server-side CGI session before data requests - Session params (AES …

Excerpt saved from GitHub on 2026-10-23.

PR #340 · 2026-04
TP-Link RE605X v2 repeaterRequested LocalSupport requested; library PR submitted for local-password login
Saved copy
Feature request: RE605X v2 in wireless repeater mode Could RE605X support be added to the existing RE700X / RE813XE backend, with native client PHY-rate and wireless-backhaul sensors in Home Assistant? I tested a read-only local extension against a real TP-Link RE605X v2.0 (EU) running 1.0.6 Build 20240819 Rel. 59464, in wireless repeater mode, extending an Archer AX73. Integration version: 2.42.0; active `tplinkrouterc6u` version: 5.36.0. The extension reuses `TplinkRE813XERouter`. Login, firmware/status reads, a separate HA config entry, client tracking, dynamic PHY-rate sensors, and …

Excerpt saved from GitHub on 2026-10-23.

Issue #424 · 2026-10

Gathered from GitHub issues, pull requests, discussions and docs, and from r/homeassistant. These are individual reports, so check the linked thread and the date before you buy.

How it connects

Local polling

Talks to the device on your network, asking it for updates every so often.

Details

Installs (analytics)2,528 (0.36%)
GitHub stars395
Latest versionv2.44.0 (2026-10-17)
Set up in the UIYes
Maintainers@AlexandrErohin
LicenseMIT

In ReReHome

Whatever HomeKit Bridge shares reaches Apple Home as normal HomeKit accessories behind your Home Assistant bridge, so ReReHome shows and controls them like any other.

Bridges get their own settings page listing the accessories behind them.