TP-Link Router
AlexandrErohin/home-assistant-tplink-router · vv2.44.0
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.
| Entity | Shows up as | Note |
|---|---|---|
switch | Switch or outlet | |
binary_sensor | Sensor (motion, contact, leak, smoke…) | |
sensor | Sensor (temperature, humidity, air quality…) | |
button | Button (as a switch) | |
device_tracker | Presence (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
| Device | In Home Assistant | In Apple Home | What they said | Source |
|---|---|---|---|---|
| TP-Link Archer AX21 v1.20 | Works Local | Added to supported hardware listSaved copyI've tested this on my own router Excerpt saved from GitHub on 2026-10-23. | PR #26 · 2024-01 | |
| TP-Link Archer BE230 v1.0 | Works Local | Tested; client rate, online time and traffic attributes addedSaved copySummary - 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.0 | Works Local | Works with ex.py client after choosing correct login usernameSaved copyFollow-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 switch | Works Local | Port monitoring and LED control addedSaved copyAdds 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.20 | Partly works Local | Newer firmware 1.15.0 response format support in open PRSaved copySummary 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 extenders | Partly works Local | LuCI firmware needs web-encrypted password; plaintext login PR closedSaved copyWraps 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.0 | Not working Local | UnicodeDecodeError during setup with new firmware; needs library supportSaved copyDescribe 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-WR841N | Requested Local | GDPR-encrypted login support proposed; PR closed unmergedSaved copySummary 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 repeater | Requested Local | Support requested; library PR submitted for local-password loginSaved copyFeature 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 stars | 395 |
| Latest version | v2.44.0 (2026-10-17) |
| Set up in the UI | Yes |
| Maintainers | @AlexandrErohin |
| License | MIT |
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.