[Custom component] AsusRouter integration

Having a bit of a strange issue.

My main instance of HA runs in a Docker container on a Synology NAS. Straightforward setup i.e. no fudgery or container tweaks. I have the ASUSWRT integration installed and it works fine. I’d now like to switch to AsusRouter instead to make use of one of the entities it provides that ASUSWRT does not. When trying to install AsusRouter, I get the attached error

Before I put any integrations into my main instance of HA, I always fiddle with them in a test instance of HA running on a VM on a Mac. If I try install AsusRouter in the test instance of HA, it works a treat. I can have ASUSWRT running there too at the same time without issue

Any idea what the issue could be with the main instance and AsusRouter ? It connects to the router fine via IP address. But it’s as if it doesn’t even try to authenticate and just stops ( I’ve tried both SSL and non-SSL connection types )

Hello
First of all, thanks for the great integration. I used in almost 2 years, till I replaced my router to the ExpertWiFi series model EBG15.
Asus EBG15 Router

Documentation says, that router firmware based on OpenWRT. I’m able to login to the router and see the first configuration dialog. But it fails to connect and get the information afterward.

The log says :

raceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 637, in __async_setup_with_context
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/asusrouter/__init__.py", line 27, in async_setup_entry
    await router.setup()
  File "/config/custom_components/asusrouter/router.py", line 446, in setup
    await self._init_sensor_coordinators()
  File "/config/custom_components/asusrouter/router.py", line 827, in _init_sensor_coordinators
    available_sensors = await self.bridge.async_get_available_sensors()
                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/asusrouter/bridge.py", line 263, in async_get_available_sensors
    SENSORS: await self._get_sensors_modern(AsusData.WAN),
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/asusrouter/bridge.py", line 558, in _get_sensors_modern
    data = await self.api.async_get_data(datatype)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/asusrouter/asusrouter.py", line 709, in async_get_data
    processed = process(
        endpoint,
    ...<3 lines>...
        self._identity.wlan,
    )
  File "/usr/local/lib/python3.13/site-packages/asusrouter/modules/endpoint/__init__.py", line 150, in process
    return submodule.process(data)
           ~~~~~~~~~~~~~~~~~^^^^^^
  File "/usr/local/lib/python3.13/site-packages/asusrouter/modules/endpoint/hook.py", line 152, in process
    state[AsusData.WAN] = process_wan(data)
                          ~~~~~~~~~~~^^^^^^
  File "/usr/local/lib/python3.13/site-packages/asusrouter/modules/endpoint/hook.py", line 675, in process_wan
    wan["internet"]["ip_address"] = wan[wan["internet"]["unit"]]["main"][
                                    ~~~^^^^^^^^^^^^^^^^^^^^^^^^^
KeyError: 51

Is there a chance to add those routers to a list of the supported devices ?
Thanks a lot !

Hello
I’m currently running an Asus Router TUF-AX5400.
When I got an update notification in home Assistant and click on UPDATE there is no action has been showing! If I try to click UPDATE again I get the following message:
“Failed to perform the action update/install. Update installation already in progress for update.tuf_ax5400_firmware_update”. The update notification remains until I press skip.

Any solution?


TUF-AX5400_Update_msg

Folks with mesh systems: when a device attaches to a mesh node instead of the primary router, do you see its device_tracker turn to not_home??

I have the GT-6 (comes as a pair) and every device connected to the mesh node appears offline per the integration. Is there a way around this?

Has anyone found a method of getting 1 second connection times for devices?

I’m trying to use this to open a lock, the issue is I live in a building and therefore don’t enter wifi range until a few seconds before I need the lock to open.

My settings are:

Number of latest connected devices to store
5
Devices / AiMesh update
1
Consider device at home for (after last 'online' state)
1

But see “Home” appear 10-15 seconds (after my iPhone shows phone connected to wifi).

Could you share your yaml file please ?

Is it possible to show somehow the Asus lhe log in HA or a specific event? I have an freeze issue on my Asus. A few hours earlier when I see the event I know it’s going to freeze, if I could reboot before it… I could manage this with HA

Just upgraded to HA 2025.12.2 (docker image) and now AsusRouter fails in setup:

2025-12-08 22:16:02.608 WARNING (MainThread) [custom_components.asusrouter.config_flow] Cannot get clients for 192.168.XXX.1: 'str' object has no attribute 'get'
2025-12-08 22:16:21.249 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry AX86U-OFFICE for asusrouter
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 761, in __async_setup_with_context
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/asusrouter/__init__.py", line 27, in async_setup_entry
    await router.setup()
  File "/config/custom_components/asusrouter/router.py", line 349, in setup
    await self.bridge.async_connect()
  File "/config/custom_components/asusrouter/bridge.py", line 251, in async_connect
    await self.api.async_connect()
  File "/usr/local/lib/python3.13/site-packages/asusrouter/asusrouter.py", line 203, in async_connect
    return await self.async_get_identity() is not None
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/asusrouter/asusrouter.py", line 293, in async_get_identity
    self._identity = await collect_identity(
                     ^^^^^^^^^^^^^^^^^^^^^^^
    ...<2 lines>...
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/asusrouter/modules/identity.py", line 126, in collect_identity
    endpoints, onboarding = await _check_endpoints(api_query)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/asusrouter/modules/identity.py", line 230, in _check_endpoints
    onboarding = process_onboarding(
                 ~~~~~~~~~~~~~~~~~~^
        read_onboarding(contents[Endpoint.ONBOARDING])
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ).get(AsusData.AIMESH, {})
    ^
  File "/usr/local/lib/python3.13/site-packages/asusrouter/modules/endpoint/onboarding.py", line 47, in process
    for node in [process_aimesh_node(device)]
                 ~~~~~~~~~~~~~~~~~~~^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/asusrouter/modules/endpoint/onboarding.py", line 98, in process_aimesh_node
    level = safe_int(data.get("level", "0"))
                     ^^^^^^^^
AttributeError: 'str' object has no attribute 'get'
2025-12-08 22:20:09.529 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry AX86U-OFFICE for asusrouter
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 761, in __async_setup_with_context
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/asusrouter/__init__.py", line 27, in async_setup_entry
    await router.setup()
  File "/config/custom_components/asusrouter/router.py", line 349, in setup
    await self.bridge.async_connect()
  File "/config/custom_components/asusrouter/bridge.py", line 251, in async_connect
    await self.api.async_connect()
  File "/usr/local/lib/python3.13/site-packages/asusrouter/asusrouter.py", line 203, in async_connect
    return await self.async_get_identity() is not None
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/asusrouter/asusrouter.py", line 293, in async_get_identity
    self._identity = await collect_identity(
                     ^^^^^^^^^^^^^^^^^^^^^^^
    ...<2 lines>...
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/asusrouter/modules/identity.py", line 126, in collect_identity
    endpoints, onboarding = await _check_endpoints(api_query)
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/asusrouter/modules/identity.py", line 230, in _check_endpoints
    onboarding = process_onboarding(
                 ~~~~~~~~~~~~~~~~~~^
        read_onboarding(contents[Endpoint.ONBOARDING])
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ).get(AsusData.AIMESH, {})
    ^
  File "/usr/local/lib/python3.13/site-packages/asusrouter/modules/endpoint/onboarding.py", line 47, in process
    for node in [process_aimesh_node(device)]
                 ~~~~~~~~~~~~~~~~~~~^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/asusrouter/modules/endpoint/onboarding.py", line 98, in process_aimesh_node
    level = safe_int(data.get("level", "0"))
                     ^^^^^^^^

Happy to share more / help debug.

UPDATE: Reverted back to 2025.12.1 container and it resumes working again.

Already being worked by the developer: [Bug] 2025.12.2 - Appears to cause integration to break "AttributeError" · Issue #1101 · Vaskivskyi/ha-asusrouter · GitHub

Hello, guys. Sorry for missing all the previous replies. I hardly have time to regularly open the forum. So, please, if you have an issue/feature request that I did not reply to, open it on GitHub or repeat it here (now I have notifications getting into my email :upside_down_face:)

:bug: The bug

As for the issue with HA 2025.12.2, I am really sorry for this. This was a bug propagating from the backend library to HA core asuswrt integration and then to asusrouter integration (since both use my backend library now).

You can find a temp solution in this comment and after. The permanent solution to the current bug will be released with Home Assistant 2025.12.3 soonish (already merged)

Hi, i am a new user to this integration. Is it possible to get the upload and download speed from a sensor?

Regards
Joost

I’ve disabled ssh password login on my RT-AX86U in favor of ssh cryptographic key pairs. This allows me to keep my password secret and would also allow me to disable sign-in from the Home Assistant box while allowing sign-in from my computer if I suspect that the HA box is compromised.

Using this setup typically requires remote address, port, and path to the private key.

Does this integration support this ssh sign-in method?

Thanks!

@Djiest, the upload and download speed of what? AsusRouter allows you to monitor the upload/download for the router at the moment. Eventually, there will be such a possibility for separate clients (but only for the newer models that support this kind of data).

@jds13, no, AsusRouter only works with the API (HTTP/HTTPS connections) and requires user+password for access. If you need SSH, you can use the standard HA integration asuswrt, which has a much more limited set of features available.

@Vaskivskyi I am want to show a graph for the up/download speed over time, but can not see what entity contains this info

I have a AX11000 Pro, and download speed sensor is labeled as gt_ax11000_pro_wan_download_speed and similar for upload.

Hi I noticed last month, that this info user+passwd is actually in cleartext in the registry-file in .storage, is that because i don’t use https ?

Thanks @Cronix I have 3 ax92u (mesh) and I don’t see that sensors. Maybe because it is a mesh system? Or just to old maybe?

removed/resolved

Hello! I want to know if it is possible to display in home assistant the vpn (openvpn) status of users connected to the Asus router.

Is this integration abandoned… it seems to have serious bugs.

I have tried multiple things, even removing and readding the integration completely.

When I do not use the filter, all router wifi devices get created.
When I try ‘Include Only’ and I select the 4 devices I want, the integration populates 3 devices correctly, 1 device is missing, and I have 5 others that I did not select!? Also, one of the showing devices does not create a device_tracker, yet the other 2 have them.

The config JSON correctly has only 4 MAC addresses which I selected. So clearly its a bug in the logic of the integration.

The integration is working perfect here without issues

1 Like