No description
Find a file
Kevin Mehall 84616c749e Remove DeviceInfo::max_packet_size_0
This isn't exposed on WebUSB or Android, and isn't useful as a criteria for filtering devices.
Control endpoint packet size is fully abstracted by the OS, so the only use case is for
re-constructing the device descriptor, and now we offer the full device descriptor
for an opened device.
2025-07-26 15:58:13 -06:00
.github/workflows cargo features for smol and tokio blocking executors 2025-04-12 13:29:17 -06:00
examples EndpointRead / EndpointWrite examples with tokio and smol 2025-07-16 21:47:22 -06:00
fuzz impl Debug for descriptors 2023-12-16 23:05:03 -07:00
src Remove DeviceInfo::max_packet_size_0 2025-07-26 15:58:13 -06:00
.gitignore Initial commit: bulk transfers on Linux usbfs 2023-09-30 16:51:13 -06:00
Cargo.toml windows: Update windows-sys 2025-07-16 23:27:42 -06:00
LICENSE-APACHE A little bit of documentation 2023-10-01 12:20:30 -06:00
LICENSE-MIT A little bit of documentation 2023-10-01 12:20:30 -06:00
README.md Docs edits 2024-03-03 12:21:46 -07:00

nusb

A new pure-Rust library for cross-platform low-level access to USB devices.

Documentation

Compared to rusb and libusb

  • Pure Rust, no dependency on libusb or any other C library.
  • Async-first, while not requiring an async runtime like tokio or async-std. Still easily supports blocking with futures_lite::block_on.
  • No context object. You just open a device. There is a global event loop thread that is started when opening the first device.
  • Thinner layer over OS APIs, with less internal state.

Current status

  • Support for Linux, Windows, and macOS
  • Device listing and descriptor parsing
  • Transfers on control, bulk and interrupt endpoints
  • Used in production by probe-rs and others, but still relatively new. Please test with your device and report issues.

License

MIT or Apache 2.0, at your option