For no apparent reason. (None of the others are reporting "US") They were both working fine up till quite recently, and they still work through the phone app.
kasa --host=10.0.10.208 --username kxxxa@xxx.com --password gxxxxxxxKyT --device-family SMART.TAPOPLUG --encrypt-type KLAP --debug state
DEBUG Created KLAP transport for 10.0.10.208 klaptransport.py:123
DEBUG Initializing 10.0.10.208 of type <class 'kasa.smart.smartdevice.SmartDevice'> device.py:198
DEBUG 10.0.10.208 multi-request-batch-1-of-1 >> smartprotocol.py:192
'{"method":"multipleRequest","request_time_milis":1775361509593,"terminal_uuid":"wh7xxxxxxxUy8
bEg==","params":{"requests":[{"method":"component_nego"},{"method":"get_device_info"},{"method":"get
_connect_cloud_state"}]}}'
DEBUG Starting handshake with 10.0.10.208 klaptransport.py:285
DEBUG Posting to http://10.0.10.208/app/handshake1 httpclient.py:87
DEBUG Handshake1 posted at 2026-04-05 10:58:29.634359. Host is 10.0.10.208, Response status is 403, klaptransport.py:154
Request was be2aae4090777b242c00d87c03cc6194
DEBUG Unable to query the device: 10.0.10.208, not retrying: Device 10.0.10.208 responded with 403 to smartprotocol.py:145
handshake1
Raised error: Device 10.0.10.208 responded with 403 to handshake1
Traceback (most recent call last):
File "/home/kevin/.local/bin/kasa", line 8, in <module>
sys.exit(cli())
File "/home/kevin/.local/lib/python3.10/site-packages/asyncclick/core.py", line 1211, in __call__
return anyio.run(self._main, main, args, kwargs, **opts)
File "/home/kevin/.local/lib/python3.10/site-packages/anyio/_core/_eventloop.py", line 74, in run
return async_backend.run(func, args, {}, backend_options)
File "/home/kevin/.local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 2303, in run
return runner.run(wrapper())
File "/home/kevin/.local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 216, in run
return self._loop.run_until_complete(task)
File "/usr/lib/python3.10/asyncio/base_events.py", line 649, in run_until_complete
return future.result()
File "/home/kevin/.local/lib/python3.10/site-packages/anyio/_backends/_asyncio.py", line 2291, in wrapper
return await func(*args)
File "/home/kevin/.local/lib/python3.10/site-packages/asyncclick/core.py", line 1214, in _main
return await main(*args, **kwargs)
File "/home/kevin/.local/lib/python3.10/site-packages/asyncclick/core.py", line 1126, in main
rv = await self.invoke(ctx)
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/cli/common.py", line 231, in invoke
_handle_exception(self._debug, exc)
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/cli/common.py", line 229, in invoke
return await super().invoke(ctx)
File "/home/kevin/.local/lib/python3.10/site-packages/asyncclick/core.py", line 1747, in invoke
await super().invoke(ctx)
File "/home/kevin/.local/lib/python3.10/site-packages/asyncclick/core.py", line 1496, in invoke
return await ctx.invoke(self.callback, **ctx.params)
File "/home/kevin/.local/lib/python3.10/site-packages/asyncclick/core.py", line 829, in invoke
rv = await rv
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/cli/main.py", line 368, in cli
dev = await Device.connect(config=config)
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/device.py", line 234, in connect
return await connect(host=host, config=config) # type: ignore[arg-type]
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/device_factory.py", line 75, in connect
return await _connect(config, protocol)
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/device_factory.py", line 117, in _connect
await device.update()
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/smart/smartdevice.py", line 180, in update
await self._negotiate()
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/smart/smartdevice.py", line 140, in _negotiate
resp = await self.protocol.query(initial_query)
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/smartprotocol.py", line 89, in query
return await self._query(request, retry_count)
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/smartprotocol.py", line 150, in _query
raise ex
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/smartprotocol.py", line 94, in _query
return await self._execute_query(
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/smartprotocol.py", line 260, in _execute_query
return await self._execute_multiple_query(request, retry_count)
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/smartprotocol.py", line 198, in _execute_multiple_query
response_step = await self._transport.send(smart_request)
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/klaptransport.py", line 322, in send
await self.perform_handshake()
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/klaptransport.py", line 290, in perform_handshake
local_seed, remote_seed, auth_hash = await self.perform_handshake1()
File "/home/kevin/.local/lib/python3.10/site-packages/kasa/klaptransport.py", line 164, in perform_handshake1
raise KasaException(
kasa.exceptions.KasaException: Device 10.0.10.208 responded with 403 to handshake1
I'm wondering what could have caused this.
Two of my six Tapo 100 plugs have suddenly started reporting this:
== Unsupported device ==
== Discovery Result ==
Device Type: SMART.TAPOPLUG
Device Model: P100(US)
For no apparent reason. (None of the others are reporting "US") They were both working fine up till quite recently, and they still work through the phone app.
But I can no longer connect to them using kasa (v0.7):
I'm wondering what could have caused this.