88 releases

0.36.1 Jan 10, 2025
0.35.0 Jun 23, 2024
0.34.1 Feb 22, 2024
0.33.7 Nov 7, 2023
0.1.2 Aug 7, 2019

#1578 in Embedded development

Download history 3512/week @ 2024-10-26 3730/week @ 2024-11-02 2438/week @ 2024-11-09 2528/week @ 2024-11-16 2832/week @ 2024-11-23 2968/week @ 2024-11-30 3828/week @ 2024-12-07 4039/week @ 2024-12-14 2787/week @ 2024-12-21 3270/week @ 2024-12-28 5068/week @ 2025-01-04 5057/week @ 2025-01-11 4444/week @ 2025-01-18 4403/week @ 2025-01-25 4935/week @ 2025-02-01 5191/week @ 2025-02-08

19,817 downloads per month
Used in 44 crates (22 directly)

MIT/Apache

130KB
2.5K SLoC

Raw Rust bindings for the ESP IDF SDK

CI crates.io Documentation Matrix Wokwi

Highlights

  • Build is cargo driven and automatically downloads & configures everything by default; no need to download the ESP IDF SDK manually, or set up a C toolchain
  • Supports both native ESP IDF build (default), as well as a PlatformIO build
  • Option to use in a mixed Rust/C project. Check the documentation in the esp-idf-template crate

You might want to also check out the type safe Rust wrappers built on top of these raw bindings:

Note
esp-idf-sys's build script will download the esp-idf, its gcc toolchain, and build it. To show progress and build information about this process run cargo with the -vv (very verbose) flag, so that build script output is also displayed. This is especially useful since the initial build will take a while.

Build Prerequisites

Follow the Prerequisites section in the esp-idf-template crate.

Customizing how the ESP IDF SDK is built

Read the documentation here.

Examples

The examples could be built and flashed conveniently with cargo-espflash. To run e.g. std_basics on an e.g. ESP32-C3: (Swap the Rust target and example name with the target corresponding for your ESP32 MCU and with the example you would like to build)

with cargo-espflash:

$ MCU=esp32c3 cargo espflash flash --target riscv32imc-esp-espidf --example std_basics --monitor
MCU "--target"
esp32c2 riscv32imc-esp-espidf
esp32c3 riscv32imc-esp-espidf
esp32c6 riscv32imac-esp-espidf
esp32h2 riscv32imac-esp-espidf
esp32p4 riscv32imafc-esp-espidf
esp32 xtensa-esp32-espidf
esp32s2 xtensa-esp32s2-espidf
esp32s3 xtensa-esp32s3-espidf

Setting up a "Hello, world!" binary crate with ESP IDF

Use the esp-idf-template project. Everything would be arranged and built for you automatically - no need to manually clone the ESP IDF repository.

More information

For more information, check out:

Dependencies

~2–10MB
~112K SLoC