This repository hosts the wireless-driver's binaries and low-level bindings.
If you are looking for esp-wifi see esp-radio in esp-hal
The headers and libraries are prepared in esp-wireless-drivers-3rdparty.
Only the static libraries needed by the enabled features are linked. libphy and libprintf (and librtc on ESP32) are always linked.
wifi: the Wi-Fi driver librariesbt: the Bluetooth controller librariesieee802154: the libraries needed by the IEEE 802.15.4 driver (ESP32-C5, ESP32-C6, ESP32-H2, ESP32-H4, ESP32-S31)
Each crate only provides the features its chip supports. libcoexist is linked when any of them is enabled.
Depending on the lld version used by the toolchain you might see linker errors like this after copying the libs:
rust-lld: error: relocation refers to a symbol in a discarded section: .L0
>>> defined in /Users/espressif/action-runner/esp-rs/_work/esp-hal/esp-hal/target/riscv32imac-unknown-none-elf/debug/build/esp-wifi-sys-esp32c61-e592915ee1a41dea/out/libphy.a(phy_api.o)
>>> referenced by phy_api.o:(.eh_frame+0x12d4) in archive /Users/espressif/action-runner/esp-rs/_work/esp-hal/esp-hal/target/riscv32imac-unknown-none-elf/debug/build/esp-wifi-sys-esp32c61-e592915ee1a41dea/out/libphy.a
You can strip the .eh_frame segment from these binaries like this, to make it work:
riscv32-esp-elf-objcopy --remove-section=.eh_frame esp-wifi-sys-esp32c61/libs/libphy.a
(This seems to be fixed now, the above step wasn't needed for the last update.)
Make sure to NOT use a libclang version later than 21! It will generate structs containing just a single field pub _address: u8.
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
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.