I'm also documenting this for others. Personally I've used pytapo because mitm the actual camera to internet traffic didn't work (likely cert-pinning).
Header for all following python snippets, I reconnected after each step using this code:
from pytapo import Tapo
user = "admin" # user you set in Advanced Settings -> Camera Account
password = "admin" # password you set in Advanced Settings -> Camera Account
host = "192.168.179.104" # ip of the camera, example: 192.168.1.52
tapo = Tapo(host, user, password, printDebugInformation=True)
I'm also documenting this for others. Personally I've used pytapo because mitm the actual camera to internet traffic didn't work (likely cert-pinning).
Header for all following python snippets, I reconnected after each step using this code:
My camera (bought last week) was initially this:
Firmware from factory:
I checked for fw with this:
request:
{'data': {'method': 'multipleRequest', 'params': {'requests': [{'method': 'checkFirmwareVersionByCloud', 'params': {'cloud_config': {'check_fw_version': 'null'}}}, {'method': 'getCloudConfig', 'params': {'cloud_config': {'name': ['upgrade_info']}}}]}}, 'headers': {'Host': 'REDACTED', 'Referer': 'REDACTED', 'Accept': 'application/json', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'Tapo CameraClient Android', 'Connection': 'close', 'requestByApp': 'true', 'Content-Type': 'application/json; charset=UTF-8'}, 'verify': False}
status: 200 response:{'result': {'responses': [{'method': 'checkFirmwareVersionByCloud', 'result': {}, 'error_code': 0}, {'method': 'getCloudConfig', 'result': {'cloud_config': {'upgrade_info': {'type': '3', 'version': '1.0.10 Build 230803 Rel.60903n', 'release_date': '2023-09-15', 'download_url': 'http://download.tplinkcloud.com/firmware/Tapo_C220v1_en_1.0.10_Build_230803_Rel.60903n_up_boot-signed_1694765292648.bin', 'location': '0', 'release_log': 'Modifications and Bug Fixes:\n1. Enhanced stability and security.\n2. Enhanced the performance of the on-screen display.\n3. Fixed some minor bugs. ', 'release_log_url': 'undefined yet'}}}, 'error_code': 0}]}, 'error_code': 0}
(Note this actually conflicts https://www.tp-link.com/en/support/download/tapo-c220/#Firmware-Release-Notes which also lists
Tapo C220(EU)_V1_1.1.4 Build 231109
/Published Date: 2023-11-22
)I then did the upgrade using:
(LED starts flashing, camera says "{'wait_time': '60', 'error_code': 0}" and will reboot a bit later)
Firmware after upgrade:
repeating
tapo.isUpdateAvailable()
actually won't show any new firmwares either. Edit: Initially it did show the same firmware, but now it simply shows{'data': {'method': 'multipleRequest', 'params': {'requests': [{'method': 'checkFirmwareVersionByCloud', 'params': {'cloud_config': {'check_fw_version': 'null'}}}, {'method': 'getCloudConfig', 'params': {'cloud_config': {'name': ['upgrade_info']}}}]}}, 'headers': {'Host': 'REDACTED', 'Referer': 'REDACTED', 'Accept': 'application/json', 'Accept-Encoding': 'gzip, deflate', 'User-Agent': 'Tapo CameraClient Android', 'Connection': 'close', 'requestByApp': 'true', 'Content-Type': 'application/json; charset=UTF-8'}, 'verify': False}
URL: