You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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:
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.
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.
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.
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:
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:
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:
Find the best fbuild-known board id (fuzzy match on board.name).
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.
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-datafdd76d3) 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/circuitpythonmpconfigboard.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/arduinoboards.txt).
nice!nano — created nice_nano.json with 0x239A:0x00B3 (Adafruit_nRF52_Bootloadernice_nano/board.h).
nrfmicro — created nrfmicro.json with 0x1209:0x5284 (Adafruit_nRF52_Bootloadernrfmicro/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
Both result tables above are fully filled in (no _pending_ rows remain).
Tallies posted as the final lines of each table.
The issue stays open with the populated tables as its body (so it acts as the "last verified state" pin).
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.jsoncarries entries from each registered source, run a single end-to-end verification pass that:Update dataworkflow (workflow_dispatchfrommain) soonline-datais republished with the union of every new tier-N fetch.curl https://github.com/ghraw/FastLED/fbuild/online-data/data/usb-vid.json | jq '."VVVV".vendor'returns the expected string.wwwbranch (or the equivalent JSON path), and records the hit rate.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-statusExpected outcome: the
Summarystep's table shows every tier assuccess, and the publish step pushes a new commit toonline-data(and a sibling commit towww).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-hexExpected substring— e.g."Espressif"for 0x303AActual— the livevendorvalue at that VIDStatus— ✅ / ❌Use:
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:
For each name, do a string-match query against the published board data (FTS5 on www's
vidpid+vid_vendortables, OR direct JSON grep onvendor_boards.json/pio-boards.json). For each board:board.name).mcu_to_vidheuristic OR direct VID:PID via the futureusb-board-pids.json(from feat(online-data): ingest per-board VID:PID tables from upstream vendor manifests #722 work).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:
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
Tally: 19 / 19
Board-name match results
Tally: 57 / 57 confirmed VID:PID hits.
Back-fill notes (2026-07-01):
The 6⚠️
PID follow-uprows and 3_not in fbuild boards_rows from the previous verification (2026-06-30 snapshot at fbuildonline-datafdd76d3) were resolved by #917 + FastLED/boards@df925a7f:esp32-s2 saola— addedbuild.vid=0x10C4 build.pid=0xEA60(CP2102 bridge, per Espressif Saola-1 user guide).sparkfun thing plus matter— addedbuild.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— addedbuild.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— createdcrates/fbuild-config/assets/boards/json/adafruit_qt_py_rp2040.jsonwith 0x239A:0x80F8 (adafruit/circuitpythonmpconfigboard.mk).seeed xiao rp2040— createdseeed_xiao_rp2040.jsonwith 0x2E8A:0x000A (earlephilhower/arduino-picoboard manifest).seeed xiao mg24— createdseeed_xiao_mg24.jsonwith 0x2886:0x0062 (SiliconLabsSoftware/arduinoboards.txt).nice!nano— creatednice_nano.jsonwith 0x239A:0x00B3 (Adafruit_nRF52_Bootloadernice_nano/board.h).nrfmicro— creatednrfmicro.jsonwith 0x1209:0x5284 (Adafruit_nRF52_Bootloadernrfmicro/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
_pending_rows remain).Out of scope