#usb-device #usb #hardware

nusb

Cross-platform low-level access to USB devices in pure Rust

25 releases

new 0.2.7 Aug 3, 2026
0.2.5 Jul 16, 2026
0.2.3 Mar 10, 2026
0.2.1 Oct 5, 2025
0.1.1 Nov 8, 2023

#19 in Hardware support

Download history 20591/week @ 2026-04-19 24326/week @ 2026-04-26 25405/week @ 2026-05-03 24385/week @ 2026-05-10 29447/week @ 2026-05-17 27914/week @ 2026-05-24 28292/week @ 2026-05-31 30552/week @ 2026-06-07 28138/week @ 2026-06-14 28607/week @ 2026-06-21 27439/week @ 2026-06-28 34837/week @ 2026-07-05 42773/week @ 2026-07-12 41732/week @ 2026-07-19 46362/week @ 2026-07-26 43291/week @ 2026-08-02

177,699 downloads per month
Used in 185 crates (112 directly)

Apache-2.0 OR MIT

480KB
11K SLoC

nusb

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

nusb supports Windows, macOS, Linux, and WebUSB 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

Dependencies

~0.1–10MB
~214K SLoC