# sekigon-gonnoc/Pico-PIO-USB

USB host/device implementation using PIO of raspberry pi pico (RP2040/RP2350).

Repository: https://github.com/sekigon-gonnoc/Pico-PIO-USB
Canonical: https://ross.abutalabs.com/products/pico-pio-usb
Language: C
License: MIT
License Family: permissive
Last push: 2026-07-22T12:01:32+00:00

## Health v2 (maintenance only)
Score: 76/100 (v2, computed 2026-09-03T02:20:16.233290+00:00)
- activity 93, release rhythm 40, longevity 100
- inputs: {"age_days": 1720, "days_push": 42, "days_rel": 469, "gap_med": 23.0, "n_releases_24m": 3}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1744, forks 218 (observed 2026-08-28T04:05:30.551881+00:00)

## What it is
A C library that implements USB full-speed/low-speed host and device protocols using the PIO (Programmable I/O) blocks of the Raspberry Pi Pico RP2040/RP2350 microcontrollers. It lets developers add extra USB ports to the chip beyond its native USB controller, with support for hubs, multi-port, and HID devices.

## Use cases
- add an extra USB host port to an RP2040 microcontroller
- read keyboard and mouse input on a Pico without native USB host support
- build a split keyboard that connects two halves via USB
- implement a USB HID device on a second port of the Pico
- forward HID reports from a host port to a CDC device port
- connect USB hubs and multiple devices to a single RP2040

## When to choose
- you need more USB ports than the RP2040's single native USB controller provides
- you are building USB host peripherals like keyboards, mice, or HID readers on Pico hardware
- you want a lightweight PIO-based USB stack that integrates with TinyUSB
- you are developing QMK or other embedded firmware for split keyboards

## When to avoid
- you need high-speed (HS) USB, which is not supported
- you are not targeting RP2040/RP2350 hardware
- you need a fully certified or production-hardened USB stack with minimal resource usage constraints
- you require USB device functionality without access to an external 1.5kohm pull-up resistor

## Facets
- artifact type: library
- maturity: active
- function: embedded, sdk
- domain: embedded-systems, hardware, developer-tools
- platform: embedded, cpp, c
- tags: rp2040, rp2350, pio, usb-host, usb-device, raspberry-pi-pico, tinyusb, firmware, driver

## Member repositories
- sekigon-gonnoc/Pico-PIO-USB (main) score 76

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:05:30.551881+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T03:29:29.591401+00:00, confidence not recorded.
  - readme: https://github.com/sekigon-gonnoc/Pico-PIO-USB (fetched 2026-08-28T04:05:30.551881+00:00, sha 3224d41a04d7)
- Data as of 2026-08-30T08:39:29.467469+00:00.
