Skip to content
88

Embedded Rust

Curated list of resources for Embedded and Low-level development in the Rust programming language

8.1k stars501 forks604 entriesLast push Sep 11, 2026 (19 days ago)License Other

This page lists names, links and short descriptions. The original list on GitHub is the source and belongs to its authors.

Community

Embedded WG

, including newsletters with progress updates.

Community >Community Chat Rooms

#rust-embedded-space:matrix.org

Most Embedded Rust related Matrix rooms are in the Rust Embedded Space

In 14 listsDetails

embedded.rs-wasm-iot

English Telegram chat about Rust and WASM for microcontrollers and IoT

embedded.rs

Telegram chat about Rust for microcontrollers in the Russian language

rust-embedded:QQ group

Chinese community for Rust embedded

Books, blogs, and training materials >Free and public materials

The Embedded Rust Book

An introductory book about using the Rust Programming Language on "Bare Metal" embedded systems, such as Microcontrollers.

The Rust on ESP Book

This book aims to provide a comprehensive guide on using the Rust programming language with Espressif SoCs and modules.

Embedded Rust (no_std) on Espressif

Training for Rust using no_std (bare metal) approach on ESP32-C3, officially supported by Espressif.

Embedded Rust (std) on Espressif

Training for Rust using std approach development on ESP32-C3 by Ferrous Systems. Uses the community-maintained esp-idf-hal ecosystem.

Discovery

by @rust-embedded — this book is an introductory course on microcontroller-based embedded systems that uses Rust as the teaching language. Original author: @japaric

In 2 lists

Embedded Rust Workshop on the micro:bit v2

This book has a strong focus on teaching the practical application of embassy-rs on the micro:bit v2.

Cortex-M Quickstart

by @japaric – a template and introduction to embedded Rust, suitable for developers familiar with embedded development but new to embedded Rust.

Writing an OS in Rust

A blog series creating a small operating system in Rust

In 5 listsDetails

MicroRust

Introductory book for embedded development in Rust on the micro:bit.

Physical Computing With Rust

A (WIP) guide to physical computing with Rust on the Raspberry Pi.

Writing an embedded OS in Rust on the Raspberry Pi

A set of tutorials that give a guided, step-by-step tour of how to write a monolithic Operating System kernel for an embedded system from scratch. Runs on the Raspberry Pi 3 and the Raspberry Pi 4.

Writing embedded drivers in Rust isn't that hard

A guide to building an embedded-hal driver. Part 2

Ferrous Systems' Embedded Training Courses: 2020-current edition

A hands-on training course for beginner and advanced learners of Embedded Rust, based on Nordic Semiconductor's nRF52840 hardware. This training was given at Oxidize Conferences and by Ferrous Systems to corporate customers.

Ferrous Systems' Knurling Sessions

are hands-on embedded projects that explore specific concepts using generally available hardware, building full systems and components using microcontrollers, sensors, and actuators.

DSP on STM32F407G-DISC1

Unofficial oxidization of the Digital Signal Processing using Arm Cortex-M based Microcontrollers: Theory and Practice book. The book isn't necessary to enjoy the examples and learn a functional DSP Rust coding style.

Building a sailing starter board with Rust (RTIC)

A step-by-step story/guide to build STM32-based PCB and program it with Rust for fun and games.

STM32F4xx with Embedded Rust at the HAL

A blog containing a series of tutorials demonstrating the use of several peripherals through simple examples leveraging the stm32f4xx-hal crate.

In 2 lists

Embedded Rust programming playlist

Various livestreams with Embedded Rust live coding

ESP32-C3 Rust Tutorials

Short videos and Github project implementing various peripherals of the ESP32-C3 with the end goal of creating a complete data logger application.

Tweede golf's workshop

A full workshop about Rust and embedded Rust. The embedded parts use the nRF52840-DK and a LIS3DH breakout board. (github source)

impl Rust on ESP32 Book

A hands-on guide that uses the ESP32 DevKit V1 to demonstrate how to work with various modules and sensors. (github source)

Pico Pico Book

A hands-on guide that uses the Pico 2 (RP2350) to demonstrate how to work with various modules and sensors. (github source)

Books, blogs, and training materials >Paid and commercially available materials

Simplified Embedded Rust: Standard Library Edition

This book provides a quick path to start learning embedded Rust with minimal setup. Book is based on ESP devices and the Wokwi Simulator. This edition uses the standard library development approach which is based on the ESP-IDF framework.

Simplified Embedded Rust: Core Library Edition

This book provides a quick path to start learning embedded Rust with minimal setup. Book is based on ESP devices and the Wokwi Simulator. This edition uses the core library development approach for bare metal development.

Embedded Software with Rust

A practical introduction to building firmware that is fast, efficient, and far safer than traditional embedded software written in C or C++.

In 3 lists

Tools

xargo

Rust package manager with support for non-default std libraries — build Rust runtime for your embedded system.; xargo is great, but since it's in maintenance mode, cargo-xbuild is catching up as its intended replacement.

In 3 lists

svd2rust

Generate Rust structs with register mappings from SVD files.

edc2svd

Generate SVD files for PIC32 devices from EDC files. -

embedded-hal-mock

Mock implementation of embedded-hal traits for testing without accessing real hardware. -

bindgen

Automatically generates Rust FFI bindings to C and C++ libraries. -

cortex-m semihosting

Semihosting for ARM Cortex-M processors

bobbin-cli

A Rust command line tool to simplify embedded development and deployment.

ferros

A Rust-based userland which also adds compile-time assurances to seL4 development.

cargo-flash

A small cargo subcommand to download your binary to your target chip. -

cargo-embed

A superset of cargo-flash with additional useful features like configuration file support, an RTT terminal, or a GDB server. -

cargo-hf2

A small cargo subcommand to download cargo builds to Microsoft UF2 bootloaders via HID USB . -

cargo-bloat

Find out what takes most of the space in your executable.

cargo-call-stack

Static, whole program stack usage analyzer.

cargo-dfu

Cargo extension for flashing embedded rust programs via DFU.

espflash

Serial flasher utility for Espressif SoCs and modules. -

espup

Tool for installing and maintaining Espressif Rust ecosystem. -

uf2

Converts binary files to Microsoft's UF2 format for copying over to mass storage device uf2 bootloaders -

probe-rs

a modern, embedded debugging toolkit, written in Rust

In 2 lists

embedded-test

A versatile test harness for embedded devices, supporting unit tests, integration tests, async tests, and more.

Knurling Tools

are developed by Ferrous Systems to ease the development process for building, debugging, and testing embedded Rust systems. These tools include:

defmt

a highly efficient logging framework that targets resource-constrained devices, like microcontrollers.

derive-mmio

Creating MMIO-friendly APIs for embedded peripherals.

flip-link

, a linker wrapper that provides stack overflow protection without an MMU by flipping the standard memory layout of ARM Cortex-M programs

app-template

, a cargo-generate powered project template for quickly setting up new projects using the Knurling Tools.

defmt-test

