Skip to content

Tapo C320WS support and authentication error #1674

@kyearb

Description

@kyearb

I purchased a Tapo C320WS and saw it wasn't supported. I tried to create a fixture file but I am getting blocked by an authentication error.

Could this issue be related to #1664?

Below is the output when I run kasa discover --debug with my credentials and host IP:

Discovering device 192.168.0.24 for 10 seconds
DEBUG    [DISCOVERY] 192.168.0.24 >> {'system': {'get_sysinfo':  discover.py:327
         {}}}                                                                   
DEBUG    Waiting a total of 10 seconds for responses...          discover.py:590
DEBUG    Decrypted encrypt_info for 192.168.0.24:                discover.py:787
         {'connect_ssid': '#MASKED_SSID#',                                      
          'connect_type': 'wireless',                                           
          'device_id':                                                          
         'REDACTED_D72D7E82A556DD045D47B7A23690759',                            
          'http_port': 443,                                                     
          'last_alarm_time': '1773731875',                                      
          'last_alarm_type': 'motion',                                          
          'owner': 'REDACTED_19005C40A4F0896F0305EBA',                          
          'sd_status': 'normal'}                                                
DEBUG    Using SmartCamDevice for SMART.IPCAMERA           device_factory.py:179
DEBUG    Finding protocol for 192.168.0.24                 device_factory.py:194
DEBUG    Finding protocol for DeviceFamily.SmartIpCamera   device_factory.py:197
DEBUG    Created AES transport for 192.168.0.24           sslaestransport.py:136
DEBUG    [DISCOVERY] 192.168.0.24 << {'error_code': 0,           discover.py:927
          'result': {'device_id':                                               
         'REDACTED_15C76F0FE8E221A1A8E0F34',                                    
                     'device_model': 'C320WS',                                  
                     'device_name': '#MASKED_NAME#',                            
                     'device_type': 'SMART.IPCAMERA',                           
                     'encrypt_info': {'data': '', 'key': '',                    
         'sym_schm': 'AES'},                                                    
                     'encrypt_type': ['3'],                                     
                     'factory_default': False,                                  
                     'firmware_version': '1.4.3 Build 251014                    
         Rel.59660n',                                                           
                     'hardware_version': '2.0',                                 
                     'ip': '192.168.0.24',                                      
                     'isResetWiFi': False,                                      
                     'is_support_iot_cloud': True,                              
                     'mac': '3C-64-CF-00-00-00',                                
                     'mgt_encrypt_schm': {'is_support_https':                   
         True},                                                                 
                     'protocol_version': 1,                                     
                     'sv': 1}}                                                  
DEBUG    Initializing 192.168.0.24 of type <class                  device.py:217
         'kasa.smartcam.smartcamdevice.SmartCamDevice'>                         
