No description
Find a file
Davíð Steinn Geirsson a45a3e08be
Some checks failed
Rust / format (push) Has been cancelled
Rust / build (macos-latest, 1.79) (push) Has been cancelled
Rust / build (macos-latest, stable) (push) Has been cancelled
Rust / build (ubuntu-latest, 1.79) (push) Has been cancelled
Rust / build (ubuntu-latest, stable) (push) Has been cancelled
Rust / build (windows-latest, 1.79) (push) Has been cancelled
Rust / build (windows-latest, stable) (push) Has been cancelled
Rust / build_android (push) Has been cancelled
feat: add Interface::clear_halt(endpoint: u8) for direct endpoint halt clearing
Allows clearing a halt/stall condition by raw endpoint address without
needing to construct a typed Endpoint object. Implemented on all three
platform backends (Linux usbfs, macOS IOKit, Windows WinUSB).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-31 15:13:39 +00:00
.github/workflows Add crates.io trusted publishing 2025-10-04 17:50:50 -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 feat: add Interface::clear_halt(endpoint: u8) for direct endpoint halt clearing 2026-03-31 15:13:39 +00:00
.gitignore Initial commit: bulk transfers on Linux usbfs 2023-09-30 16:51:13 -06:00
Cargo.toml v0.2.3 2026-03-10 12:22:08 -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 Documentation improvements 2025-07-26 17:21:28 -06:00

nusb

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

nusb supports Windows, macOS, and Linux, and provides both async and blocking APIs for listing and watching USB devices, reading descriptor details, opening and managing devices and interfaces, and performing transfers on control, bulk, and interrupt endpoints.

Compared to rusb and libusb

  • Pure Rust, no dependency on libusb or any other C library.
  • Async-first, while not requiring an async runtime.
  • 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.

License

MIT or Apache 2.0, at your option