, an embedded test harness that lets you write and run unit tests as if you were using the built-in #[test] attribute, but will run on an embedded target

embedded-hal-compat

, a compatibility layer to provide interoperability between v0.2.x and v1.x.x hal implementations and drivers

Embassy start

is a GitHub repo template for setting up async embedded Rust projects that use Embassy. This particular template targets nRF hardware and networking using the Uarte for the purposes of illustration only.

svd-generator

CLI tool to parse flattened device tree files, and create a SVD file. -

rumbac

is a simple CLI flasher for Arduino Nano 33 BLE Rev2 / Sense Rev2 boards, using the SAM-BA protocol to talk with the Arduino-provided bootloader, porting just enough of the bossac tool to Rust

commitment-issues

Compile git metadata into your binary.

scope

Cross-platform serial-monitor TUI with an RTT interface (via probe-rs), hex/@tag input macros, search, session recording, and Lua plugins. -

In 2 lists

mint

A CLI tool for firmware parametrisation. Combines data (xlsx/json) and layouts (toml) to generate static binary files (hex/mot) with support for multiple ABIs, schema fingerprinting, checksums, header generation and more.

Real-time >Real-time Operating System (RTOS)

Drone OS

An Embedded Operating System for writing real-time applications in Rust.

FreeRTOS.rs

Rust interface for the FreeRTOS API

FreeRTOS-rust

Rust interface for FreeRTOS with Rust entry point and build support crate.

RIOT-OS

directly supports applications written in Rust, both in terms of build system integration and by having safe and idiomatic wrappers.

Tock

An embedded operating system designed for running multiple concurrent, mutually distrustful applications on low-memory and low-power microcontrollers

In 2 lists

Hubris

A real-time operating system built by Oxide Computer to run the Service Controller processor in the mainboards of their rack-mount servers.

Zephyr

An embedded RTOS, written in C, with support for writing applications in Rust.

Ariel OS

A modular operating system written in Rust, providing multicore preemptive scheduling and application portability on top of Embassy.

Real-time >Real-time tools

RTIC v1.0

Real-Time Interrupt-driven Concurrency — A concurrency framework for building real-time systems:

cortex-m rtic

RTIC framework for ARM Cortex-M microcontrollers

msp430 rtfm

RTFM framework for MSP430 MCUs

Runtime Crates

cortex-m-rt

Support for Cortex-M

cortex-a-rt

Support for Cortex-A

cortex-r-rt

Support for Cortex-R

riscv-rt

Support for RISC-V

esp-riscv-rt

Support for RISC-V devices from Espressif (ESP32)

xtensa-lx-rt

Support for Xtensa LX (ESP32)

mips-rt

Support for MIPS

msp430-rt

Support for MSP430

Peripheral Access Crates >Microchip

atsamd11

Peripheral access API for Microchip (formerly Atmel) SAMD11 microcontrollers. This git repo hosts both the peripheral access crate and the hal.

atsamx7x-rust

Peripheral access API for Microchip (formerly Atmel) SAM S70/E70/V70/V71 microcontrollers. This git repo hosts both the peripheral access crate and the hal.

avr-device

Peripheral access API for Microchip (formerly Atmel) AVR microcontroller family.

sam3x8e

Peripheral access API for Atmel SAMD3X8E microcontrollers (generated using svd2rust) -

pic32-pac

Peripheral access API for PIC32MX1/2xx -

Peripheral Access Crates >Nordic

nrf51

Peripheral access API for nRF51 microcontrollers (generated using svd2rust) -

nrf52810-pac

Peripheral access API for the nRF52810 microcontroller (generated using svd2rust) -

nrf52811-pac

Peripheral access API for the nRF52811 microcontroller (generated using svd2rust) -

nrf52832-pac

Peripheral access API for the nRF52832 microcontroller (generated using svd2rust) -

nrf52833-pac

Peripheral access API for the nRF52833 microcontroller (generated using svd2rust) -

nrf52840-pac

Peripheral access API for the nRF52840 microcontroller (generated using svd2rust) -

nrf5340-app-pac

Peripheral access API for the nRF5340 application core (generated using svd2rust) -

nrf5340-net-pac

Peripheral access API for the nRF5340 network core (generated using svd2rust) -

nrf9160-pac

Peripheral access API for the nRF9160 system-in-package (generated using svd2rust) -

Peripheral Access Crates >NXP

k64

lpc11uxx

lpc55s6x-pac

lpc82x-pac

lpc845-pac

mkw41z

imxrt-ral

Register access layer for i.MX RT series. -

SKEAZN642

Peripheral access API for KEA64 family microcontrollers (generated using svd2rust) -

mcx-pac

Peripheral Access Crate for NXP MCX Series MCUs -

Peripheral Access Crates >Raspberry Pi Silicon

rp2040-pac

Peripheral access API for the RP2040 dual-core system-on-chip (generated using svd2rust) -

rp235x-pac

Peripheral access API for the RP2350 family of dual-core microcontrollers -

Peripheral Access Crates >SiFive

e310x

svd2rust generated interface to SiFive Freedom E310 MCUs -

Peripheral Access Crates >Silicon Labs

efm32pg12-pac

Peripheral access API for Silicon Labs EFM32PG12 microcontrollers -

efm32g-pac

efm32gg-pac

efm32gg11b-pac

efm32gg12b-pac

efm32hg-pac

efm32jg1b-pac

efm32jg12b-pac

efm32lg-pac

efm32pg-pac

efm32pg22-pac

efm32pg23-pac

efm32tg-pac

efm32tg11b-pac

efm32wg-pac

efm32zg-pac

Peripheral Access Crates >StarFive

j71xx-pac

svd2rust generated interface to StarFive JH71xx MCUs -

Peripheral Access Crates >STMicroelectronics

stm32f0

stm32f1

stm32f2

stm32f3

stm32f4

stm32f7

stm32g0

stm32g4

stm32h5

stm32h7

stm32l0

stm32l1

stm32l4

Peripheral Access Crates >Texas Instruments

tm4c123x

Peripheral access API for TM4C123x microcontrollers (generated using svd2rust)

tm4c129x

Peripheral access API for TM4C129x microcontrollers (generated using svd2rust)

mspm0-metapac

PAC for all MSPM0 (and MSPS003) microcontrollers. (generated using chiptool)

Peripheral Access Crates >MSP430

msp430g2553

Peripheral access API for MSP430G2553 microcontrollers (generated using svd2rust)

msp430 quickstart

some examples for msp430

msp430fr2355

Peripheral access API for MSP430FR2355 microcontrollers (generated using svd2rust)

msp430fr6972

Peripheral Access Crates >Espressif

esp32

esp8266

note: esp8266 is archived, no further development planned

Peripheral Access Crates >Ambiq Micro

ambiq-apollo1-pac

Peripheral access API for Ambiq Apollo 1 microcontrollers (generated using svd2rust)

ambiq-apollo2-pac

Peripheral access API for Ambiq Apollo 2 microcontrollers (generated using svd2rust)

ambiq-apollo3-pac

Peripheral access API for Ambiq Apollo 3 microcontrollers (generated using svd2rust)

ambiq-apollo3p-pac

Peripheral access API for Ambiq Apollo 3 Plus microcontrollers (generated using svd2rust)

Peripheral Access Crates >GigaDevice

gd32vf103-pac

Peripheral access API for GD32VF103 RISC-V microcontrollers (generated using svd2rust) -

gd32e2

Peripheral access API for GD32E23x Cortex-M23 microcontrollers (generated using svd2rust) -

gd32f1

Peripheral access API for GD32F1x0 Cortex-M3 microcontrollers (generated using svd2rust) -

gd32f2

Peripheral access API for GD32F20x Cortex-M3 microcontrollers (generated using svd2rust) -

Peripheral Access Crates >XMC

xmc4100

xmc4200

xmc4300

xmc4400

xmc4500

xmc4700

xmc4800

Peripheral Access Crates >AMD

zynq7000

Peripheral Access Crates >Vorago

va108xx

Peripheral Access Crates >Wiznet

w7500x-pac

Peripheral Access Crate for Wiznet's W7500x microcontrollers (generated using svd2rust) -

Peripheral Access Crates >Renesas

ra2a1

Peripheral Access Crate for ra2a1 microcontrollers (generated using svd2rust) -

da14531

Peripheral Access Crate for DA14531 Ultra-Low Power BT 5.1 System-on-Chip -

HAL implementation crates >OS

bitbang-hal

software protocol implementations for microcontrollers with digital::OutputPin and digital::InputPin

ftdi-embedded-hal

for FTDI FTx232H chips connected to Linux systems via USB

linux-embedded-hal

for embedded Linux systems like the Raspberry Pi. -

freebsd-embedded-hal

for embedded (or not) FreeBSD systems. -

HAL implementation crates >Microchip

atsam4-hal

HAL for SAM4E, SAM4N and SAM4S -

atsamd-hal

HAL for SAMD11, SAMD21, SAMD51 and SAME54 -

atsamx7x-hal

HAL for SAM S70/E70/V70/V71-based devices -

avr-hal

HAL for AVR microcontroller family and AVR-based boards

pic32-hal

HAL for PIC32MX -

HAL implementation crates >Nordic

nrf51-hal

nrf52810-hal

nrf52811-hal

nrf52832-hal

nrf52833-hal

nrf52840-hal

nrf9160-hal

HAL implementation crates >NXP

lpc55s6x-hal

lpc8xx-hal

HAL for lpc82x and lpc845 -

mkw41z-hal

imxrt-ral

Register access layer for i.MX RT series. -

HAL implementation crates >Raspberry Pi Silicon

rp2040-hal

HAL for the RP2040 dual-core system-on-chip -

rp235x-hal

HAL for the RP2350 family of dual-core microcontrollers (used in the Raspberry Pi Pico 2 etc.) -

HAL implementation crates >SiFive

e310x-hal

HAL for SiFive Freedom E310 MCUs -

HAL implementation crates >STMicroelectronics

stm32f0xx-hal

Has examples that can run on boards like the Nucleo-F042K6 and similar boards

stm32f1xx-hal

Can be run on boards like the Blue-pill, Nucleo-F103RB, and similar boards

stm32f3xx-hal

stm32f4xx-hal

Generic HAL implementation for all MCUs of the stm32f4 series

stm32f7xx-hal

Generic HAL implementation for all MCUs of the stm32f7 series

stm32g0xx-hal

stm32h7xx-hal

HAL implementation for the STMicro STM32H7xx family of microcontrollers

stm32l0xx-hal

HAL implementation for the the STMicro STM32L0xx family of microcontrollers

stm32l1xx-hal

stm32l151-hal

stm32l4xx-hal

Generic hal support for stm32l4 devices, has examples that can run on boards like the Nucleo-L432KC, Solo, and similar boards

stm32-hal

HAL implementation for STM32 devices across multiple families, with a focus on newer ones like L4, L5, and H7.

HAL implementation crates >Texas Instruments

tm4c123x-hal

embassy-mspm0

Embassy HAL implementation for all MSPM0 (and MSPS003) microcontrollers.

In 2 lists

HAL implementation crates >MSP430

msp430fr2x5x-hal

HAL implementation for the MSP430FR2x5x family of microcontrollers

HAL implementation crates >Espressif

esp-hal

A no_std Hardware Abstraction Layer for Espressif microcontrollers, officially supported by Espressif

In 2 lists

esp-idf-hal

A std embedded-hal implementation for Espressif microcontrollers built on top of ESP-IDF, fully supported by the community

HAL implementation crates >Silicon Labs

tomu-hal

HAL implementation targeted for Tomu USB board with EFM32HG309F64 ARMv6-M core. Has support to configure tomu bootloader directly from an application via the toboot_config macro.

HAL implementation crates >XMC

xmc1100-hal

xmc4-hal

HAL implementation crates >GigaDevice

gd32vf103xx-hal

HAL for GD32VF103xx microcontrollers

gd32vf103-hal

(WIP) Hardware abstract layer (HAL) for the GD32VF103 RISC-V microcontroller

gd32f1x0-hal

HAL implementation for GD32F1x0 microcontrollers

HAL implementation crates >Vorago

va108xx

Blogpost

HAL implementation crates >AMD

zynq7000

HAL implementation crates >Renesas

da14531-hal

HAL crate for DA14531 Ultra-Low Power BT 5.1 System-on-Chip -

HAL implementation crates >StarFive

j71xx-hal

HAL crate for StarFive JH71xx MCUs -

Architecture support crates >ARM

cortex-a

Low-level access to Cortex-A processors (early state) -

cortex-m

Low-level access to Cortex-M processors -

Architecture support crates >RISC-V

riscv

Low-level access to RISC-V processors -

Architecture support crates >MIPS

mips

Low-level access to MIPS32 processors -

mips-mcu

Low-level access to MIPS MCU cores -

Board support crates >1BitSquared

onebitsy

Board support crate for the 1bitsy STM32F4-based board -

Board support crates >Adafruit

metro_m0

Board support for the Metro M0 board in the atsamd-rs repo. It is an atsamd-rs tier 1 support board.

metro_m4

Board support for the Metro M4 board in the atsamd-rs repo. It is an atsamd-rs tier 1 support board.

pyportal

Board support for the PyPortal board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

pygamer

Board support for the PyGamer board in the atsamd-rs repo. It is an atsamd-rs tier 1 support board.

trellis_m4

Board support for the NeoTrellis M4 board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

feather-f405

Board support for the Feather STM32F405 Express.

feather_m0

Board support for the Feather M0 board, and some variants in the atsamd-rs repo. It is an atsamd-rs tier 1 support board.

feather_m4

Board support for the Feather M4 board in the atsamd-rs repo. It is an atsamd-rs tier 1 support board.

circuit_playground_express

Board support for the Circuit Playground Express board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

edgebadge

Board support for the EdgeBadge board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

gemma_m0

Board support for the Gemma M0 board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

itsybitsy_m0

