Skip to content

Bench bring-up

Bring-up validates that your host and a specific board are ready before the agent drives it. Scope every command to the board you actually have attached with --board-id (or -BoardId on PowerShell).

The unattended host bootstrap prepares drivers and tooling for a board.

Terminal window
# macOS
bash ./setup_host.sh --board-id nrf52833dk
# Windows
powershell -ExecutionPolicy Bypass -File .\setup_host.ps1 -BoardId nrf52833dk

To also rebuild the repo-owned Zephyr firmware locally, opt into the managed Zephyr build environment during setup (--ensure-zephyr-build-env / -EnsureZephyrBuildEnv).

Terminal window
uv run python host_bootstrap.py --board-id nrf52833dk

Board-scoped bootstrap requires a unique matching probe and attempts board-specific serial resolution, printing the matched probe UID and serial port on success.

Terminal window
uv run python stage0_check.py --board-id nrf52833dk

If Stage 0 cannot auto-resolve the UART endpoint it prompts in an interactive terminal. In non-interactive runs, rerun with an explicit port:

Terminal window
uv run python stage0_check.py --board-id nrf52833dk --port nrf52833dk=/dev/ttyACM0

When the vendor helper CLI is available, it improves serial auto-detect (it is not required for every board):

  • Nordic + J-Link boards — nrfjprog --com
  • ST-LINK boards — STM32_Programmer_CLI -l

If these are missing or a board is ambiguous, Stage 0 falls back to prompting or an explicit --port override.

Tracked board YAML uses a typed recover_mode:

  • nrf_pyocd_unlock — Nordic APPROTECT recovery via pyOCD’s unlock / mass-erase.
  • manual_only — needs recover validation but has no automated Stage 0 path yet.