#wifi #esp32 #bluetooth #abstraction-layer #no-std #esp-now

no-std esp-wifi

A WiFi, Bluetooth and ESP-NOW driver for use with Espressif chips and bare-metal Rust

16 releases (breaking)

new 0.12.0 Jan 15, 2025
0.11.0 Nov 20, 2024
0.10.1 Oct 10, 2024
0.7.1 Jul 17, 2024
0.1.1 Nov 27, 2023

#52 in Embedded development

Download history 596/week @ 2024-09-27 714/week @ 2024-10-04 738/week @ 2024-10-11 703/week @ 2024-10-18 804/week @ 2024-10-25 876/week @ 2024-11-01 611/week @ 2024-11-08 1132/week @ 2024-11-15 1378/week @ 2024-11-22 881/week @ 2024-11-29 1086/week @ 2024-12-06 1255/week @ 2024-12-13 688/week @ 2024-12-20 532/week @ 2024-12-27 917/week @ 2025-01-03 1107/week @ 2025-01-10

3,337 downloads per month
Used in martos

MIT/Apache

3.5MB
74K SLoC

esp-wifi

Crates.io docs.rs MSRV Crates.io Matrix

A WiFi, BLE and ESP-NOW driver for Espressif microcontrollers.

Note that this crate currently requires you to enable the unstable feature on esp-hal.

Current support

If a cell contains an em dash (—) this means that the particular feature is not present for a chip. A check mark (✓) means that some driver implementation exists. A Tilde (˜) means it is implemented but buggy. An empty cell means that the feature is present in the chip but not implemented yet.

Wifi BLE Coex ESP-NOW
ESP32
ESP32-C2
ESP32-C3
ESP32-C6
ESP32-H2
ESP32-S2
ESP32-S3

Missing / To be done

  • Support for non-open SoftAP

Directory Structure

  • src/timer/: systimer code used for timing and task switching
  • src/preemt/: a bare minimum RISCV and Xtensa round-robin task scheduler
  • src/compat/: code needed to emulate enough of an (RT)OS to use the driver
    • common.rs: basics like semaphores and recursive mutexes
    • timer_compat.rs: code to emulate timer related functionality
  • examples/*.rs: examples

Driver version

This uses the WiFi drivers from https://github.com/esp-rs/esp-wireless-drivers-3rdparty

v5.1.2-602-gdb1e54a0c5-dirty commit db1e54a0c537d8b2cc2bd109ee88b50e1ca0ea80

https://github.com/esp-rs/esp-wireless-drivers-3rdparty/ (commit ca2809144cf6d2f89d413f1d415f1c4454ee6249)

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

~94MB
~389K SLoC