接下来我局域网抓包,看看数据到底发送的是什么,
日志如下:
Code: Select all
[0;32mI (27035) OTA: Starting OTA task[0m
[0;32mI (27036) OTA: url: http://cloud.ifuzhi.com:8888/attachment/hardware/mattr/Mattress_1635242590766.bin [0m
[0;32mI (27101) esp_https_ota: Starting OTA...[0m
[0;32mI (27102) esp_https_ota: Writing to partition subtype 17 at offset 0x1b0000[0m
[0;31mE (27144) esp_ota_ops: OTA image has invalid magic byte (expected 0xE9, saw 0x4f)[0m
[0;31mE (27144) esp_https_ota: Error: esp_ota_write failed! err=0x1503[0m
[0;31mE (27150) OTA: Firmware upgrade failed[0m
所以很奇怪,数据明明就传输了,但是没有从第一包数据里去取数据,而是从第二包里取数据了,所以报了这个错误?怎么解决呢,去看源码
-----------------------------------------------------------------------------------------------------------------------------
2021.10.26
基本分析应该是丢掉了第一包里的数据,看了看源码,没太好下手。
进一步发现,公司服务器是chunked分段的方式,而demo用的python是Content-Type : application/octet-stream ,所以把公司服务器改成application/octet-stream 的形式,问题解决。先这样吧。