What I did when Infinitime wouldn’t update on my Pinetime

Recently, Infinitime 1.14.0 was released, and that was great. What was not so great was when I couldn’t update the version of the OS on my Pinetime. My computer would repeatedly connect and disconnect my Pinetime smart watch for some odd reason. I was eventually able to update it. What follows are the steps I took to make it update.

I did this on Linux Mint 21.3, with the program itd version 1.1.0. Since this involves a number of technical steps, I would advise that only people with advanced Linux skills attempt this.

At first, I tried updating this with my smart phone (a Pixel 5 running CalyxOS) and the app Gadgetbridge. It had failures while trying to transfer the file to the Pinetime. When I asked the devs about why I couldn’t update it, they said that the current version of Gadgetbridge (0.77.0 at the time of this article) was having troubles with updating Infinitime on Android 14 (CalyxOS is currently based on Android 14). After that, I went to my computer and tried updating it from there.

I first tried pairing the Pinetime with my computer. My usual go to for pairing a Bluetooth device with my computer is Blueman (Bluetooth Manager). Since I had connected my Pinetime before, I figured I could easily connect with it. That was not the case this time, as the Pinetime started connecting and disconnecting. Next, I tried removing and re-pairing the smart watch. Strangely, even after putting in the pairing PIN, the Pinetime showed the same connecting and disconnecting problem. I went back to the devs, and they suggested removing it from my phone. After deleting the pairing, I was able to successfully pair it with my computer. Then I had to actually update the Pinetime.

I had already downloaded the files necessary for updating Infinitime (the “mcuboot” and “resources” files) and tried using the itd program. There are easier to use programs (such as Siglo and the frontend to itd), but I had problems pairing the Pinetime with those programs, as well as errors with transferring the necessary files. I first had to get itd to do its thing:

systemctl start --user itd

This command starts up a service under the current user which will allow itd to talk with the Pinetime. I then had to transfer the “mcuboot” file to the Pinetime, which was a little tricky. I tried a few commands with itd, but it kept giving me the error “Upgrade command requires either archive or init packet and firmware.” With some trial and error (and the use of the itd help firmware command) I figured out I needed to use the -a option. Here’s the command I used to update the Pinetime’s “mcuboot” part:

itctl fw upg -a pinetime-mcuboot-app-dfu-1.14.0.zip

A user can also use the command itctl firmware upgrade -a pinetime-mcuboot-app-dfu-1.14.0.zip. As you may guess, this causes itd to upgrade the firmware on the Pinetime. Next I had to update the resources on the Pinetime. This didn’t go as I had planned.

I thought I could use the command itctl fw upg -r infinitime-resources-1.14.0.zip, but that gave the same “Upgrade command requires…” error. Doing another search, I came across this issue on the itd Github issue tracker. While it didn’t concern my problem, it did point me towards the actual solution. I had forgotten that there’s a resources keyword when using itd. After looking at the options for the keyword, I used this command to update the Infinitime resources:

itctl resources load infinitime-resources-1.14.0.zip

Just in case, I restarted the Pinetime a few times before pairing it with my mobile phone again. It was ready to go at that point, which is great, since I needed it to track my steps, track messages, control my computer’s video player, and look at the time.

Hope this article is helpful to anyone with a Pinetime.

Jason Anderson

Jason Anderson has been hacking up computers for nearly 20 years and has been using Linux for over 15 years. Among that, he has a BBA in Accounting. Look him up on Twitter at @FakeJasonA and on Mastodon on @ertain@mast.linuxgamecast.com

Leave a Reply

Your email address will not be published. Required fields are marked *