13 releases

0.3.2 Mar 6, 2024
0.3.1 Nov 15, 2023
0.2.9 Aug 2, 2022
0.2.8 Mar 13, 2021
0.1.0 Dec 24, 2018

#12 in Hardware support

Download history 14093/week @ 2024-08-15 11053/week @ 2024-08-22 12894/week @ 2024-08-29 12906/week @ 2024-09-05 9468/week @ 2024-09-12 9408/week @ 2024-09-19 9289/week @ 2024-09-26 8286/week @ 2024-10-03 9573/week @ 2024-10-10 10991/week @ 2024-10-17 10086/week @ 2024-10-24 9831/week @ 2024-10-31 9019/week @ 2024-11-07 8380/week @ 2024-11-14 10399/week @ 2024-11-21 7824/week @ 2024-11-28

37,057 downloads per month
Used in 237 crates (114 directly)

MIT license

150KB
2.5K SLoC

usb-device

USB stack for embedded devices in Rust.

The UsbDevice object represents a composite USB device and is the most important object for application implementors. The UsbDevice combines a number of UsbClasses (either custom ones, or pre-existing ones provided by other crates) and a UsbBus device driver to implement the USB device.

The UsbClass trait can be used to implement USB classes such as a HID device or a serial port. An implementation may also use a custom class if the required functionality isn't covered by a standard class.

The UsbBus trait is intended to be implemented by device-specific crates to provide a driver for each device's USB peripheral.

Hardware driver crates

  • atsam4 - device-driver implementation for atsam4e & atsam4s microcontrollers (UDP). Examples can be found here. While not expressly supported with this crate, atsam3s and atsam55g could also be supported with a similar code-base.

  • atsamd - device-driver implementation for samd21 & samd51 microcontrollers. An example for the itsybitsy_m4 board from Adafruit can be found here.

  • imxrt-usbd - device-driver implementation for NXP i.MX RT microcontrollers. Examples for i.MX RT boards, like the Teensy 4, are maintained with the driver.

  • stm32-usbd - device-driver implementation for multiple STM32 microcontroller families. Examples can be found in each individual HAL crate that implements the USB peripheral.

  • rp2040-hal - device-driver implementation for the raspberry pi RP2040 microcontroller. Examples can be found in the various boards crates here.

Class crates

Others

Other implementations for USB in Rust

  • The Embassy project has an async USB stack, embassy-usb.

Dependencies

~1.5MB
~33K SLoC