Golioth Firmware SDK v0.22.0

Earlier this week, we released v0.22.0 of the Golioth Firmware SDK, our sixth and final release of 2025. Alongside our usual bevy of bugfixes and minor improvements, this version introduces support for rotating certificates via Golioth’s integration with external PKI providers, routes logs through Pipelines, and reorganizes our firmware update reference implementation.

Certificate Rotation

We’ve long advocated for the use of certificates and public key infrastructure (PKI) to secure and identify devices. Compared to pre-shared keys (PSKs), the other form of authentication supported by Golioth, PKI provides advantages in scale and security by removing the need to explicitly create and store secrets in Golioth. But PKI comes with additional operational challenges compared to PSKs, which can be especially difficult in an embedded context. Chief among those is the need to periodically rotate certificates on devices in the field. Earlier this week, we announced support for external PKI providers to make certificate rotation easier than ever.

In this release of the Golioth Firmware SDK, we’ve added a new service that allows devices to upload a certificate signing request (CSR) to Golioth, where we’ll forward it on to your PKI provider and then send down the resulting signed certificate back to the device. There’s a new example in the SDK that shows how it all works. In this example, we take an existing key stored in the filesystem and create a CSR in standard x.509 format using mbedTLS, but the SDK is agnostic to how keys and CSRs are created and stored. For example, you could generate a new key-pair in a secure element on the device, exporting only the CSR while the private key remains in secure storage. We’ll have more to share on secure elements in the new year.

Logs Through Pipelines

Traditionally, the Golioth Firmware SDK has delivered device logs emitted by customer firmware directly to the Golioth Logs service. With this release, logs are now delivered to Golioth Pipelines by default, allowing users to transform and route logs to the destination of their choice, including the Golioth Logs service. The interaction with the logging service in the SDK is unchanged – either using the GLTH_LOGx macros or plugging into the platform’s logging subsystem.

To preserve logging functionality for existing projects, users will need to either enable CONFIG_GOLIOTH_LOG_LEGACY in the SDK configuration, or add a pipeline to route logs to the destination of their choice, such as this one that sends logs to the Golioth Logs service:

filter:
  path: "/logs"
  content_type: application/cbor
steps:
  - name: step-0
    transformer:
      type: cbor-to-json
      version: v1
    destination:
      type: logs
      version: v1

You can read more about sendings logs through Pipelines here.

Firmware Update Reference

Golioth OTA makes it easy to send the right artifacts to devices in the field. Once the artifacts get there, the device will need to do something with them, but what exactly is heavily dependent on the specific application running on that device. The SDK has long included a reference firmware update implementation that looks for updates to a single firmware image, and downloads and applies the update using the platform’s default storage partitions and bootloader. For many users, this is all the functionality they need and they can use this implementation as is. Users with more complex application structures, such as AI models, multiple MCUs or graphical assets, can build their own update mechanism leveraging the Golioth OTA service.

To better reflect the reference nature of the firmware update implementation in the SDK, we’ve moved it out of the core SDK and into the samples. This change also allows us to remove abstractions in the reference implementation and instead use platform-specific API calls, making the sample more useful as a instructional tool.

Sam Friedman
Sam Friedman
Sam leads Firmware Engineering at Golioth. Previously, Sam has built and shipped consumer electronics and IoT devices used by millions around the world.

Post Comments

No comments yet! Start the discussion at forum.golioth.io

More from this author

Related posts

spot_img

Latest posts

Getting Started with the Golioth Management API

The Golioth Management API is an easy to use interface to all your devices that are connecting through Golioth. This walkthrough shows you how to use TypeScript to interact with the API in a type-safe, low-friction way.

Find Breaking Changes in Zephyr Using Git Bisect

Finding breaking changes in upstream code is a difficult process. Git bisect and good commit discipline (like the Zephyr team maintains) helps to quickly pinpoint issues so you can pull in changes as needed.

A Physical Meme Terminal for Distributed Teams

Have you ever wanted to bypass slack and send a meme directly to your co-worker's desk? This hack day project builds on top of work from 2022 and pulls in some new features of Golioth's IoT platform, as well as some vibe coded front end / back end work to make the experience smoother. Dive into each part of the project in this blog and associated video.

Want to stay up to date with the latest news?

Subscribe to our newsletter and get updates every 2 weeks. Follow the latest blogs and industry trends.