Hello,
i have a problem with the OTA Update.
If i use the http link of the update file
_httpUpdate_return ret = ESPhttpUpdate.update(client, "http://iot.mynet.lan/bin/D1Mini_1Stripe_Movement_Sensor_Display_LightSensor_Bed.ino.bin.signed"); - everything works perfect - the update is done.
If i use a php script,
t_httpUpdate_return ret = ESPhttpUpdate.update(client, "http://iot.mynet.lan/checkArduinoUpdate.php");
it fails with:
[httpUpdate] Header read fin.
[httpUpdate] Server header:
[httpUpdate] - code: 200
[httpUpdate] - len: 396580
[httpUpdate] - MD5: 92aef8810a7451f80c6c599107b413f4
[httpUpdate] ESP8266 info:
[httpUpdate] - free Space: 1699840
[httpUpdate] - current Sketch Size: 396320
[httpUpdate] runUpdate flash...
[httpUpdate] Magic header does not start with 0xE9
HTTP_UPDATE_FAILED Error (-106): Verify Bin Header Failed
I have validated the (php) returned file on my computer - it starts with 0xE9.
Here is the relevant php code: (copied from the supplied example)
function sendFile($path) {
header($_SERVER["SERVER_PROTOCOL"].' 200 OK', true, 200);
header('Content-Type: application/octet-stream', true);
header('Content-Disposition: attachment; filename='.basename($path));
header('Content-Length: '.filesize($path), true);
header('x-MD5: '.md5_file($path), true);
readfile($path);
}
It seems, that the somehow the return of the update file is different between php and direct url link, although the browser downloaded file also starts with 0xE9.
best regards
Heiko