Skip to content

research: audit and publish Pico/Pico 2 USB identities #46

Description

@zackees

Context

The boards registry already contains some Raspberry Pi / Arduino-Pico records, but Pico-family coverage is currently an aggregate of several upstream layers and does not guarantee that every official and common variant is published with a provenance-backed USB identity. fbuild now consumes the published FastLED/boards artifacts, so missing or conflated identities directly affect strict device selection and stock-board bring-up.

The initial investigation found these authoritative anchors:

Proposal

Perform an internet-backed, source-by-source sweep of Raspberry Pi-branded Pico variants and the common RP2040/RP2350-compatible variants represented by the Arduino-Pico board catalog. Confirm each USB identity from an upstream board definition, vendor allocation, firmware source, datasheet, or reproducible OS/descriptor report. Record the result on the appropriate data branch (arduino, vendors, other, or platformio) rather than editing generated site artifacts directly.

The sweep should explicitly cover:

  • Pico / Pico H / Pico W / Pico WH
  • Pico 2 / Pico 2 H / Pico 2 W / Pico 2 WH
  • RP2040 and RP2350 board variants present in Arduino-Pico (including boards whose runtime VID/PID is inherited from the Raspberry Pi default)
  • ROM BOOTSEL versus application CDC identities, including composite-mode PID variants
  • Boards with a dedicated vendor VID/PID versus boards that intentionally reuse 2e8a:000a or 2e8a:000f

Every accepted record must include normalized lowercase VID/PID, product/board name, source URL or immutable upstream reference, source class, and a note when the PID is a bootloader-only identity or a runtime-only identity. Do not infer a runtime serial endpoint from the 2e8a:0003 mass-storage BOOTSEL device.

Acceptance criteria

  • The internet research covers all official Pico/Pico 2 variants and the in-scope Arduino-Pico RP2040/RP2350 variant set.
  • Each published VID:PID has authoritative provenance and clearly distinguishes BOOTSEL, runtime CDC, and composite-mode variants.
  • Confirmed records land on the correct source data branch and are regenerated through the normal boards pipeline; no generated site-src/public hand edits.
  • usb-ids.json, usb-vids.proto.zstd, SQLite, and portal search contain the new records after the site build.
  • Duplicate/collision handling is documented where multiple boards intentionally share a VID:PID.
  • fbuild can ingest the published artifacts without maintaining a second hard-coded Pico VID/PID table.
  • Add regression tests for stock 2e8a:0003, RP2040 CDC 2e8a:000a, and RP2350/Pico 2 identities, including a negative case proving an unrelated CP210x device is not selected.
  • Report unresolved or vendor-customized identities separately rather than guessing.

Open questions

  • Which third-party boards should be considered “common” enough for the first publication pass beyond the Arduino-Pico catalog? Prefer a documented cutoff (for example, boards present in the current upstream catalog) over an unbounded scrape.
  • Should composite PID aliases be published as separate product rows with a shared board link, or represented only in board metadata?

Related issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions