7 releases (4 breaking)
Uses new Rust 2024
| 0.13.1 | Dec 14, 2025 |
|---|---|
| 0.12.0 | Nov 27, 2025 |
#657 in Embedded development
330KB
6.5K
SLoC
LR2021 Driver
An async, no_std Rust driver for the Semtech LR2021 dual-band transceiver, supporting many different radio protocols including LoRa, BLE, ZigBee, Z-Wave, and more.
Quick Start
Add this to your Cargo.toml:
[dependencies]
lr2021 = "0.13"
embassy-time = "0.5"
Basic usage:
use lr2021_driver::Lr2021;
let mut radio = Lr2021::new(reset_pin, busy_pin, spi_device, nss_pin);
radio.reset().await?;
// Configure and use your preferred protocol
Hardware Requirements
- Semtech LR2021 transceiver module
- SPI-capable microcontroller
- 3 GPIO pins: Reset (output), Busy (input), NSS/CS (output) (not counting SPI SCK/MISO/MOSI)
- Embassy-compatible async runtime
Documentation & Examples
- API Documentation - Complete API reference
- Example Applications - Real-world usage examples on Nucleo boards
Protocol Test Status
| Protocol | Status | Notes |
|---|---|---|
| LoRa | Partial | Basic communication between two LR2021 devices: smallest SF, highest bandwidth. TODO: Ranging |
| BLE | Partial | 1MB/s mode, compatible with other BLE devices. TODO: 2Mb/s, Coded |
| FLRC | Tested | Basic communication between two LR2021 devices |
| FSK | Tested | Generic FSK communication verified |
| Z-Wave | Tested | Scan mode tested with ZStick S2, R1-R3 reception |
| OOK | Partial | ADSB reception validated, RTS between two LR2021 |
| ZigBee | Partial | Reception validated with standard device |
| WiSUN | Partial | Basic communication between two LR2021 devices |
| WMBus | Partial | Basic communication between two LR2021 devices |
| LR-FHSS | Unplanned | TX only (require gateway for test) |
| Sigfox (BPSK) | Unplanned | TX only (require gateway for test) |
Dependencies
~2.5MB
~54K SLoC