Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mvirkkunen/usb-device
Experimental device-side USB framework for microcontrollers in Rust.
https://github.com/mvirkkunen/usb-device
Last synced: 3 months ago
JSON representation
Experimental device-side USB framework for microcontrollers in Rust.
- Host: GitHub
- URL: https://github.com/mvirkkunen/usb-device
- Owner: rust-embedded-community
- License: mit
- Created: 2018-08-28T16:01:57.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-04-28T02:44:51.000Z (7 months ago)
- Last Synced: 2024-05-21T03:36:29.089Z (6 months ago)
- Language: Rust
- Homepage:
- Size: 412 KB
- Stars: 399
- Watchers: 18
- Forks: 75
- Open Issues: 24
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- awesome-embedded-rust - `usb-device` - [![crates.io](https://img.shields.io/crates/v/usb-device.svg)](https://crates.io/crates/usb-device) (Component abstraction crates / Other)
- rust-embedded - `usb-device` - [![crates.io](https://img.shields.io/crates/v/usb-device.svg)](https://crates.io/crates/usb-device) (Component abstraction crates / Other)
README
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](https://github.com/atsam-rs/atsam4-hal) - device-driver implementation for atsam4e & atsam4s microcontrollers (UDP). Examples can be found [here](https://github.com/atsam-rs/sam_xplained). While not expressly supported with this crate, atsam3s and atsam55g could also be supported with a similar code-base.
* [atsamd](https://github.com/atsamd-rs/atsamd) - device-driver implementation for samd21 & samd51 microcontrollers. An example for the
itsybitsy_m4 board from Adafruit can be found [here](https://github.com/atsamd-rs/atsamd/blob/master/boards/itsybitsy_m4/examples/usb_serial.rs).* [imxrt-usbd](https://github.com/imxrt-rs/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](https://github.com/stm32-rs/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](https://github.com/rp-rs/rp-hal) - device-driver implementation for the raspberry pi RP2040 microcontroller. Examples can be found
in the various boards crates [here](https://github.com/rp-rs/rp-hal-boards).Class crates
------------* [usbd-hid](https://github.com/twitchyliquid64/usbd-hid) [![Crates.io](https://img.shields.io/crates/v/usbd-hid.svg)](https://crates.io/crates/usbd-hid) - HID class
* [usbd-human-device-interface](https://github.com/dlkj/usbd-human-interface-device) [![Crates.io](https://img.shields.io/crates/v/usbd-human-interface-device.svg)](https://crates.io/crates/usbd-human-device-interface) - HID class
* [usbd-serial](https://github.com/rust-embedded-community/usbd-serial) [![Crates.io](https://img.shields.io/crates/v/usbd-serial.svg)](https://crates.io/crates/usbd-serial) - CDC-ACM serial port class
* [usbd-storage](https://github.com/apohrebniak/usbd-storage) [![Crates.io](https://img.shields.io/crates/v/usbd-storage.svg)](https://crates.io/crates/usbd-storage) - (Experimental) Mass storage port class
* [usbd-dfu](https://github.com/vitalyvb/usbd-dfu) [![Crates.io](https://img.shields.io/crates/v/usbd-dfu.svg)](https://crates.io/crates/usbd-dfu) - Device Firmware Upgrade class
* [usbd-picotool-reset](https://github.com/ithinuel/usbd-picotool-reset) [![Crates.io](https://img.shields.io/crates/v/usbd-picotool-reset.svg)](https://crates.io/crates/usbd-picotool-reset) - picotool-reset class
* [usbd-midi](https://github.com/rust-embedded-community/usbd-midi) [![Crates.io](https://img.shields.io/crates/v/usbd-midi.svg)](https://crates.io/crates/usbd-midi) - MIDI classOthers
------Other implementations for USB in Rust
* The [Embassy](https://github.com/embassy-rs/embassy) project has an async USB stack, embassy-usb.