This is a tool to update the nRF91 modem firmware using the probe-rs crate. It provides both a CLI and library interface. Used in production on the nRF9160 Feather and nRF9151 Feather.
Validated working on:
- nRF9160
- nRF9151
- nRF9161
Install Rust using rustup.
On macOS and Linux:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shOn Windows download and run the installer from rustup.rs, then open a new PowerShell or Command Prompt window.
After installation, confirm the toolchain is available:
rustc --version
cargo --versioncargo install --git https://github.com/circuitdojo/modem_updater.gitThis places the updater binary in ~/.cargo/bin (or the equivalent on Windows).
Sometimes you may need to install dependencies. If your compilation fails here are some suggestions:
- Linux: ensure
libusb-1.0is present (sudo apt install libusb-1.0-0). - macOS: install Homebrew and run
brew install libusbif it is not already available. - Windows: if necessary, use Zadig to install a WinUSB driver for your debug probe.
To verify the modem firmware, run:
updater verify <path_to_firmware_zip>To program and verify the modem firmware, run:
updater program <path_to_firmware_zip>Install Rust using rustup.
On macOS and Linux:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shOn Windows download and run the installer from rustup.rs, then open a new PowerShell or Command Prompt window.
After installation, confirm the toolchain is available:
rustc --version
cargo --versiongit clone https://github.com/circuitdojo/modem_updater.git
cd modem_updaterBuild a release binary locally:
cargo build --releaseThe resulting executable are located in target/release/:
updater- Main firmware update tool
This project is based on the work of @maxd-nordic in the pyOCD project.
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT) at your option.