`esp-idf-hal` logo

`esp-idf-hal`

Free

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

FreeFree tier
Type
Open Source
Company
esp-rs

About `esp-idf-hal`

Safe Rust wrappers for the drivers in the ESP-IDF SDK. This crate implements the traits of embedded-hal v0.2 and v1.0, both blocking and async, and supports almost all ESP-IDF drivers including GPIO, SPI, I2C, timer, PWM, I2S, UART, etc. It re-exports esp-idf-sys as esp_idf_hal::sys for direct access to raw bindings. The crate is a community effort with little paid developer time from Espressif; as a result, it may lag behind the latest ESP-IDF version, currently lacks HIL tests, and needs more documentation. For an officially supported HAL with paid developer time, see esp-hal (no_std, async-only).

Key Features

Implements embedded-hal v0.2 and v1.0 traits (blocking and async)
Supports almost all ESP-IDF drivers: GPIO, SPI, I2C, TIMER, PWM, I2S, UART, etc.
Blocking and async modes for each driver (async support in progress)
Re-exports esp-idf-sys as esp_idf_hal::sys
Community-driven, with examples and build prerequisites available

Pros & Cons

Pros
  • Provides safe, high-level Rust wrappers for complex ESP-IDF drivers
  • Supports both blocking and async operation (v0.2 and v1.0 embedded-hal)
  • Broad driver coverage (GPIO, SPI, I2C, PWM, etc.)
  • Re-exports esp-idf-sys for low-level access when needed
  • Actively maintained by the community with frequent updates
Cons
  • Community effort – may lag behind the latest stable ESP-IDF version
  • Currently missing Hardware-In-the-Loop (HIL) tests
  • Documentation is still sparse and requires improvement
  • Not officially supported by Espressif (paid development goes to esp-hal instead)
  • Async support is still in progress, not yet fully stable

Best For

Developing embedded Rust applications for ESP32 microcontrollers using ESP-IDFControlling hardware peripherals with safe, idiomatic Rust abstractionsPrototyping IoT devices and sensor interfacesLearning embedded Rust on Espressif chips with an RTOS

FAQ

Is esp-idf-hal officially supported by Espressif?
No, it is a community effort. Espressif puts little to no paid developer time into this crate. For an officially supported HAL (with paid developer time), see esp-hal, which is no_std-only and async.
What version of embedded-hal does this crate support?
It implements both embedded-hal v0.2 and v1.0 traits, in blocking and async modes.
Which ESP32 chips are supported?
It supports a wide range of ESP32 chips including ESP32, ESP32-C2, ESP32-C3, ESP32-C6, ESP32-H2, ESP32-P4, ESP32-S2, and ESP32-S3.
How do I get started with a project?
Follow the Prerequisites section in the esp-idf-template crate. Use the template to generate a new project with everything set up automatically.