`esp-hal` logo

`esp-hal`

Free

[![crates.io](https://img.shields.io/crates/v/esp-hal.svg)](https://crates.io/crates/esp-hal)

FreeFree tier
Type
Open Source

About `esp-hal`

Bare-metal (no_std) hardware abstraction layer for Espressif devices. Currently supports ESP32, ESP32-C2/C3/C5/C6/C61, ESP32-H2, ESP32-P4, and ESP32-S2/S3. Also provides support for programming low-power RISC-V cores found on ESP32-C6, ESP32-S2, and ESP32-S3 via the esp-lp-hal package. The repository includes multiple crates at various stages of maturity, with documentation and examples available for getting started with Rust on ESP32 microcontrollers.

Key Features

no_std (bare-metal) design
Support for ESP32, ESP32-C2/C3/C5/C6/C61, ESP32-H2, ESP32-P4, ESP32-S2/S3
Includes esp-lp-hal for low-power RISC-V cores
Comprehensive suite of crates: esp-alloc, esp-backtrace, esp-println, esp-storage, esp-sync, etc.
Integrated with the Rust on ESP ecosystem and the Rust Embedded Book
Active development with example code and documentation

Pros & Cons

Pros
  • Wide device support covering all major ESP32 series
  • no_std and bare-metal for fine-grained control
  • Part of a well-maintained Rust embedded ecosystem
  • Active community on Matrix and support via Espressif
  • Extensive documentation and examples
Cons
  • Some advanced features may still be under development
  • Stability and functionality vary across individual crates
  • Requires familiarity with embedded Rust and no_std concepts

Best For

Embedded Rust development on Espressif microcontrollersIoT device firmwareLow-power applications using RISC-V coresReal-time embedded systems (no_std)Prototyping and production firmware for ESP32 family chips

FAQ

Which microcontrollers are supported by esp-hal?
esp-hal currently supports the ESP32, ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-P4, ESP32-S2, and ESP32-S3.