Skip to content

vid-ingest: final end-to-end verification (after #723–#739 close) #740

Description

@zackees

Part of #722. Blocked on every sibling vid-ingest issue (#723#739) being closed first.

Goal

Once every per-vendor ingest sub-issue under #722 is closed and the merged online-data/usb-vid.json carries entries from each registered source, run a single end-to-end verification pass that:

  1. Forces a fresh nightly run of the Update data workflow (workflow_dispatch from main) so online-data is republished with the union of every new tier-N fetch.
  2. Confirms every major vendor's VID resolves to its expected vendor name via plain HTTP — i.e. curl https://github.com/ghraw/FastLED/fbuild/online-data/data/usb-vid.json | jq '."VVVV".vendor' returns the expected string.
  3. Generates a curated list of common board names that real fbuild users plug in, runs each through the published SQLite-over-HTTP database on the www branch (or the equivalent JSON path), and records the hit rate.
  4. Writes the results table back into THIS issue body (edit-in-place), then stops. Do NOT close feat(online-data): ingest per-board VID:PID tables from upstream vendor manifests #722 when finished — the meta issue stays open for ongoing curation.

Step 1 — republish online-data

gh workflow run update-data.yml --repo FastLED/fbuild --ref main
gh run watch "$(gh run list --repo FastLED/fbuild --workflow update-data.yml --branch main --limit 1 --json databaseId --jq '.[0].databaseId')" --exit-status

Expected outcome: the Summary step's table shows every tier as success, and the publish step pushes a new commit to online-data (and a sibling commit to www).

Step 2 — vendor-VID resolution sweep

For each of the 17 vendors filed under #722, fetch the published JSON and assert vendor-name resolution. Fill in the Vendor-resolution results table at the bottom of this issue. Each row needs:

  • VID — lowercase 4-hex
  • Expected substring — e.g. "Espressif" for 0x303A
  • Actual — the live vendor value at that VID
  • Status — ✅ / ❌

Use:

for vid in 303a 2e8a 0483 1fc9 1915 03eb 04d8 10c4 2544 1a86 0403 1cbe 045b 2341 2a03 239a 1b4f 16c0 2886; do
  printf '0x%s: ' "$vid"
  curl -sS "https://github.com/ghraw/FastLED/fbuild/online-data/data/usb-vid.json" \
    | jq -r --arg v "$vid" '.[$v].vendor // "<missing>"'
done

Step 3 — common board names → VID:PID hit rate

The point of the per-vendor ingest work was to push the headline "what board is this VID:PID?" query to high accuracy. This step measures actual accuracy.

Generate a list of common board names (target ≥ 40) drawn from the fbuild build matrix + popular community boards. Suggested seed list:

arduino uno, arduino leonardo, arduino mega, arduino micro, arduino zero, arduino due, arduino mkr1000, arduino nano every, arduino nano 33 iot, arduino nano matter, arduino giga r1,
arduino uno r4 wifi, arduino nano rp2040 connect,
esp32 devkit v1, esp32-s2 saola, esp32-s3 devkitc-1, esp32-c3 devkitm-1, esp32-c6 devkit, esp32-h2 devkit, esp32-p4 function ev,
unexpected maker tinys2, unexpected maker tinys3, unexpected maker feathers3,
lilygo ttgo t-display, lilygo t-watch,
adafruit feather nrf52840 express, adafruit feather nrf52840 sense, adafruit itsybitsy nrf52840, adafruit circuit playground bluefruit, adafruit clue, adafruit matrix portal m4, adafruit qt py m0, adafruit qt py rp2040,
raspberry pi pico, raspberry pi pico 2, raspberry pi pico w, raspberry pi debug probe,
seeed xiao rp2040, seeed xiao nrf52840, seeed xiao mg24, seeed xiao esp32-s3,
sparkfun pro micro, sparkfun thing plus matter, sparkfun redboard artemis,
teensy 3.2, teensy 4.0, teensy 4.1, teensy lc,
nucleo f429zi, nucleo f439zi, bluepill stm32f103c8, blackpill stm32f411ce,
nice!nano, nrfmicro,
nxp lpc845-brk, lpcxpresso845-max,
ch32v003 evt

For each name, do a string-match query against the published board data (FTS5 on www's vidpid + vid_vendor tables, OR direct JSON grep on vendor_boards.json / pio-boards.json). For each board:

Fill in the Board-name match results table at the bottom.

Step 4 — write results back into this issue

When both tables are filled and tallied, edit THIS issue body in place via:

gh issue edit <THIS-ISSUE-NUMBER> --repo FastLED/fbuild --body-file <updated-body.md>

Then leave the issue open — closing it would suggest the work is permanently done; in reality the curation is an ongoing maintenance burden, so this issue stays open as the "current state of the world" pin.

Critically: do NOT close meta issue #722. It stays open as the perpetual curation tracker.

Vendor-resolution results

Filled from published online-data/data/usb-vid.json after workflow dispatch. Status is substring match against the expected vendor label.

Workflow run: https://github.com/FastLED/fbuild/actions/runs/28538427206 (main c99579e, online-data ac2d1ce, www 09b6e4b, manifest generated_at 2026-07-01T18:28:44Z).

Cross-reference: the same VID:PID rows also land in FastLED/boards site branch's usb-ids.json + usb-vids.proto.zstd (public portal at https://fastled.github.io/boards/) via FastLED/boards@df925a7f on the other branch.

VID Expected substring Actual Status
0x303a Espressif Espressif Systems
0x2e8a Raspberry Pi Raspberry Pi Foundation
0x0483 STMicroelectronics STMicroelectronics
0x1fc9 NXP NXP Semiconductors
0x1915 Nordic Nordic Semiconductor ASA
0x03eb Atmel Atmel Corp.
0x04d8 Microchip Microchip Technology, Inc.
0x10c4 Silicon Labs / Cygnal Silicon Labs
0x2544 Silicon Labs Silicon Labs
0x1a86 QinHeng / WCH QinHeng Electronics
0x0403 FTDI / Future Technology Future Technology Devices International, Ltd
0x1cbe Apollo3 / Sparkfun / Luminary Luminary Micro Inc.
0x045b Renesas Renesas Electronics
0x2341 Arduino Arduino SA
0x2a03 Arduino Arduino LLC
0x239a Adafruit Adafruit
0x1b4f SparkFun SparkFun
0x16c0 Van Ooijen / PJRC Van Ooijen Technische Informatica
0x2886 Seeed Seeed Technology Co., Ltd.

Tally: 19 / 19

Board-name match results

Filled from the published JSON path (pio-boards.json, usb-vid.json, mcu_to_vid.json) plus the current fbuild board assets under crates/fbuild-config/assets/boards/json. A board id is considered first-party fbuild support when it exists in that repo path. Follow-up PR #917 back-fills the 6 ⚠️ PID follow-up rows from the previous verification (2026-06-30) by (a) adding build.vid/build.pid to 3 existing fbuild boards and (b) creating 5 new first-party board JSONs. FastLED/boards commit @df925a7f on the other branch adds the same 8 rows to the public boards portal (https://fastled.github.io/boards/).

Board name (query) Best fbuild board id Top-ranked VID[:PID] Vendor name Match?
arduino uno uno 0x2341:0x0043 Arduino SA
arduino leonardo leonardo 0x2341:0x8036 Arduino SA
arduino mega megaatmega2560 0x2341:0x0042 Arduino SA
arduino micro micro 0x2341:0x8037 Arduino SA
arduino zero zeroUSB 0x2341:0x804d Arduino SA
arduino due due 0x2341:0x003d Arduino SA
arduino mkr1000 mkr1000USB 0x2341:0x804e Arduino SA
arduino nano every nano_every 0x2341:0x0058 Arduino SA
arduino nano 33 iot nano_33_iot 0x2341:0x8057 Arduino SA
arduino nano matter arduino_nano_matter 0x2341:0x0072 Arduino SA
arduino giga r1 giga_r1_m7 0x2341:0x0366 Arduino SA
arduino uno r4 wifi uno_r4_wifi 0x2341:0x006d Arduino SA
arduino nano rp2040 connect nanorp2040connect 0x2341:0x005e Arduino SA
esp32 devkit v1 esp32doit-devkit-v1 0x10c4:0xea60 Silicon Labs
esp32-s2 saola esp32-s2-saola-1 0x10c4:0xea60 Silicon Labs (CP2102 bridge on Saola-1)
esp32-s3 devkitc-1 esp32-s3-devkitc-1 0x303a:0x1001 Espressif Systems
esp32-c3 devkitm-1 esp32-c3-devkitm-1 0x303a:0x1001 Espressif Systems
esp32-c6 devkit esp32-c6-devkitc-1 0x303a:0x1001 Espressif Systems
esp32-h2 devkit esp32-h2-devkitm-1 0x303a:0x1001 Espressif Systems
esp32-p4 function ev esp32-p4-evboard 0x303a:0x7012 Espressif Systems
unexpected maker tinys2 um_tinys2 0x303a:0x8001 Espressif Systems
unexpected maker tinys3 um_tinys3 0x303a:0x80d0 Espressif Systems
unexpected maker feathers3 um_feathers3 0x303a:0x80d6 Espressif Systems
lilygo ttgo t-display lilygo-t-display 0x1a86:0x55d4 QinHeng Electronics
lilygo t-watch ttgo-t-watch 0x10c4:0xea60 Silicon Labs
adafruit feather nrf52840 express adafruit_feather_nrf52840 0x239a:0x8029 Adafruit
adafruit feather nrf52840 sense adafruit_feather_nrf52840_sense 0x239a:0x8087 Adafruit
adafruit itsybitsy nrf52840 adafruit_itsybitsy_nrf52840 0x239a:0x8051 Adafruit
adafruit circuit playground bluefruit adafruit_cplaynrf52840 0x239a:0x8045 Adafruit
adafruit clue adafruit_clue_nrf52840 0x239a:0x8071 Adafruit
adafruit matrix portal m4 adafruit_matrix_portal_m4 0x239a:0x80c9 Adafruit
adafruit qt py m0 adafruit_qt_py_m0 0x239a:0x80cb Adafruit
adafruit qt py rp2040 adafruit_qt_py_rp2040 0x239a:0x80f8 Adafruit
raspberry pi pico rpipico 0x2e8a:0x000a Raspberry Pi Foundation
raspberry pi pico 2 rpipico2 0x2e8a:0x000b Raspberry Pi Foundation
raspberry pi pico w rpipicow 0x2e8a:0xf00a Raspberry Pi Foundation
raspberry pi debug probe not in fbuild boards 0x2e8a:0x000c Raspberry Pi Foundation
seeed xiao rp2040 seeed_xiao_rp2040 0x2e8a:0x000a Raspberry Pi Foundation
seeed xiao nrf52840 xiaoble_adafruit 0x2886:0x0044 Seeed Technology Co., Ltd.
seeed xiao mg24 seeed_xiao_mg24 0x2886:0x0062 Seeed Technology Co., Ltd.
seeed xiao esp32-s3 seeed_xiao_esp32s3 0x2886:0x0056 Seeed Technology Co., Ltd.
sparkfun pro micro sparkfun_promicro16 0x1b4f:0x9206 SparkFun
sparkfun thing plus matter sparkfun_thingplusmatter 0x1366:0x0101 Segger (J-Link OB on Thing Plus Matter)
sparkfun redboard artemis SparkFun_RedBoard_Artemis_ATP 0x1a86:0x7523 QinHeng Electronics
teensy 3.2 teensy31 0x16c0:0x047a Van Ooijen Technische Informatica
teensy 4.0 teensy40 0x16c0:0x0483 Van Ooijen Technische Informatica
teensy 4.1 teensy41 0x16c0:0x0483 Van Ooijen Technische Informatica
teensy lc teensylc 0x16c0:0x047a Van Ooijen Technische Informatica
nucleo f429zi nucleo_f429zi 0x0483:0x374b STMicroelectronics
nucleo f439zi nucleo_f439zi 0x0483:0x374b STMicroelectronics
bluepill stm32f103c8 bluepill_f103c8 0x1eaf:0x0003 Leaflabs
blackpill stm32f411ce blackpill_f411ce 0x0483:0xdf11 STMicroelectronics
nice!nano nice_nano 0x239a:0x00b3 Adafruit (bootloader-shared)
nrfmicro nrfmicro 0x1209:0x5284 pid.codes (openmoko)
nxp lpc845-brk lpc845brk 0x0d28:0x0204 NXP
lpcxpresso845-max lpcxpresso845max 0x0d28:0x0204 NXP
ch32v003 evt ch32v003f4p6_evt_r0 0x1a86:0x8010 QinHeng Electronics (WCH-LinkE RISC-V mode)

Tally: 57 / 57 confirmed VID:PID hits.

Back-fill notes (2026-07-01):

The 6 ⚠️ PID follow-up rows and 3 _not in fbuild boards_ rows from the previous verification (2026-06-30 snapshot at fbuild online-data fdd76d3) were resolved by #917 + FastLED/boards@df925a7f:

  • esp32-s2 saola — added build.vid=0x10C4 build.pid=0xEA60 (CP2102 bridge, per Espressif Saola-1 user guide).
  • sparkfun thing plus matter — added build.vid=0x1366 build.pid=0x0101 (onboard J-Link OB, Segger PLUS variant; physical-device confirmation of the exact PID variant recommended for future).
  • ch32v003 evt — added build.vid=0x1A86 build.pid=0x8010 (bundled WCH-LinkE in RISC-V mode; ARM mode is 0x8012, requires mode-switch to flash).
  • adafruit qt py rp2040 — created crates/fbuild-config/assets/boards/json/adafruit_qt_py_rp2040.json with 0x239A:0x80F8 (adafruit/circuitpython mpconfigboard.mk).
  • seeed xiao rp2040 — created seeed_xiao_rp2040.json with 0x2E8A:0x000A (earlephilhower/arduino-pico board manifest).
  • seeed xiao mg24 — created seeed_xiao_mg24.json with 0x2886:0x0062 (SiliconLabsSoftware/arduino boards.txt).
  • nice!nano — created nice_nano.json with 0x239A:0x00B3 (Adafruit_nRF52_Bootloader nice_nano/board.h).
  • nrfmicro — created nrfmicro.json with 0x1209:0x5284 (Adafruit_nRF52_Bootloader nrfmicro/board.h + pid.codes/1209/5284).

Non-fbuild rows kept:

  • raspberry pi debug probe — 0x2E8A:0x000C is resolved via the upstream Raspberry Pi VID:PID table. Not added as a first-party fbuild board because it is a debug probe accessory, not a compilation target.

Done criteria

Out of scope

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    Status
    Triage

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions