No description
Find a file
Kevin Mehall 0de3706d9f macos: Use IOUSBInterfaceInterface700 and IOUSBDeviceInterface650
IOUSBInterfaceInterface700 was added in macOS 10.10+ and
IOUSBDeviceInterface650 in macOS 10.9+, both older than Rust's
minimum of 10.12 so technically the breaking change was already
broken by Rust, but might as well get this in on the nusb v0.2
semver bump.

Co-authored-by: Charles Strahan <charles@cstrahan.com>
2025-06-15 14:20:23 -06:00
.github/workflows cargo features for smol and tokio blocking executors 2025-04-12 13:29:17 -06:00
examples Add EndpointRead and EndpointWrite 2025-06-15 12:52:41 -06:00
fuzz impl Debug for descriptors 2023-12-16 23:05:03 -07:00
src macos: Use IOUSBInterfaceInterface700 and IOUSBDeviceInterface650 2025-06-15 14:20:23 -06:00
.gitignore Initial commit: bulk transfers on Linux usbfs 2023-09-30 16:51:13 -06:00
Cargo.toml macos: Update core-foundation 2025-06-15 14:20:23 -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