Conversation
|
Question is, what do we do when a devices replies with |
|
@burmistrzak this should already be fixed in #1758. We can just ignore the malformed since the device is expected to continue requesting blocks at the proper offset. The ignore was missing, which caused the undesired state after the recent PR that added default response matching. |
|
@Nerivec That's good to know! I've got a bunch of outdated Hue remotes still around. So I should be able to verify the fix. 🤞🤞🤞 |
|
Seems to work as expected on Telink! Device just stops requesting blocks after receiving "ota abort". I don't see a default response or some confirmation. If I update again, the device continues its progress, requesting the offset where it stopped. Even if I give it "no image available" or I reboot it, it doesn't delete the stored progress. Also device is still working properly after all the OTAs and aborts. Side-note, I'm not sure if I get the full picture in Wireshark with ember-zli, SLZB-06M MG21. I sometimes get this error during OTA (with fast settings 🙂).
|
|
Nice details, fantastic!
I wouldn't expect one, since what we send is a response (response to block request with ABORT).
I assume it was an end request with status ABORT? Interesting about the resume behavior. Looks like it's handling edge cases properly though. Any chance you have a Silabs device to test with? Covers a lot of devices nowadays 😁 |
Will check again
Yes, I have plenty. I aborted a Silabs IKEA button a few times. It worked well, but I didn't have time to finish the ota. This one never saved progress on abort. Will test some more |
|
Thanks! |
On paper (i.e. spec), this should allow to abort an in-progress OTA.
Though, since vastly untested, and with the many stacks out there, it needs testing with various devices to ensure no undesired behavior can result of this.
The device has to properly process the response, and abort the OTA process on its side. While it should be fairly simple, the lack of handling could send the device into a permanently unanswered repeat of last block request (until it eventually times out on its end, if). I guess worse case scenario, albeit unlikely, would be bricking the device if for some reason the abort isn't properly handled (could try to flash with a partial image, keep a partial image in slot that could mess with device state detection...).
@andrei-lazarov @burmistrzak if you have some time to test this with actual devices.