No host name given, trying discovery..
Discovering devices on 255.255.255.255 for 3 seconds
Found 0 devices
Found 1 devices that failed to authenticate
Tapo plug requires authentication.
Is there a way to provision from python-kasa like the previous devices? Is there a default username/password or some new protocol that must be reverse engineered (maybe bluetooth)?
Hi, the support for the new protocols is very new and there are many things that are not yet implemented and/or known (#559). Apparently some devices do have a setup account (
) but I couldn't get those working on a non-provisioned L530 bulb. Maybe @sdb9696 has some insights on that.
It is unclear how the provisioning works (e.g., if it involves bt, L530 opened a wifi accesspoint so I think it's still somehow over the wifi), or at least I haven't heard anything on that matter so far. So I suppose it just needs someone to sit down and figure it out how it works.
According to https://k4czp3r.xyz/blog/post/reverse-engineering-tp-link-tapo the initial provisioning is indeed done over a bluetooth connection, so integrating support for that would be rather cumbersome (if there is no wifi-based APIs, which may very well exist). Just wanted to leave the link here in case someone wants to explore this path further.
@agoode are you passing your tplink cloud --username and --password as parameters to the CLI? It seems the KP125M devices are working with the new protocol changes so your error output above suggests you might not be.
If it still isn't working you could try git checkout on #569 and run kasa --username YOURUSERNAME --password YOURPASSWORD discover --show-discovery-results and send us the output (masked) if it still isn't working.
No, I want to do this without tplink cloud. With the old plugs, I could use kasa to provision out of the box without a connection to the internet. I am hoping there is a way to do this with the new ones also.
AFAIK you don’t need the internet to talk to the device but the device gets your TP-Link credentials from the cloud and saves them. The newer TPLink devices force you to use your tplink cloud account details to authenticate. Are you are using the TAPO app on your phone? If so that is storing and sending your tplink username and password to the device.
https://arxiv.org/pdf/2308.09019.pdf contains a section "Attack scenario 5 - MITM attack with an unconfigured Tapo
L530E" with the configuration payloads that could be useful if someone wants to explore how to provision these.
For L900, test@tp-link.net:test as credentials allowed provisioning the device using kasa wifi join. In contrast to just changing the wifi credentials which caused immediate disconnect, unprovisioned device reports back the device id in response (at least mine did):
Activity
rytilahti commented on Dec 4, 2023
Hi, the support for the new protocols is very new and there are many things that are not yet implemented and/or known (#559). Apparently some devices do have a setup account (
python-kasa/kasa/klapprotocol.py
Line 87 in bfd1d6a
It is unclear how the provisioning works (e.g., if it involves bt, L530 opened a wifi accesspoint so I think it's still somehow over the wifi), or at least I haven't heard anything on that matter so far. So I suppose it just needs someone to sit down and figure it out how it works.
rytilahti commented on Dec 7, 2023
According to https://k4czp3r.xyz/blog/post/reverse-engineering-tp-link-tapo the initial provisioning is indeed done over a bluetooth connection, so integrating support for that would be rather cumbersome (if there is no wifi-based APIs, which may very well exist). Just wanted to leave the link here in case someone wants to explore this path further.
sdb9696 commented on Dec 7, 2023
@agoode are you passing your tplink cloud --username and --password as parameters to the CLI? It seems the KP125M devices are working with the new protocol changes so your error output above suggests you might not be.
If it still isn't working you could try git checkout on #569 and run kasa --username YOURUSERNAME --password YOURPASSWORD discover --show-discovery-results and send us the output (masked) if it still isn't working.
agoode commented on Dec 7, 2023
No, I want to do this without tplink cloud. With the old plugs, I could use kasa to provision out of the box without a connection to the internet. I am hoping there is a way to do this with the new ones also.
sdb9696 commented on Dec 7, 2023
AFAIK you don’t need the internet to talk to the device but the device gets your TP-Link credentials from the cloud and saves them. The newer TPLink devices force you to use your tplink cloud account details to authenticate. Are you are using the TAPO app on your phone? If so that is storing and sending your tplink username and password to the device.
agoode commented on Dec 7, 2023
I haven't used any app yet. But it looks like I will need to do this for now. Thank you!
rytilahti commented on Jan 2, 2024
https://arxiv.org/pdf/2308.09019.pdf contains a section "Attack scenario 5 - MITM attack with an unconfigured Tapo
L530E" with the configuration payloads that could be useful if someone wants to explore how to provision these.
rytilahti commented on Jan 4, 2024
For L900, test@tp-link.net:test as credentials allowed provisioning the device using kasa wifi join. In contrast to just changing the wifi credentials which caused immediate disconnect, unprovisioned device reports back the device id in response (at least mine did):
DEBUG 192.168.0.1 << {'error_code': 0, 'result': {'device_id': 'xxxxxxxxxxxxxxxxxxxx'}}Prepare 0.6.1
Prepare 0.6.1 (#709)
Prepare 0.6.1 (python-kasa#709)