Embedded Rust with Golioth

Hey folks! As the embedded Rust ecosystem continues to mature, including the recent v1.0 release of embedded-hal and new crates from the Embassy framework, we have heard from more and more Golioth users interested in leveraging Rust in their firmware applications. Golioth has previously experimented with a Rust firmware SDK to complement our well-established cross-platform C SDK, but it is not currently formally supported.

The purpose of this topic is to bring together community members who are currently leveraging or are planning to leverage Rust in their firmware applications, and to discuss the current benefits and limitations of doing so. This will help us gain a collective understanding of key areas that may need work in the upstream ecosystem, as well as gather requirements for a potential future iteration of a Golioth Rust firmware SDK.

If you are building Rust firmware, working on projects in the embedded Rust community, or a Golioth user who is curious about the benefits of embedded Rust – we want to hear from you!


I’ll kick things off with a little about the work I’ve done. I’ve used Golioth with the Conexio Stratus dev board from Conexio Tech. The best setup I’ve found is the nrf-modem crate in tandem with Embassy which gets you async operations and more.

My latest work is trying to get modem-tracing working in nrf-modem. I’ve got it working on the device, but I have had trouble routing the traces to the Cellular Monitor dev tool from Nordic-Semi. Using a cellular debugging tool like Cellular Monitor can be very important with being succesful, hence my focus on the new version. The old version was LTE Link Monitor.

One of my dev branches has my socket to Golioth split into TX and RX halves, each running in its own Embassy task. Making a request generates and logs a token to match responses against. Once I figure out the tracing, I’ll continue to work on token matching in order to leverage it for registering observers :slight_smile: .

1 Like

I’ve successfully transferred modem traces to the Nordic cellular monitor :slight_smile: . Now, I’m looking into tracing while also allowing AT commands to be transferred. It’s been a little tricky as modem traces are expected to be collected at 1M baud and AT commands at 115,200 baud.

1 Like