DEBUG    192.168.0.24 multi-request-batch-1-of-1 >>         smartprotocol.py:242
         '{"method":"multipleRequest","request_time_milis":                     
         1773746923587,"terminal_uuid":"kvzF/UsEajROGGhXbOh                     
         ShA==","params":{"requests":[{"method":"getDeviceI                     
         nfo","params":{"device_info":{"name":["basic_info"                     
         ,"info"]}}},{"method":"getAppComponentList","param                     
         s":{"app_component":{"name":"app_component_list"}}                     
         },{"method":"getConnectionType","params":{"network                     
         ":{"get_connection_type":{}}}}]}}'                                     
DEBUG    Sending handshake1...                            sslaestransport.py:623
DEBUG    Posting to https://192.168.0.24                        httpclient.py:88
DEBUG    Device responded with status 200: {'data':       sslaestransport.py:642
         {'code': -40404, 'sec_left': 328}, 'error_code':                       
         -40401}                                                                
DEBUG    Trying default credentials to 192.168.0.24       sslaestransport.py:535
DEBUG    Sending handshake1...                            sslaestransport.py:623
DEBUG    Posting to https://192.168.0.24                        httpclient.py:88
DEBUG    Device responded with status 200: {'data':       sslaestransport.py:642
         {'code': -40404, 'sec_left': 328}, 'error_code':                       
         -40401}                                                                
DEBUG    Unable to query the device: 192.168.0.24, not      smartprotocol.py:192
         retrying: Device blocked for 328 seconds                               
         (error_code=DEVICE_BLOCKED)                                            
Raised error: Device blocked for 328 seconds (error_code=DEVICE_BLOCKED)
Traceback (most recent call last):
  File "/home/kye/Documents/Coding/Git/python-kasa/.venv/bin/kasa", line 10, in <module>
    sys.exit(cli())
             ^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/cli/common.py", line 282, in __call__
    asyncio.run(self.main(*args, **kwargs))
  File "/usr/lib/python3.12/asyncio/runners.py", line 194, in run
    return runner.run(main)
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
    return self._loop.run_until_complete(task)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/asyncio/base_events.py", line 687, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/.venv/lib/python3.12/site-packages/asyncclick/core.py", line 1126, in main
    rv = await self.invoke(ctx)
         ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/cli/common.py", line 270, in invoke
    _handle_exception(self._debug, exc)
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/cli/common.py", line 268, in invoke
    return await super().invoke(ctx)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/.venv/lib/python3.12/site-packages/asyncclick/core.py", line 1750, in invoke
    return await _process_result(await sub_ctx.command.invoke(sub_ctx))
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/.venv/lib/python3.12/site-packages/asyncclick/core.py", line 1728, in invoke
    rv = await super().invoke(ctx)
         ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/.venv/lib/python3.12/site-packages/asyncclick/core.py", line 1496, in invoke
    return await ctx.invoke(self.callback, **ctx.params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/.venv/lib/python3.12/site-packages/asyncclick/core.py", line 829, in invoke
    rv = await rv
         ^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/cli/discover.py", line 41, in discover
    return await ctx.invoke(detail)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/.venv/lib/python3.12/site-packages/asyncclick/core.py", line 829, in invoke
    rv = await rv
         ^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/cli/discover.py", line 102, in detail
    discovered = await _discover(
                 ^^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/cli/discover.py", line 221, in _discover
    await print_discovered(dev)
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/cli/discover.py", line 89, in print_discovered
    await dev.update()
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/smart/smartdevice.py", line 271, in update
    await self._negotiate()
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/smartcam/smartcamdevice.py", line 238, in _negotiate
    resp = await self.protocol.query(initial_query)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/protocols/smartprotocol.py", line 136, in query
    return await self._query(request, retry_count)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/protocols/smartprotocol.py", line 197, in _query
    raise ex
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/protocols/smartprotocol.py", line 141, in _query
    return await self._execute_query(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/protocols/smartcamprotocol.py", line 153, in _execute_query
    return await self._execute_multiple_query(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/protocols/smartprotocol.py", line 248, in _execute_multiple_query
    response_step = await self._transport.send(smart_request)
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/transports/sslaestransport.py", line 655, in send
    await self.perform_handshake()
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/transports/sslaestransport.py", line 389, in perform_handshake
    result = await self.perform_handshake1()
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/kye/Documents/Coding/Git/python-kasa/kasa/transports/sslaestransport.py", line 581, in perform_handshake1
    raise DeviceError(msg, error_code=SmartErrorCode.DEVICE_BLOCKED)
kasa.exceptions.DeviceError: Device blocked for 328 seconds (error_code=DEVICE_BLOCKED)
Exception ignored in: <function ClientSession.__del__ at 0x71025611c9a0>
Traceback (most recent call last):
  File "/home/kye/Documents/Coding/Git/python-kasa/.venv/lib/python3.12/site-packages/aiohttp/client.py", line 443, in __del__
  File "/usr/lib/python3.12/asyncio/base_events.py", line 1854, in call_exception_handler
  File "/usr/lib/python3.12/logging/__init__.py", line 1568, in error
  File "/usr/lib/python3.12/logging/__init__.py", line 1684, in _log
  File "/usr/lib/python3.12/logging/__init__.py", line 1700, in handle
  File "/usr/lib/python3.12/logging/__init__.py", line 1762, in callHandlers
  File "/usr/lib/python3.12/logging/__init__.py", line 1028, in handle
  File "/home/kye/Documents/Coding/Git/python-kasa/.venv/lib/python3.12/site-packages/rich/logging.py", line 168, in emit
  File "/home/kye/Documents/Coding/Git/python-kasa/.venv/lib/python3.12/site-packages/rich/logging.py", line 224, in render
  File "/usr/lib/python3.12/pathlib.py", line 1164, in __init__
  File "/usr/lib/python3.12/pathlib.py", line 358, in __init__
ImportError: sys.meta_path is None, Python is likely shutting down

Device: Tapo C320WS
Hardware version: 2.0
Firmware version: 1.4.3 Build 251014 Rel.59660n

Please let me know if there's anything I could do to resolve this issue.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions