Part of #722. Investigates a single USB vendor's public PID allocation sources.
Goal
Identify every authoritative or community-maintained public source of VID:PID → product/board name data for Adafruit, then add the best one(s) as a new tier in the online-data aggregator (online-data-tools/fetch_*.py + overlay_usb_vid.py).
Known VID(s)
0x239A — Adafruit-branded boards across SAMD/nRF52/RP2040/ESP32-S2/S3. Covers Feather nRF52840 Express/Sense, ItsyBitsy, Circuit Playground Bluefruit, CLUE, Matrix Portal M4, QT Py M0, KB2040.
Investigation checklist
Walk these in priority order. Stop at the first authoritative match; the rest are fallbacks.
Deliverables
When this issue is closed, the following must exist under online-data-tools/:
- A new
fetch_adafruit.py script that pulls the chosen authoritative source, parses it, and emits {vidpid_str: product_name} JSON in the shape overlay_usb_vid.py --mode vendor-override expects.
- A unit test under
online-data-tools/test_adafruit.py covering at least 3 known products from the vendor.
- The new step wired into
.github/workflows/update-data.yml with continue-on-error: true (same fault tolerance pattern as the existing tier-1/2/3/4 sources).
- A brief note added to
online-data-tools/README.md documenting the source URL + the per-vendor caveats found during investigation.
Acceptance criteria
- After the next workflow run,
curl https://raw.githubusercontent.com/FastLED/fbuild/online-data/data/usb-vid.json | jq '."239a".products' returns at least the expected PIDs.
- A canned-query against the www SQLite DB (
vidpid LIKE '239a%') returns the same PIDs with the curated product names.
- For VIDs already covered by the existing aggregator (linux-usb.org / hwdata), this issue's investigation either confirms the upstream is sufficient (close as
wontfix) or proves the vendor source adds rows the upstream misses.
Gaps to note
If the vendor has no public registry and no Arduino-core boards.txt and the upstream usb.ids text databases already cover them adequately, document that finding in a closing comment so future contributors don't redo the search.
Tracker
Tracked by #722.
Part of #722. Investigates a single USB vendor's public PID allocation sources.
Goal
Identify every authoritative or community-maintained public source of
VID:PID → product/board namedata for Adafruit, then add the best one(s) as a new tier in theonline-dataaggregator (online-data-tools/fetch_*.py+overlay_usb_vid.py).Known VID(s)
0x239A— Adafruit-branded boards across SAMD/nRF52/RP2040/ESP32-S2/S3. Covers Feather nRF52840 Express/Sense, ItsyBitsy, Circuit Playground Bluefruit, CLUE, Matrix Portal M4, QT Py M0, KB2040.Investigation checklist
Walk these in priority order. Stop at the first authoritative match; the rest are fallbacks.
github.com/adafruit/usb-pidor similar? (Examples that DO:raspberrypi/usb-pid,espressif/usb-pids.)boards.txt. Look atgithub.com/adafruit/arduino*oradafruit/Arduino*. Each board entry typically carriesboardname.vid.N=0xVVVV+boardname.pid.N=0xPPPP.github.com/adafruit/*-udevfiles (e.g.71-vendor.rules) often carryATTRS{idVendor}=="VVVV"+ATTRS{idProduct}=="PPPP".usbd_desc.h,usb_descriptors.c,usb_device_descriptor_tin the vendor's official SDK.drivers/usb/serial/*.cfor bridge chips; theMODULE_DEVICE_TABLElines list VID:PIDs they bind.Deliverables
When this issue is closed, the following must exist under
online-data-tools/:fetch_adafruit.pyscript that pulls the chosen authoritative source, parses it, and emits{vidpid_str: product_name}JSON in the shapeoverlay_usb_vid.py --mode vendor-overrideexpects.online-data-tools/test_adafruit.pycovering at least 3 known products from the vendor..github/workflows/update-data.ymlwithcontinue-on-error: true(same fault tolerance pattern as the existing tier-1/2/3/4 sources).online-data-tools/README.mddocumenting the source URL + the per-vendor caveats found during investigation.Acceptance criteria
curl https://raw.githubusercontent.com/FastLED/fbuild/online-data/data/usb-vid.json | jq '."239a".products'returns at least the expected PIDs.vidpid LIKE '239a%') returns the same PIDs with the curated product names.wontfix) or proves the vendor source adds rows the upstream misses.Gaps to note
If the vendor has no public registry and no Arduino-core boards.txt and the upstream usb.ids text databases already cover them adequately, document that finding in a closing comment so future contributors don't redo the search.
Tracker
Tracked by #722.