Board support for the ItsyBitsy M0 board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

itsybitsy_m4

Board support for the ItsyBitsy M4 Express board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

trinket_m0

Board support for the Trinket M0 board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

neo_trinkey

Board support for the neo trinkey board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

neokey_trinkey

Board support for the neokey trinkey board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

grand_central_m4

Board support for the grand central m4 board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

qt_py_m0

Board support for the QT Py board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

adafruit-feather-rp2040

Board Support Crate for the Adafruit Feather RP2040

Board support crates >Arduino

avr-hal

HAL for AVR microcontroller family and AVR-based boards

arduino_mkr1000

Board support for the MKR 1000 WiFi board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

arduino_mkrvidor4000

Board support for the MKR Vidor board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

arduino_mkrzero

Board support for the mkrzero board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

arduino_nano33iot

Board support for the Arduino Nano 33 IoT in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

avr_328p_hal

A zero-dependency, board support crate for the Arduino UNO R3 on the AVR_ATmega328p microcontroller featuring direct register-level control for performance. It leverages Rust's Option enum type to ensure only one part of the code has access to a specific driver. Documentation

Board support crates >Nordic

dwm1001

Decawave DWM1001-DEV -

microbit

micro:bit -

nrf52840-dk-bsp

nrf52840-dk -

Thingy:91-nrf9160

thingy:91 -

Board support crates >NXP

frdm-kw41z

FRDM-KW41Z -

Board support crates >Pimoroni

adafruit-feather-rp2040

Board Support Crate for the Adafruit Feather RP2040

Board support crates >Raspberry Pi

adafruit-feather-rp2040

Board Support Crate for the Adafruit Feather RP2040

Board support crates >Sparkfun

samd21_mini

Board support for the SAMD21 Mini Breakout in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

adafruit-feather-rp2040

Board Support Crate for the Adafruit Feather RP2040

Board support crates >SeeedStudio

seedstudio-gd32v

Board support crate for the GD32 RISC-V Dev Board; Contains runnable examples for this board

xiao_m0

Board support for the Seeed Studio Seeeduino XIAO in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

wio_lite_mg126

Board support for the Seeed Studio wio_lite_mg126 in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

wio_lite_w600

Board support for the Seeed Studio wio_lite_w600 in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

wio_terminal

Board support for the Seeed Studio wio_terminal in the atsamd-rs repo. It is an atsamd-rs tier 1 support board

Board support crates >SiFive

hifive1

Board support crate for HiFive1 and LoFive boards -

Board support crates >Sipeed

longan-nano

Board support package for the Longan Nano board; Contains runnable examples for this board

Board support crates >Sony

prussia

SDK for the PlayStation 2.

Board support crates >STMicroelectronics

f3

Board Support Crate for the STM32F3DISCOVERY -

nucleo-f042k6

Nucleo-F042K6

nucleo-f103rb

Nucleo-F103RB

nucleo-f401re

Nucleo-F401RE

nucleo-h743zi

Beginner-oriented support crate for the Nucleo H743ZI and Nucleo H743ZI2

nucleo-h723zg

Board support crate for the Nucleo H723ZG

solo-bsp

Board Support Crate for Solo, an open source security token (WIP) -

stm32f407g-disc

Board Support Crate for the STM32F4DISCOVERY (WIP) -

stm32f429i-disc

Board Support Crate for the STM32F429DISCOVERY (WIP) -

stm32f3-discovery

Board Support Crate for the STM32F3DISCOVERY used in Rust Embedded Discovery book -

Board support crates >Teensy

teensy4-rs

Board Support crate for the [Teensy 4.0]

Board support crates >Vorago

vorago-reb1

Blogpost

Board support crates >Texas Instruments

monotron

A 1980s home-computer style application for the Texas Instruments Stellaris Launchpad. PS/2 keyboard input, text output on a bit-bashed 800x600 VGA signal. Uses menu, vga-framebuffer and pc-keyboard.

stellaris-launchpad

For the Texas Instruments Stellaris Launchpad and Tiva-C Launchpad

tm4c129-launchpad

For the Texas Instruments TM4C129-XL Launchpad board

Board support crates >Special Purpose

betafpv-f3

For the BetaFPV F3 drone flight controller

tildagon

Board support for the EMF Camp Tildagon badge

Board support crates >Sodaq

sodaq_one

Board support for the Sodaq one board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

sodaq_sara_aff

Board support for the Sodaq sara aff board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

Board support crates >Other

serpente

Board support for the serpente board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

p1am_100

Board support for the p1am_100 board in the atsamd-rs repo. It is an atsamd-rs tier 2 support board.

Component abstraction crates

accelerometer

Generic accelerometer support, including traits and types for taking readings from 2 or 3-axis accelerometers and tracking device orientations -

embedded-graphics

2D drawing library for any size display -

radio

Generic radio transceiver traits, mocks, and helpers -

smart-leds

Support for addressable LEDs including WS2812 and APA102

usb-device

Abstraction layer between USB peripheral crates & USB class crates -

atat

Abstraction crate to ease writing AT based driver crates -

embedded-nal

An Embedded Network Abstraction Layer -

embedded-storage

An Embedded Storage Abstraction Layer

switch-hal

An "on"/"off" abstraction for input and output switches -

Driver crates

AD983x

SPI - AD9833/AD9837 waveform generators / DDS - Intro blog post -

adafruit-alphanum4

I2C - Driver for Adafruit 14-segment LED Alphanumeric Backpack based on the ht16k33 chip -

adafruit-seesaw

I2C - Driver for devices running the Adafruit Seesaw firmware -

ADE791x

SPI - ADE7912/ADE7913 3-Channel, Isolated, Sigma-Delta ADC - github -

ADS1x1x

I2C - 12/16-bit ADCs like ADS1013, ADS1015, ADS1115, etc. - Intro blog post -

ADXL313

SPI - 3-axis accelerometer -

ADXL343

I2C - 3-axis accelerometer -

ADXL355

SPI - 3-axis accelerometer - Intro blog post -

AEM10900

I2C - Energy Harvester - github -

AFE4404

I2C - Pulse oximeter -

AHT20

I2C - Humidity and temperature sensor - github -

AHT20-driver

I2C - Humidity and temperature sensor - Intro blog post - github -

AnyLeaf

I2C - pH sensor module - github -

AT86RF212

SPI - Low power IEEE 802.15.4-2011 ISM RF Transceiver - Intro blog post -

BlueNRG

SPI - driver for BlueNRG-MS Bluetooth module - Intro post

BMA400

I2C/SPI - Bosch 12-bit 3-axis accelerometer - github

BNO055

I2C - Bosch Sensortec BNO055 9-axis IMU driver - Intro post

CD74HC4067

GPIO - 16-channel digital and analog multiplexer - Intro blog post - github -

dht-sensor

1-Wire - DHT11/DHT22 temperature/humidity sensor driver - github -

embedded-dht-rs

1-Wire, I2C - DHT11/DHT20/DHT22 temperature/humidity sensor driver - github -

DRV8825

DRV8825 Stepper Motor Driver (based on Stepper) - Intro blog post -

DS1307

I2C - Real-time clock driver - Intro blog post -

ebyte-e32

SERIAL - Ebyte E32 LoRa module driver - Intro blog post -

EEPROM24x

I2C - 24x series serial EEPROM driver - Intro blog post -

embedded-ccs811

I2C - Gas and VOC sensor driver for monitoring indoor air quality - Intro blog post -

embedded-sdmmc

SPI - SD/MMC Card Driver with MS-DOS Partition and FAT16/FAT32 support - Intro post

ENC28J60

SPI - Ethernet controller - Intro blog post -

epdsi

SPI - E-Paper Display driver framework (SSD1680/1681/1677, UC8253, JD79661, ED2208, Pervasive Displays) - examples -

FH101RF

SPI - Wake-Up Radio - github -

FUSB302B

I2C - Programmable USB Type‐C Controller with USB Power Delivery - github

HC-12

SERIAL - Wireless serial transceiver module - Intro blog post - github -

HTS221

I2C - Humidity and temperature sensor - Intro blog post -

IS31FL3728

I2C - LED dot matrix display mode (8×8, 5x11, 6x10,7x9) - github -

IIS2MDC

I2C - ST's High accuracy, ultra-low-power, 3-axis digital output magnetometer -

ISM330DHCX

I2C - ST's IMU with 3D accelerometer, 3D gyroscope, ML core and more -

keypad

GPIO - Keypad matrix circuits - Intro post -

KXCJ9

I2C - KXCJ9/KXCJB 3-axis accelerometers - Intro blog post -

L3GD20

SPI - Gyroscope - Intro blog post -

lcd_parallel_bus

GPIO - Async and blocking driver for LCDs based on HD44780 parallel bus -

LSM303DLHC

I2C - Accelerometer + compass (magnetometer) - Intro blog post -

MAX6675

SPI - A driver for the MAX6675 digital thermocouple converter - Intro blog post -

MAX6955

I2C - Driver for Alphanumeric LED display driver - Intro blog post -

MAX116xx-10bit

SPI - Driver for the MAX11619-MAX11621, MAX11624 and MAX11625 10-bit ADCs - Intro blog post -

MCP25LCXX

SPI - Driver for Microchip's 25LC series of EEPROMs -

MCP3008

SPI - 8 channel 10-bit ADC - Intro blog post -

MCP3425

I2C - 16-bit ADC - Intro blog post -

MCP794xx

I2C - Real-time clock / calendar driver - Intro blog post -

MMA7660FC

I2C - 3-axis accelerometer - Intro blog post

OPT300x

I2C - Ambient light sensor family driver - Intro blog post -

PAC194X

I2C - Single/multi channel power monitor - Intro blog post -

port-expander

I2C - Driver for I2C port expanders (supports PCA95xx, PCF85xx) - Intro blog post -

pwm-pca9685

I2C - 16-channel, 12-bit PWM/Servo/LED controller - Intro blog post -

rainbow-hat-rs

I2C/SPI/GPIO - Pimoroni Rainbow HAT driver for Raspberry Pi - github -

rotary-encoder-hal

GPIO - A rotary encoder driver using embedded-hal - Intro blog post -

sega-controller

GPIO - Sega controller input - github -

SGP30

I2C - Gas sensor - Intro blog post -

SH1106

I2C - Monochrome OLED display controller - Intro post

shared-bus

I2C - utility driver for sharing a bus between multiple devices - Intro post

shift-register-driver

GPIO - Shift register - Intro blog post -

Si4703

I2C - FM radio turner (receiver) driver - Intro blog post -

SRAM23x

SPI - Microchip 23x series serial SRAM/NVSRAM driver - Intro blog post -

SSD1306

I2C/SPI - OLED display controller - Intro blog post -

SSD1309

I2C/SPI - OLED display controller - Intro blog post -

STSPIN220

STSPIN220 Stepper Motor Driver (based on Stepper) - Intro blog post -

Sx127x

SPI - Long Range Low Power Sub GHz (Gfsk, LoRa) RF Transceiver - Intro blog post -

Sx128x

SPI - Long range, low power 2.4 GHz (Gfsk, Flrc, LoRa) RF Transceiver - Intro blog post -

TC72

SPI - Microchip TC72 temperature sensor -

TCN75A

I2C - Microchip TCN75A temperature sensor -

TMP006

I2C - Contact-less infrared (IR) thermopile temperature sensor driver - Intro post

TMP1x2

I2C - TMP102 and TMP112x temperature sensor driver - Intro blog post

TSIC

GPIO - TSIC 306 temperature sensor driver - Intro blog post

TSL256X

I2C - Light Intensity Sensor - Intro blog post -

VEML6030/VEML7700

I2C - Ambient light sensors - Intro blog post -

VEML6075

I2C - UVA and UVB light sensor - Intro blog post -

usbd-serial

USB CDC-ACM class (serial) implementation - github -

usbd-hid

USB HID class implementation - github -

usbd-hid-device

USB HID class implementation without unsafe - github -

usbd-human-interface-device

Batteries included embedded USB HID library for usb-device. Includes concrete Keyboard (boot and NKRO), Mouse and Consumer Control implementations as well as support for building your own HID classes - github -

usbd-midi

USB MIDI class implementation - github -

usbd-webusb

USB webUSB class implementation - github -

SHTCx

I2C - Temperature / humidity sensors - github -

ST7789

SPI - An embedded-graphics compatible driver for the popular lcd family from Sitronix used in the PineTime watch - github -

DW1000

SPI - Radio transceiver (IEEE 802.15.4 and position tracking) - Article -

Adafruit-7segment

I2C - Driver for Adafruit 7-segment LED Numeric Backpack based on the ht16k33 chip - github -

ST7565

SPI - An embedded-graphics compatible driver for LCD displays based on the ST7565 chip - github -

tb6612fng

A no_std driver for the TB6612FNG motor driver -

vl53l1x-uld

I2C - A pure-rust driver for the ST VL53L1X -

i2c-multiplexer

I2C - An I2C Multiplexer library that supports the PCA9546 and TCA9546A chips - github -

SHT31-rs

I2C - Fully supported SHT temperature / humidity sensors - github -

AP33772S-rs

I2C - no-std sync and async compatible rust driver for the AP33772S USB C Power Delivery with Extended Power Range I2C chip - github -

Driver crates >WIP

AD9850

Embedded driver for the AD9850 DDS synthesizer chip -

AFE4400

SPI - Pulse oximeter

APDS9960

I2C - Proximity, ambient light, RGB, and gesture sensor -

AS5048A

SPI - AMS AS5048A Magnetic Rotary Encoder

AXP209

I2C - Power management unit

ad57xx

SPI - Quad and dual channel DAC -

BH1750

I2C - ambient light sensor (lux meter)

BME280

A rust device driver for the Bosch BME280 temperature, humidity, and atmospheric pressure sensor and the Bosch BMP280 temperature and atmospheric pressure sensor.

bme680

I2C - Temperature / humidity / gas / pressure sensor -

BMI160

I2C / SPI - Inertial Measurement Unit -

BMP280

A platform agnostic driver to interface with the BMP280 pressure sensor

CC1101

SPI - Sub-1GHz RF Transceiver -

DS3231

I2C - real-time clock

Embedded WG

, including newsletters with progress updates.

DS323x

I2C/SPI - Real-time clocks (RTC): DS3231, DS3232 and DS3234 -

epd-waveshare

SPI - driver for E-Paper Modules from Waveshare

embedded-morse

Output morse messages -

embedded-nrf24l01

SPI+GPIO - 2.4 GHz radio

Ft6x36

I2C - Rust driver for focal tech touch screen FT6236, FT6336 -

grove-matrix-led-my9221-rs

I2C - Rust driver for Grove RGB Matrix Led with my-9221 Driver -

GridEYE

I2C - Rust driver for Grid-EYE / Panasonic AMG88(33) -

HC-SR04

DIO - Ultrasound sensor

HD44780-driver

GPIO - LCD controller -

HD44780

Parallel port - LCD controller

HM11

USART - HM-11 bluetooth module AT configuration crate -

HRS3300

I2C - Heart rate sensor / monitor used in the PineTime smartwatch, for example. -

HDC20xx

I2C - Temperature and humidity sensor compatible with HDC2080, HDC2021 and HDC2010. -

hub75

A driver for rgb led matrices with the hub75 interface -

hzgrow-r502

UART capacitive fingerprint reader -

iAQ-Core

I2C - iAQ-Core-C/iAQ-Core-P Gas and VOC sensor driver for monitoring indoor air quality.

ILI9341

SPI - TFT LCD display

INA260

I2C - power monitor -

ISL29125

I2C - RGB Color Light Sensor with IR Blocking Filter -

IST7920

SPI monochrome LCD display -

LM75

I2C - Temperature sensor and thermal watchdog (also compatible with LM75A, LM75B, LM75C, AT30TS75A, DS1775, DS75, DS7505, G751, MAX7500/1/2/3/4, MAX6625, MCP9800/1/2/3, STDS75, TCN75, PCT2075) -

lp586x

I2C/SPI - LED matrix driver

LS010B7DH01

SPI - Memory LCD

LSM303AGR

I2C/SPI - 3D accelerometer + 3D magnetometer. (Used in e.g. micro:bit boards)

LSM303C

A platform agnostic driver to interface with the LSM303C (accelerometer + compass)

LSM9DS1

I2C/SPI - 9-axis motion sensor module

ltr-559

I2C - Ambient Light Sensor and Proximity sensor

lvgl

no_std LittleVGL port -

M95320

SPI - STMicroelectronics Serial flash EEPROM -

MAG3110

I2C - Magnetometer

MAX17048/9

I2C - LiPo Fuel gauge, battery monitoring IC -

MAX170xx

I2C - LiPo Fuel gauge, battery monitoring ICs compatible with MAX17043/4, MAX17048/9, MAX17058/9. -

MAX3010x

I2C - Pulse oximeter and heart-rate sensor. ATM Compatible with MAX30102. -

MAX31855

SPI - Thermocouple digital converter -

MAX31865

SPI - RTD to Digital converter -

MAX44009

I2C - Ambient light sensor -

MAX7219

SPI - LED display driver -

MCP4725

I2C - 12-bit DAC -

MCP49xx

SPI - 8/10/12-bit DACs like MCP4921, MCP4922, MCP4801, etc. -

MCP9808

I2C - Temperature sensor -

MCP4x

SPI - Digital potentiometers (digipot) like MCP41010, MCP41050, MCP41100, MCP42010, MCP42050 and MCP42100, etc. -

MFRC522

SPI - RFID tag reader/writer

midi-port

UART - MIDI input -

MLX9061x

I2C - MLX90614/MLX90615 Contact-less infrared (IR) temperature sensor driver. -

MMA8x5x

I2C - Tri-axis accelerometers like MMA8451Q, MMA8452Q, MMA8453Q, MMA8652FC and MMA8653FC. -

motor-driver

Motor drivers: L298N, TB6612FNG, etc.

MPU6050

I2C - no_std driver for the MPU6050

MPU9250

no_std driver for the MPU9250 (and other MPU* devices) & onboard AK8963 (accelerometer + gyroscope + magnetometer IMU)

MS5637

no_std I2C driver for the MS5637 temperature and pressure sensor

NRF24L01

SPI - 2.4 GHz wireless communication

OneWire

1wire - OneWire protocol implementation with drivers for devices such as DS18B20 -

PCD8544

SPI - 48x84 pixels matrix LCD controller

PCD8544_rich

SPI - Rich driver for 48x84 pixels matrix LCD controller -

PCF857x

I2C - I/O expanders: PCF8574, PCF8574A, PCF8575

AT86RF212

SPI - Low power IEEE 802.15.4-2011 ISM RF Transceiver - Intro blog post -

RFM69

SPI - ISM radio transceiver

RN2xx3

Serial - A driver for the RN2483 / RN2903 LoRaWAN modems by Microchip

SCD30

I2C - CO₂ sensor -

SHT2x

I2C - temperature / humidity sensors

SHT3x

I2C - Temperature / humidity sensors

SI5351

I2C - clock generator

SI7021

I2C - Humidity and temperature sensor

SPL06-007

I2C - Pressure and temperature sensor -

spi-memory

SPI - A generic driver for various SPI Flash and EEPROM chips -

SSD1320

SPI - Graphical OLED display controller -

SSD1322

SPI - Graphical OLED display controller -

SSD1322_rs

SPI - Async graphics driver for SSD1322 screen -

SSD1351

SPI - 16bit colour OLED display driver -

SSD1675

SPI - Tri-color ePaper display controller -

st7032i

I2C - Dot Matrix LCD Controller driver (Sitronix ST7032i or similar). -

ST7735-lcd

SPI - An embedded-graphics compatible driver for the popular lcd family from Sitronix

ST7920

SPI - LCD displays using the ST7920 controller

stm32-eth

MCU - Ethernet

SX1278

SPI - Long range (LoRa) transceiver

SX1509

I2C - IO Expander / Keypad driver

TCS3472

I2C - RGB color light sensor -

TPA2016D2

I2C - A driver for interfacing with the Texas Instruments TPA2016D2 Class-D amplifier -

VEML6040

I2C - RGBW color light sensor -

VEML6070

I2C - UVA light sensor -

VEML7700

I2C - Ambient light sensors -

vesc-comm

A driver for communicating with VESC-compatible electronic speed controllers

VL53L0X

A platform agnostic driver to interface with the vl53l0x (time-of-flight sensor)

w5500

SPI - Ethernet Module with hardwired protocols : TCP, UDP, ICMP, IPv4, ARP, IGMP, PPPoE -

xCA9548A

I2C - I2C switches/multiplexers: TCA9548A, PCA9548A -

ublox-cellular-rs

Serial - Cellular driver for the full Ublox cellular serial based family

