{"id":581,"date":"2025-10-24T17:34:28","date_gmt":"2025-10-25T01:34:28","guid":{"rendered":"https:\/\/nramkumar.org\/tech\/?p=581"},"modified":"2025-10-26T19:19:44","modified_gmt":"2025-10-27T03:19:44","slug":"fixing-tp-link-kasa-tapo-unable-to-authenticate-error-with-home-assistant","status":"publish","type":"post","link":"https:\/\/nramkumar.org\/tech\/blog\/2025\/10\/24\/fixing-tp-link-kasa-tapo-unable-to-authenticate-error-with-home-assistant\/","title":{"rendered":"TP-Link Kasa\/Tapo and Home Assistant &#8211; Fixing Unable to authenticate error"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I have started <s>wasting time<\/s> setting up Home Assistant. I have a lot of TP-Link Kasa devices at home. Home Assistant picked them up automatically and everything worked. As it happened, I bought a TP-Link Kasa smart power strip a couple of weeks ago. After setting it up with the Kasa app, I saw Home Assistant had found the device. But any attempt to add the device by clicking on Add, popped up an authentication dialog and entering my TP-Link credentials (email\/username didn&#8217;t matter) failed with this annoying error message:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Unable to authenticate: Device response did not match our challenge on ip &lt;ip address&gt;, check that your e-mail and password (both case-sensitive) are correct.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">On a wild guess, I decided to do the following steps:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ignore the device in Home Assistant<\/li>\n\n\n\n<li>Add it manually by IP address<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Apparently that works to fix the problem! Hope this helps if you run into a similar issue.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Documenting this Shit Show better:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While that did work, it broke a while later and the device went offline. At that point, it could not be added back to Home Assistant (even after deleting it and trying to add it manually). The following steps &#8220;fixed&#8221; the issue but I expect it to be temporary:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Login to tplinkcloud.com &#8211; &#8220;reset&#8221; password (set it to the same as before)<\/li>\n\n\n\n<li>This still doesn&#8217;t fix the issue<\/li>\n\n\n\n<li>It does remove your Alexa skill connection if you had one<\/li>\n\n\n\n<li>Go to Alexa and re-add the skill<\/li>\n\n\n\n<li>At this point, the fix above (ignore in HA + add via IP) works again<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Update &#8211; the real issue is a firmware update from TP-Link changed their janky encryption\/authentication mechanism. The community is working on <a href=\"https:\/\/github.com\/python-kasa\/python-kasa\/pull\/1592\">reverse engineering this shit show and putting a fix for this.<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In the meantime, any other so called &#8220;fix&#8221; for the issue (like mine above) is likely temporary and will run into the same failure at some point later. Also, I should just simply block Internet access to all these devices and also stop updating their firmware forever. It&#8217;s not like the updates do anything useful.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I have started wasting time setting up Home Assistant. I have a lot of TP-Link Kasa devices at home. Home Assistant picked them up automatically and everything worked. As it happened, I bought a TP-Link Kasa smart power strip a couple of weeks ago. After setting it up with the Kasa app, I saw Home&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-581","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/nramkumar.org\/tech\/wp-json\/wp\/v2\/posts\/581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nramkumar.org\/tech\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nramkumar.org\/tech\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nramkumar.org\/tech\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nramkumar.org\/tech\/wp-json\/wp\/v2\/comments?post=581"}],"version-history":[{"count":6,"href":"https:\/\/nramkumar.org\/tech\/wp-json\/wp\/v2\/posts\/581\/revisions"}],"predecessor-version":[{"id":593,"href":"https:\/\/nramkumar.org\/tech\/wp-json\/wp\/v2\/posts\/581\/revisions\/593"}],"wp:attachment":[{"href":"https:\/\/nramkumar.org\/tech\/wp-json\/wp\/v2\/media?parent=581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nramkumar.org\/tech\/wp-json\/wp\/v2\/categories?post=581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nramkumar.org\/tech\/wp-json\/wp\/v2\/tags?post=581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}