18 releases (1 stable)

Uses new Rust 2024

new 1.1.0-rc.0 Apr 16, 2026
1.0.0 Oct 30, 2025
1.0.0-rc.0 Jul 16, 2025
1.0.0-beta.0 Feb 24, 2025
0.0.1 Oct 11, 2023

#20 in Embedded development

Download history 11288/week @ 2025-12-28 11606/week @ 2026-01-04 12675/week @ 2026-01-11 13868/week @ 2026-01-18 12438/week @ 2026-01-25 12197/week @ 2026-02-01 8885/week @ 2026-02-08 9089/week @ 2026-02-15 9484/week @ 2026-02-22 10042/week @ 2026-03-01 9445/week @ 2026-03-08 9274/week @ 2026-03-15 10639/week @ 2026-03-22 9933/week @ 2026-03-29 8466/week @ 2026-04-05 8087/week @ 2026-04-12

38,444 downloads per month
Used in 86 crates (78 directly)

MIT/Apache

6MB
113K SLoC

esp-hal

Crates.io docs.rs MSRV Crates.io Matrix

Bare-metal (no_std) hardware abstraction layer for Espressif devices.

Implements a number of blocking and, where applicable, async traits from the various packages in the embedded-hal repository.

For help getting started with this HAL, please refer to The Rust on ESP Book and the documentation.

Documentation

Supported Devices

Chip Datasheet Technical Reference Manual Target
ESP32 ESP32 ESP32 xtensa-esp32-none-elf
ESP32-C2 ESP32-C2 ESP32-C2 riscv32imc-unknown-none-elf
ESP32-C3 ESP32-C3 ESP32-C3 riscv32imc-unknown-none-elf
ESP32-C5 ESP32-C5 ESP32-C5 riscv32imac-unknown-none-elf
ESP32-C6 ESP32-C6 ESP32-C6 riscv32imac-unknown-none-elf
ESP32-C61 ESP32-C61 ESP32-C61 riscv32imac-unknown-none-elf
ESP32-H2 ESP32-H2 ESP32-H2 riscv32imac-unknown-none-elf
ESP32-S2 ESP32-S2 ESP32-S2 xtensa-esp32s2-none-elf
ESP32-S3 ESP32-S3 ESP32-S3 xtensa-esp32s3-none-elf

Peripheral support

Driver ESP32 ESP32-C2 ESP32-C3 ESP32-C5 ESP32-C6 ESP32-C61 ESP32-H2 ESP32-S2 ESP32-S3
ADC ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
AES ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
ASSIST_DEBUG ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
Analog Voltage Comparator [^1]
Bit Scrambler [^1]
Bluetooth ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
Camera interface ⚒️
DAC ⚒️ ⚒️
Dedicated GPIO ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
DMA ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
DS [^1]
ECC ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
Ethernet
ETM [^1] ⚒️ ⚒️
GPIO ✔️ ✔️ ✔️ ⚒️ ✔️ ⚒️ ✔️ ✔️ ✔️
HMAC ⚒️ [^1] ⚒️ ⚒️ ⚒️ ⚒️
I2C master ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
I2C slave [^1]
I2S ⚒️ ⚒️ [^1] ⚒️ ⚒️ ⚒️ ⚒️
IEEE 802.15.4 ⚒️ ⚒️ ⚒️
Interrupts ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
IOMUX ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
Key Manager [^1]
LEDC ⚒️ ⚒️ ⚒️ [^1] ⚒️ ⚒️ ⚒️ ⚒️
LP I2C master ⚒️ ⚒️
LP UART [^1] ⚒️
MCPWM ⚒️ [^1] ⚒️ ⚒️ ⚒️
PARL_IO ⚒️ ⚒️ ⚒️
PCNT ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
PHY ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
PSRAM ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
RGB display ⚒️ ⚒️
RMT ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
RNG ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
RSA ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
RTC Timekeeping ⚒️ ⚒️ ⚒️ [^1] ⚒️ ⚒️ ⚒️ ⚒️
SDIO host ⚒️ ⚒️
SDIO slave ⚒️ [^1] ⚒️
SHA ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
Light/deep sleep ⚒️ ⚒️ ⚒️ [^1] ⚒️ ⚒️ ⚒️ ⚒️
SPI master ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
SPI slave ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
SYSTIMER ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
Temperature sensor ⚒️ ⚒️ ⚒️ [^1] ⚒️ ⚒️ ⚒️ ⚒️
Timers ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
Touch ⚒️ [^1] [^1] [^1]
TWAI / CAN / CANFD ⚒️ ⚒️ [^1] ⚒️ ⚒️ ⚒️ ⚒️
UART ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️ ✔️
UHCI ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
ULP (FSM) ⚒️ ⚒️ ⚒️
ULP (RISC-V) [^1] ⚒️ ⚒️ ⚒️
USB OTG FS ⚒️ ⚒️
USB Serial/JTAG ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
WIFI ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️ ⚒️
  • Empty cell: Not available
  • ❌: Not supported
  • ⚒️: Partial support
  • ✔️: Supported

[^1]: This cell is clickable and will open the peripheral's issue on GitHub

unstable feature

The stable feature set is designed to remain consistent and reliable. Other parts guarded by the unstable feature, however, are still under active development and may undergo breaking changes and are disabled by default.

Minimum Supported Rust Version (MSRV)

This crate is guaranteed to compile when using the latest stable Rust version at the time of the crate's release. It might compile with older versions, but that may change in any new release, including patches.

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~6–23MB
~452K SLoC