atwinc1500-rs

SPI - A host driver for the Atwinc1500 network controller

HX711

GPIO - An interrupt-based driver for the HX711 Load Cell Amplifier IC. no-std.

tmag5273

I2C - TI TMAG5273 3-axis Hall-effect sensor with hardware CORDIC angle engine and typestate API -

paa5100je-pwm3901

Cross platform no-std compatible spi async library for an Optical Flow Sensor.

no-std crates

#![no_std] crates

designed to run on resource-constrained devices.

adskalman

Kalman filter and Rauch-Tung-Striebel smoothing implementation.

arbitrary-int

This crate implements arbitrary numbers for Rust. Once included, you can use types like u5 or u120

atomic

Generic Atomic wrapper type.

bbqueue

A SPSC, statically allocatable queue based on BipBuffers suitable for DMA transfers -

bitmatch

A crate that allows you to match, bind, and pack the individual bits of integers. -

biquad

A library for creating second-order IIR filters for signal processing based on Biquads, where both a Direct Form 1 (DF1) and Direct Form 2 Transposed (DF2T) implementation is available.

bit_field

manipulating bitfields and bitarrays -

bitbybit

macros that create bit fields and bit enums, which are useful in bit packing code (e.g. in drivers or networking code)

bitfield-struct

Procedural macro for bitfields that allows specifying bitfields as structs

bluetooth-hci

device-independent Bluetooth Host-Controller Interface implementation.

bounded-registers

A high-assurance memory-mapped register code generation and interaction library. bounded-registers provides a Tock-like API for MMIO registers with the addition of type-based bounds checking. -

cam-geom

Geometric models of cameras for photogrammetry.

combine

parser combinator library -

console-traits

Describes a basic text console. Used by menu and implemented by vga-framebuffer.

cmim

, or Cortex-M Interrupt Move: A crate for Cortex-M devices to move data to interrupt context, without needing a critical section to access the data within an interrupt, and to remove the need for the "mutex dance" -

cmsis-dsp-sys

Rust FFI bindings to the Arm CMSIS_5 math library -

dcmimu

An algorithm for fusing low-cost triaxial MEMS gyroscope and accelerometer measurements

debouncr

A simple no-std input debouncer to detect rising/falling edges with minimal RAM requirements.

device-driver

A toolkit to write better device drivers, faster.

drogue-device

A distribution of tools and examples for building embedded applications in Rust.

dummy-pin

Dummy implementations of the input/output pin traits.

crossbus

A Platform-Less, Runtime-Less Actor Computing Model.

🤖 crispy-bootloader

Minimal dual-bank bootloader for RP2040 with USB firmware upload, A/B bank switching, and CRC verification.

ector

An async actor framework for embedded, based on embassy.

embassy-mspm0

Embassy HAL implementation for all MSPM0 (and MSPS003) microcontrollers.

In 2 lists

embedded-3dgfx

3D engine based on embedded-graphics with optional physics effects.

embedded-cli

CLI library with autocompletion, subcommands, options, help and history support.

embedded-crc-macros

Macros implementing portable CRC algorithms and build-time lookup table generation.

embedded-gui

GUI library taking inspiration from the Pebble smartwatches and LVGL.

embedded-update

Pluggable firmware update protocol for embedded devices.

embedded-tls

A TLS 1.3 implementation that runs in a no-std environment.

embedded-websocket

A lightweight server and client websocket library for embedded systems.

endian_codec

(En/De)code rust types as packed bytes with specific order (endian). Supports derive. -

ethercrab

A Rust implementation of the EtherCAT industrial automation protocol -

fixed-fft

Fixed-point Fast Fourier Transform -

gcode

A gcode parser for no-std applications -

gdbstub

zero-allocation, pure Rust implementation of the GDB Remote Serial Protocol -

guillotine

A resource-efficient, allocation-free GUI framework built on embedded-graphics.

hayasen

An Embedded Rust crate with support for multiple sensors.

heapless

provides Vec, String, LinearMap, RingBuffer backed by fixed-size buffers -

idsp

integer DSP algorithms (trigonometry, filtering, PLL...) tuned for precision and speed -

ieee802154

Partial implementation of the IEEE 802.15.4 standard -

infrared

infrared remote control library for embedded rust -

intrusive-collections

intrusive (non-allocating) singly/doubly linked lists and red-black trees -

inverted-pin

Implementations of the input/output pin traits with inverted logic.

irq

utilities for writing interrupt handlers (allows moving data into interrupts, and sharing data between them) -

lakers

Microcontroller-optimized EDHOC implementation, with bindings for C and Python -

locate-rs

Microcontroller-optimized solver for Indoor Localization (Multilateration / TDOA) -

lorawan-encoding

A LoRaWAN packet codec.

managed

provides ManagedSlice, ManagedMap backed by either their std counterparts or fixed-size buffers for #![no_std]. -

menu

A basic command-line interface library. Has nested menus and basic help functionality.

micropb

Rust Protobuf library targetting embedded systems and no_std environments without an allocator. -

metrology_insight

Embedded-first electrical metrology & power quality DSP library (IEC 61000-4-30 Class S, IEC 62053-21) -

mqtt-sn

Implementation of the MQTT-SN protocol -

microfft

Embedded-friendly (no_std, no-alloc) fast fourier transforms -

micromath

Embedded Rust math library featuring fast, safe floating point approximations for common arithmetic operations, 2D and 3D vector types, and statistical analysis -

miniconf

Lookup/enumerate/serialize/deserialize nodes in trees of heterogeneous structs/arrays by path/key -

minimq

A minimal MQTT5 client designed for no_std platforms -

moonboot

OTA Bootloader Construction Framework for Rust no_std environments, especially embedded devices without an OS

nalgebra

general-purpose and low-dimensional linear algebra library -

nom

parser combinator framework -

null-terminated

generic null-terminated arrays -

num-format

Crate for producing string representations of numbers, formatted according to international standards, e.g. "1,000,000" for US English -

pc-keyboard

A PS/2 keyboard protocol driver. Transport (bit-banging or SPI) agnostic, but can convert Set 2 Scancodes into Unicode.

qei

A qei wrapper that allows you to extend your qei timers from a 16-bit integer to a 64-bit integer. -

qemu-exit

Quit a running QEMU session with user-defined exit code. Useful for unit or integration tests using QEMU. -

RampMaker

Stepper Motor Acceleration Ramp Generator -

register-rs

Unified interface for MMIO and CPU registers. Provides type-safe bitfield manipulation. register-rs is Tock registers with added support for CPU register definitions using the same API as for the MMIO registers. This enables homogeneous interfaces to registers of all kinds. -

scapegoat

Safe, stack-only alternative to BTreeSet and BTreeMap. -

scroll

extensible and endian-aware Read/Write traits for generic containers -

sized-dst

Owned container for dynamically-sized types (such as trait objects) backed by stack memory. -

Slint

Declarative GUI framework that works on microcontrollers.

smbus-pec

Minimal portable System Management Bus Packet Error Code calculation algorithm.

