Skip to content

board DB: missing Seeed XIAO BLE / BLE Sense (nRF52840) — breaks maxgerhardt platform builds #293

@zackees

Description

@zackees

Symptom

fbuild rejects both Seeed XIAO BLE board IDs:

build error: config error: unknown board 'xiaoble_adafruit' (no built-in defaults)
build error: config error: unknown board 'xiaoblesense_adafruit' (no built-in defaults)

Reproducible: every FastLED nrf52_xiaoblesense and adafruit_xiaoblesense workflow run on master, e.g. https://github.com/FastLED/FastLED/actions/runs/26677701959 and https://github.com/FastLED/FastLED/actions/runs/26677701939 — every example fails identically.

Root cause

crates/fbuild-config/src/board/db.rs looks up boards in the bundled include_dir!("$CARGO_MANIFEST_DIR/assets/boards/json") DB. xiaoble_adafruit.json and xiaoblesense_adafruit.json are not in the bundle. Both boards are defined in maxgerhardt's platform-nordicnrf52 package (boards/xiaoble_adafruit.json, boards/xiaoblesense_adafruit.json on the develop branch), but fbuild does not consult ~/.platformio/platforms/ at runtime — the bundled DB is the source of truth.

enrich_boards (one-off maintenance bin) imports from the local PlatformIO install, but it apparently was last run before maxgerhardt's XIAO boards were available, or against a platform install that didn't have them.

Affected jobs

Every FastLED CI workflow that targets these board IDs:

  • nrf52_xiaoblesensexiaoble_adafruit (FastLED XIAOBLESENSE_NRF52 real_board_name)
  • adafruit_xiaoblesensexiaoblesense_adafruit (FastLED XIAOBLESENSE_ADAFRUIT_NRF52)

Every example in each workflow (AnalogOutput, Animartrix, Apa102, …) hits the same "unknown board" failure before any code is compiled.

Proposed fix

Add two bundled JSONs to crates/fbuild-config/assets/boards/json/:

xiaoble_adafruit.json (Seeed XIAO BLE, no IMU):

{
  "build": {
    "core": "nRF5",
    "variant": "Seeed_XIAO_nRF52840",
    "arduino": { "ldscript": "nrf52840_s140_v7.ld" }
  },
  "connectivity": ["bluetooth"],
  "debug": { "tools": { "blackmagic": {}, "jlink": {}, "cmsis-dap": {} } },
  "fcpu": 64000000,
  "frameworks": ["arduino"],
  "id": "xiaoble_adafruit",
  "mcu": "NRF52840",
  "name": "Seeed XIAO BLE nRF52840",
  "platform": "nordicnrf52",
  "ram": 237568,
  "rom": 811008,
  "url": "https://wiki.seeedstudio.com/XIAO_BLE",
  "vendor": "Seeed"
}

xiaoblesense_adafruit.json (Seeed XIAO BLE Sense, with IMU/mic):

{
  "build": {
    "core": "nRF5",
    "variant": "Seeed_XIAO_nRF52840_Sense",
    "arduino": { "ldscript": "nrf52840_s140_v7.ld" }
  },
  "connectivity": ["bluetooth"],
  "debug": { "tools": { "blackmagic": {}, "jlink": {}, "cmsis-dap": {} } },
  "fcpu": 64000000,
  "frameworks": ["arduino"],
  "id": "xiaoblesense_adafruit",
  "mcu": "NRF52840",
  "name": "Seeed XIAO BLE Sense",
  "platform": "nordicnrf52",
  "ram": 237568,
  "rom": 811008,
  "url": "https://wiki.seeedstudio.com/XIAO_BLE",
  "vendor": "Seeed"
}

Values mirror maxgerhardt/platform-nordicnrf52/boards/<name>.json (RAM/ROM from upload.maximum_ram_size/maximum_size; ldscript from build.arduino.ldscript; variant from build.variant; fcpu from build.f_cpu minus L suffix).

adafruit_feather_nrf52840_sense.json in the existing DB is the structural template.

Test plan

  • Unit: assert BoardConfig::from_board_id("xiaoble_adafruit", &HashMap::new()) returns Ok with mcu == "nrf52840", same for xiaoblesense_adafruit.
  • Integration: re-run FastLED's nrf52_xiaoblesense and adafruit_xiaoblesense workflows after a fbuild bump.

Filed automatically while triaging broken FastLED CI builds; intent is to open a PR immediately.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    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