#usb #usb-device #packet #channel #gadget #async


USB packet channel (UPC): provides a reliable, packet-based transport over USB

9 unstable releases (3 breaking)

0.4.0 Nov 11, 2023
0.3.2 Nov 11, 2023
0.2.4 Nov 3, 2023
0.1.0 Oct 13, 2023

#4 in #gadget

Download history 32/week @ 2024-02-04 12/week @ 2024-02-18 9/week @ 2024-02-25 3/week @ 2024-03-03 22/week @ 2024-03-10 1/week @ 2024-03-17 19/week @ 2024-03-24 44/week @ 2024-03-31

86 downloads per month
Used in aggligator-util


806 lines

USB packet channel (UPC)

crates.io page docs.rs page Apache 2.0 license

This library provides a reliable, packet-based transport over a physical USB connection with an asynchronous API.


This crate provides the following features:

  • host enables the host-side part,
  • device enables the device-side part.

To be useful, at least one of these features must be enabled.


The minimum support Rust version (MSRV) is 1.73.

The host-side part supports any operating system supported by libusb.

The device-side part requires Linux and a USB device controller (UDC).


upc is licensed under the Apache 2.0 license.


Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in upc by you, shall be licensed as Apache 2.0, without any additional terms or conditions.


~156K SLoC