An all-in-one host-side Rust USB stack implementation destined for embedded (no_std
) use.
Includes host driver for SAMD chips (for now).
Includes class drivers for keyboard and MIDI devices.
Work in progress, alpha-level code but compiles and runs.
Confirmed working with classic Dell SK-8115 keyboard, see examples/bootkbd
Also See https://github.com/fralalonde/usbmidi-host for sample MIDI application.
Not yet published on crates.io for obvious maturity reasons.
- Concurrent, non-blocking transfers (yep, still all single threaded now)
- STM32, RP2040 support would be nice
- Get string descriptors from device (forked UTF16 is ready!)
- More class drivers (Hub, Mouse, etc.)
- Alternative Async API
- Harmonize with
usb-device
crate for full OTG madness
- Double fault on device reconnect (this is new)
- MIDI not coming in (Arturia Beatstep)
- HP keyboard (KU-1156) fails to get descriptor, why?
- USB Complete The Developer's Guide 4th Ed
- Atmel-42181-SAM-D21_Datasheet
- osdev wiki
- microsoft-usb-blog
ATSAMD USB and bootkbd drivers based on https://github.com/bjc/bootkbd and https://github.com/bjc/atsamd-usb-host