Hello,
I am trying to use the OTA feature on my Nordic Thingy91. I’ve been trying to simply upload my zephyr.signed.bin file to the Golioth console, and have deployed it, with no change to my device. I’m not 100% sure what I need to include in my prj.conf, or in my header on main.c, and/or what code I need to include in my main.c to enable checking for firmware updates.
Expected Behavior
Able to flash OTA to Thingy91 from Golioth Console
Actual Behavior
When deploying, no changes to Thingy91 occur.
Environment
Hardware: Nordic Thingy:91 (nRF9160)
nRF Connect SDK
Zephyr
Zephyr SDK
Golioth Firmware SDK
Logs and Console Output
N/A
Attempts to Resolve
I’ve tried to include files like golioth/fw_update.h, golioth/ota.h, and configs like CONFIG_GOLIOTH_FW_UPDATE, CONFIG_GOLIOTH_OTA.
Have you had a chance to check out the thingy91-golioth repo? That has OTA implemented and you can even download a pre-built binary if you’d like to see it working.
One thing that you didn’t mention, but may have implemented, is the init code for the fw_update service.
golioth_fw_update_init(client, _current_version);
In the above repo, it’s on line 74 of main.c. This is derived from our fw_update sample in our SDK (linking to the Zephyr sample, since you’re using NCS), that it probably is a good idea to check out, as well.
This code is passing the current version to the SDK and then it is setting up a listener for newly published versions. I would guess your device doesn’t have that set up yet.
I was just able to OTA update my new binary! The console UI is great very helpful at displaying the current version, and its state in the process of downloading a new update. Thanks again!