smoltcp

a small TCP/IP stack that runs without alloc.

In 2 lists

sntpc

Rust SNTP client to get a timestamp from NTP servers. -

static-bytes

Help work with buffers without dynamic allocation. Implement traits from bytes crate.

Stepper

Universal Stepper Motor Interface -

tinybmp

No-std, no-alloc BMP parser for embedded systems. Introductory blog post -

vga-framebuffer

A VGA signal generator and font renderer for VGA-less microcontrollers. Used by Monotron to generate 48 by 36 character display using 3 SPI peripherals and a timer.

usbpd

USB-PD library and traits, supports Sink mode, with Source functionality planned.

wyhash

A fast, simple and portable hashing algorithm and random number generator. -

adafruit-bluefruit-protocol

A no_std parser for the Adafruit Bluefruit LE Connect controller protocol. -

wtx

Among other things, provides implementations to interact with HTTP, WebSockets and Databases.

In 8 listsDetails

uf-ahrs

AHRS sensor fusion library for embedded and no_std environments, implementing Mahony, Madgwick, and VQF filters. -

no-std crates >WIP

🤖 krypteia

Pure-Rust no_std post-quantum (ML-KEM/ML-DSA/SLH-DSA) and classical cryptography, side-channel hardened, zero-dependency.

light-cli

a lightweight heapless cli interface

OxCC

A port of Open Source Car Control written in Rust

Rubble

A pure-Rust embedded BLE stack

post-haste

A no_std, alloc-free async Rust library for creating modular projects.

Panic handling

dont_panic

+ dont_panic_slice: panic!()-like macro that causes linking error instead of panicking. May be used to statically ensure some code won't panic. +

no-panic

Attribute macro to require that the compiler prove a function can't ever panic.

panic-abort

Causes an abort on panics (nightly-only)

panic-halt

Halts the processor on panics

panic-itm

Prints the panic through the chip's ITM to a debugger attached to the SWO pin (Cortex-M with ITM only)

panic-never

This crate guarantees that your application is free of panicking branches.

panic-persist

A panic handler crate inspired by panic-ramdump that logs panic messages to a region of RAM defined by the user, allowing for discovery of panic messages post-mortem using normal program control flow. -

panic-probe

A panic handler that exits probe-run with an error code.

panic-ramdump

Writes the panic message into the beginning of RAM and enters an infinite loop; the message can be extracted by attaching a debugger (Cortex-M only)

panic-rtt

Set the panicking behavior to log to a JLINK debugger and loop.

panic-rtt-target

Logs panic messages over RTT. Uses rtt-target.

panic-semihosting

Prints the panic message via semihosting to an attached debugger (Cortex-M only)

rp2040-panic-usb-boot

Save panic message in XIP RAM and reboot RP2040 to USB mode

Firmware projects

rmk

Mechanical keyboard firmware for stm32/rp2040, supports vial/dynamic keymap/eeprom, written in Rust

In 2 lists

YBLINK

Pure Rust CMSIS-DAP v2 debugger firmware and product for the HPM5301, with USB HS SWD/JTAG and a CDC ACM UART bridge.

anne-key

Alternate keyboard firmware for the Obins ANNE Pro

μLA

Micro Logic Analyzer for RP2040

air-gradient-pro-rs

Bootloader, firmware, and CLI tools for the AirGradient PRO

Stabilizer

Firmware for a DSP tool used in quantum physics experimentation, includes telemetry via MQTT and run-time configuration

Booster

Firmware for an RF power amplifier, including telemetry via MQTT and run-time configuration

Thermostat EEM

Firmware for a multi-channel temperature controller used in physics experiments

Card/IO ECG

Firmware for a business-card-sized ECG device with Wifi connectivity

BillMock

Firmware for credit card terminal add-on hardware to install on Korean arcade machines

LuLuu

Firmware for a custom RP2040-based display controller that streams animated images from a microSD card to a small LCD display.

prinThor

3DPrinter/CNC/Engraver firmware framework powered by rust embassy for stm32 families and rp2040.

🤖 hypervisor

Bare-metal ARM64 Type-1 hypervisor in no_std Rust (single dependency: fdt). Runs at EL2, boots Linux with 4 vCPUs, virtio-blk/net, FF-A v1.1 SPMC at S-EL2. Targets QEMU virt machine (no real hardware tested yet).

In 2 lists

🤖 RS-Key

no_std FIDO2/WebAuthn + U2F security-key firmware for the RP2350, built on embassy; also implements OpenPGP, PIV and OATH.

🤖 vkey

no_std USB hardware-key firmware for the ESP32-C6 (esp-hal, no ESP-IDF, no allocator, unsafe_code = "forbid") storing TOTP secrets, passwords and project .env files under AES-256-GCM, keyed by Argon2id over a PIN and bound to an eFuse HMAC key, with Secure Boot v2 and a button press for every…

Old books, blogs, and training materials

Exploring Rust on Teensy

by @branan — Beginner set of articles on getting into embedded dev in Rust.

Pragmatic Bare Metal Rust

A starter article about starting Rust development on STM32 microcontrollers (cubeMX + FFI).

Using Rust in an Embedded Project: A Simple Example

Article and some links on setting up Rust cross-compiling.

Robigalia

general purpose robust operating system in Rust running on secure seL4 microkernel.

intermezzOS

A small teaching operating system in Rust. A book with some explanations is also included.

Fearless concurrency

by @japaric — How to easily develop Rust programs for pretty much any ARM Cortex-M microcontroller with memory-safe concurrency.

Internet of Streams

A video series by @jamesmunns building a bare metal IoT Sensor Node Platform from (nearly) scratch in Rust

Ferrous Systems' Embedded Training Courses: 2019 edition

A hands-on training course for beginner and advanced learners of Embedded Rust, based on Nordic Semiconductor's nRF52 and Decawave's DWM1001-DEV hardware. This training was given at Oxidize Conferences and by Ferrous Systems to corporate customers.

See category
94

Awesome Rust

rust-unofficial/awesome-rust

A curated list of Rust code and resources.

Fresh★ 60k1833 entriesPushed today
94

Awesome Mac

jaywcjlove/awesome-mac

 This project is dedicated to collecting high-quality macOS software and organizing them systematically by different categories for easy search and use.

Fresh★ 115k1316 entriesPushed today
94

Awesome Python

vinta/awesome-python

The definitive list that answers "I want to do X in Python, which tool should I use?"

Fresh★ 324k504 entriesPushed today
94

Awesome C++

fffaraz/awesome-cpp

A curated list of awesome C++ (or C) frameworks, libraries, resources, and shiny things. Inspired by awesome-... stuff.

Fresh★ 74k1358 entriesPushed yesterday
94

Awesome Go

avelino/awesome-go

A curated list of awesome Go frameworks, libraries and software

Fresh★ 186k3119 entriesPushed yesterday
94

Awesome PHP

ziadoz/awesome-php

A curated list of amazingly awesome PHP libraries, resources and shiny things.

Fresh★ 33k87 entriesPushed 2 days ago