# respeaker
Rust USB control library for the [Seeed ReSpeaker Mic Array v2.0](https://wiki.seeedstudio.com/ReSpeaker_Mic_Array_v2.0/) (`2886:0018`).
Covers:
- **LED ring** — same vendor protocol as [`pixel_ring`](https://github.com/respeaker/pixel_ring) (`usb_pixel_ring_v2.py`)
- **DSP tuning** — same vendor protocol as [`tuning.py`](https://github.com/respeaker/usb_4_mic_array) (AEC/AGC/NS/DOA/VAD, …)
## Example
```rust
use respeaker::ReSpeaker;
fn main() -> respeaker::Result<()> {
let dev = ReSpeaker::open()?;
dev.led().off()?;
println!("DOA: {}°", dev.tuning().doa_angle()?);
Ok(())
}
```
### CLI example (clap)
Exercises every LED mode and DSP parameter:
```bash
cargo run --example cli -- --help
cargo run --example cli -- test-all
cargo run --example cli -- test-all --delay-ms 300
cargo run --example cli -- led mono --color ff0000
cargo run --example cli -- led customize
cargo run --example cli -- param read-all
cargo run --example cli -- doa
```
## Permissions (Linux)
```bash
echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="2886", ATTR{idProduct}=="0018", MODE="0666"' \
| sudo tee /etc/udev/rules.d/60-respeaker.rules
sudo udevadm control --reload-rules && sudo udevadm trigger
```