{"id":13423304,"url":"https://github.com/rust-embedded-community/usb-device","last_synced_at":"2026-03-17T20:03:06.419Z","repository":{"id":36999321,"uuid":"146472687","full_name":"rust-embedded-community/usb-device","owner":"rust-embedded-community","description":"Experimental device-side USB framework for microcontrollers in Rust.","archived":false,"fork":false,"pushed_at":"2025-02-03T20:53:58.000Z","size":451,"stargazers_count":502,"open_issues_count":33,"forks_count":86,"subscribers_count":21,"default_branch":"master","last_synced_at":"2026-01-14T14:39:35.476Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rust-embedded-community.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-08-28T16:01:57.000Z","updated_at":"2026-01-05T17:18:13.000Z","dependencies_parsed_at":"2022-08-08T19:00:10.377Z","dependency_job_id":"58743286-fcf0-4aaa-944a-386c5d93189f","html_url":"https://github.com/rust-embedded-community/usb-device","commit_stats":{"total_commits":174,"total_committers":21,"mean_commits":8.285714285714286,"dds":"0.39655172413793105","last_synced_commit":"028abb9f9a7ffee1228b0fd81f431770143464c7"},"previous_names":["mvirkkunen/usb-device"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/rust-embedded-community/usb-device","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-embedded-community%2Fusb-device","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-embedded-community%2Fusb-device/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-embedded-community%2Fusb-device/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-embedded-community%2Fusb-device/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rust-embedded-community","download_url":"https://codeload.github.com/rust-embedded-community/usb-device/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rust-embedded-community%2Fusb-device/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30630028,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-17T17:32:55.572Z","status":"ssl_error","status_checked_at":"2026-03-17T17:32:38.732Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T00:00:29.053Z","updated_at":"2026-03-17T20:03:06.401Z","avatar_url":"https://github.com/rust-embedded-community.png","language":"Rust","funding_links":[],"categories":["Component abstraction crates","Rust"],"sub_categories":["Other"],"readme":"usb-device\n==========\n\nUSB stack for embedded devices in Rust.\n\nThe UsbDevice object represents a composite USB device and is the most important object for\napplication implementors. The UsbDevice combines a number of UsbClasses (either custom ones, or\npre-existing ones provided by other crates) and a UsbBus device driver to implement the USB device.\n\nThe UsbClass trait can be used to implement USB classes such as a HID device or a serial port. An\nimplementation may also use a custom class if the required functionality isn't covered by a standard\nclass.\n\nThe UsbBus trait is intended to be implemented by device-specific crates to provide a driver for\neach device's USB peripheral.\n\nHardware driver crates\n----------------------\n\n* [atsam4](https://github.com/atsam-rs/atsam4-hal) - device-driver implementation for atsam4e \u0026 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.\n\n* [atsamd](https://github.com/atsamd-rs/atsamd) - device-driver implementation for samd21 \u0026 samd51 microcontrollers. An example for the\n  itsybitsy_m4 board from Adafruit can be found [here](https://github.com/atsamd-rs/atsamd/blob/master/boards/itsybitsy_m4/examples/usb_serial.rs).\n\n* [imxrt-usbd](https://github.com/imxrt-rs/imxrt-usbd) - device-driver implementation for NXP i.MX RT microcontrollers. Examples for\n  i.MX RT boards, like the Teensy 4, are maintained with the driver.\n\n* [musb](https://github.com/decaday/musb) - device-driver implementation for musb (Mentor USB, USB2.0 IP), widely used in various microcontrollers and SoCs from vendors like TI, MediaTek, Puya, and Allwinner. \n  Examples can be found in [py32-hal](https://github.com/py32-rs/py32-hal/tree/main/examples/usbd-f072).\n\n* [rp2040-hal](https://github.com/rp-rs/rp-hal) -\ndevice-driver implementation for the raspberry pi RP2040\nmicrocontroller. Examples can be found in the various boards\ncrates [here](https://github.com/rp-rs/rp-hal-boards).\n\n* [stm32-usbd](https://github.com/stm32-rs/stm32-usbd) - device-driver implementation for multiple STM32 microcontroller families.\n  Examples can be found in each individual HAL crate that implements the USB peripheral.\n\nClass crates\n------------\n\n* [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\n* [usbd-human-interface-device](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-interface-device) - HID class\n* [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\n* [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\n* [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\n* [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\n* [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 class\n* [usbd-audio](https://github.com/kiffie/usbd-audio) [![Crates.io](https://img.shields.io/crates/v/usbd-audio.svg)](https://crates.io/crates/usbd-audio) - (Experimental) Audio class\n\nOthers\n------\n\nOther implementations for USB in Rust\n\n* The [Embassy](https://github.com/embassy-rs/embassy) project has an async USB stack, embassy-usb.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frust-embedded-community%2Fusb-device","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frust-embedded-community%2Fusb-device","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frust-embedded-community%2Fusb-device/lists"}