con un clic
board-support
// Diagnose and fix board definition issues. Use when a board is missing, misconfigured, has wrong build flags, or when comparing fbuild's board database against external sources (Arduino, Zephyr, PlatformIO).
// Diagnose and fix board definition issues. Use when a board is missing, misconfigured, has wrong build flags, or when comparing fbuild's board database against external sources (Arduino, Zephyr, PlatformIO).
| name | board-support |
| description | Diagnose and fix board definition issues. Use when a board is missing, misconfigured, has wrong build flags, or when comparing fbuild's board database against external sources (Arduino, Zephyr, PlatformIO). |
| allowed-tools | Bash Read Grep Glob WebFetch Agent |
You are diagnosing a board definition issue in fbuild. fbuild maintains its own board database (1609+ boards as JSON files) derived primarily from PlatformIO, but boards also exist in Arduino, Zephyr, and other ecosystems that we may need to ingest.
crates/fbuild-config/assets/boards/json/{board_id}.jsoncrates/fbuild-config/assets/boards/manifest.jsoncrates/fbuild-config/src/board.rscrates/fbuild-config/src/bin/enrich_boards.rsci/validate_boards.pyci/board_sources.pyls crates/fbuild-config/assets/boards/json/{BOARD_ID}.json
If it exists, read it and check for missing/wrong fields (build.core, build.variant, build.mcu, build.extra_flags, upload.protocol, upload.speed, etc.)
ls ~/.platformio/platforms/*/boards/{BOARD_ID}.json
Compare against our copy. Run validation:
uv run python ci/validate_boards.py --platforms {PLATFORM}
Use ci/board_sources.py to fetch and search external board lists:
# List all boards from Arduino package indices
uv run python ci/board_sources.py --list-arduino
# List all boards from Zephyr
uv run python ci/board_sources.py --list-zephyr
# Search for a specific board across all sources
uv run python ci/board_sources.py --search {BOARD_NAME}
# Full comparison: find boards in external sources missing from fbuild
uv run python ci/board_sources.py --compare
These are JSON files listing board support packages. Fetch and inspect them:
| Source | URL |
|---|---|
| Arduino Official | https://downloads.arduino.cc/packages/package_index.json |
| ESP32 (Espressif) | https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json |
| ESP8266 | https://arduino.esp8266.com/stable/package_esp8266com_index.json |
| Adafruit | https://adafruit.github.io/arduino-board-index/package_adafruit_index.json |
| SparkFun | https://raw.githubusercontent.com/sparkfun/Arduino_Boards/main/IDE_Board_Manager/package_sparkfun_index.json |
| Teensy | https://www.pjrc.com/teensy/package_teensy_index.json |
The CH32V family (CH32V003, V103, V203, V208, V303, V307, CH32X035) uses the community PlatformIO platform:
| Resource | URL |
|---|---|
| PlatformIO platform | https://github.com/Community-PIO-CH32V/platform-ch32v |
| Board definitions | https://github.com/Community-PIO-CH32V/platform-ch32v/tree/develop/boards |
| WCH Arduino core | https://github.com/openwch/arduino_core_ch32 |
| WCH product pages | http://www.wch-ic.com/products/CH32V003.html (replace series in URL) |
All CH32V boards use platform = ch32v in platformio.ini. Arduino framework is available for V003, V203, and V307 series. Other series use noneos-sdk or ch32v003fun frameworks.
Arduino package index JSON structure:
packages[].platforms[].boards[].name — board display name
packages[].platforms[].architecture — e.g. "esp32", "avr", "samd"
packages[].name — vendor/packager name
Zephyr boards are defined as YAML + Devicetree in the Zephyr repo:
| Resource | URL |
|---|---|
| Board index | https://raw.githubusercontent.com/zephyrproject-rtos/zephyr/main/boards/index.rst |
| Board directories | https://api.github.com/repos/zephyrproject-rtos/zephyr/contents/boards |
Zephyr board.yml structure:
board:
name: <board_name>
vendor: <vendor>
socs:
- name: <soc_name>
| Source | Format | URL / Repo |
|---|---|---|
| PlatformIO Registry API | JSON | https://api.registry.platformio.org/v3/packages |
| CMSIS-Pack Index | XML | https://www.keil.com/pack/index.pidx |
| Mbed OS targets | JSON | https://raw.githubusercontent.com/ARMmbed/mbed-os/master/targets/targets.json |
| probe-rs targets | YAML | https://github.com/probe-rs/probe-rs/tree/master/probe-rs/targets |
| STM32CubeMX DB | XML | https://github.com/STMicroelectronics/STM32_open_pin_data |
| CircuitPython | Mixed | https://github.com/adafruit/circuitpython/tree/main/ports |
If the board is missing entirely:
crates/fbuild-config/assets/boards/json/{board_id}.json with the standard fieldsmanifest.json (sorted alphabetically)uv run cargo run -p fbuild-config --bin enrich_boardsIf the board has wrong fields:
uv run python ci/validate_boards.pyuv run test -p fbuild-configIf the board is in Arduino/Zephyr but not PlatformIO: