Firmware upgrade command fails to send last 148 bytes of upgrade packages #18

Closed
opened 2022-06-29 20:34:25 +00:00 by brennana · 2 comments

For the past couple InfiniTime releases, I have been unable to successfully use itd to upgrade the firmware, and have had to fall back onto other software like Siglo.

It seems that each time I attempt a firmware upgrade, itd will manage to send most of the package over, but consistently falls short of the last 148 bytes, yet deems the transaction as successful, causing an error on the PineTime.

Perhaps this is a display issue, but in any case the upgrade transaction never completes successfully on the PineTime.

[andy@pinephonepro ~]$ itctl fw upgrade -a ~/Builds/pinetime-mcuboot-app-dfu-1.10.0.zip 
400400 / 400548 B |------------------------------------------------------------------------------------------------------------------>| 99.96% 2m35s
Transferred 400548 B in 2m34.538866184s.
Remember to validate the new firmware in the InfiniTime settings.
For the past couple InfiniTime releases, I have been unable to successfully use itd to upgrade the firmware, and have had to fall back onto other software like Siglo. It seems that each time I attempt a firmware upgrade, itd will manage to send most of the package over, but consistently falls short of the last 148 bytes, yet deems the transaction as successful, causing an error on the PineTime. Perhaps this is a display issue, but in any case the upgrade transaction never completes successfully on the PineTime. ``` [andy@pinephonepro ~]$ itctl fw upgrade -a ~/Builds/pinetime-mcuboot-app-dfu-1.10.0.zip 400400 / 400548 B |------------------------------------------------------------------------------------------------------------------>| 99.96% 2m35s Transferred 400548 B in 2m34.538866184s. Remember to validate the new firmware in the InfiniTime settings. ```
Author

Just after reporting this, I realized my second attempt today somehow was successful, though I thought the device had reported an error again, and the above output was displayed both attempts. I guess this is just a minor display issue, though I'm not sure why the PineTime reported an error on my first attempt.

Just after reporting this, I realized my second attempt today somehow was successful, though I thought the device had reported an error again, and *the above output was displayed both attempts*. I guess this is just a minor display issue, though I'm not sure why the PineTime reported an error on my first attempt.
Owner

Yes, this has happened to me too. I don't know what's causing it, as looking at the dbus messages, ITD does send the entire firmware. The reason you don't see 400548/400548 B is because the firmware transfer happens in chunks of 20 bytes and progress updates are sent by InfiniTime every 10 chunks, so the last 148 bytes would not transmit a progress update back to ITD.

If the success message was printed, it means ITD sent everything, because the channel used to transmit progress back to itctl is only closed once ITD sends everything. If not everything was sent, the progress bar would just stay in the same spot forever, until you kill itctl via ^C.

Since it seems this is working fine, I will close this issue for now.

Yes, this has happened to me too. I don't know what's causing it, as looking at the dbus messages, ITD does send the entire firmware. The reason you don't see 400548/400548 B is because the firmware transfer happens in chunks of 20 bytes and progress updates are sent by InfiniTime every 10 chunks, so the last 148 bytes would not transmit a progress update back to ITD. If the success message was printed, it means ITD sent everything, because the channel used to transmit progress back to `itctl` is only closed once ITD sends everything. If not everything was sent, the progress bar would just stay in the same spot forever, until you kill `itctl` via ^C. Since it seems this is working fine, I will close this issue for now.
Sign in to join this conversation.
No description provided.