dotbot device - flash one cabled board#
dotbot device programs one board on your desk, connected over a cable. It
talks to the board’s on-board programmer over the SWD/J-Link interface - no
external probe needed for normal flashing. On the DotBot v3 the programmer
(a J-Link-OB / DAPLink behind an SWD mux) is reached over USB-C; on an
nRF5340-DK over its micro-USB port. A separate J-Link is only required for
flash-programmer.
To put firmware on the whole fleet over the air, use swarm
instead. To build the .hex first, see fw.
Tip
device flash-mari-gateway flashes firmware onto a board. The host-side
UART↔MQTT bridge process is a different thing - that’s run gateway.
Note
dotbot device drives nrfjprog (Nordic’s nRF Command Line Tools), not
nrfutil - install it and put its bin/ on your PATH before flashing.
Commands#
Command |
What it does |
|---|---|
|
Whole-chip program one app (or a |
|
Turn an nRF5340-DK into the swarm gateway (both cores + network id) |
|
Turn a DotBot v3 into a swarm sandbox host (bootloader + netcore + id) |
|
Re-flash the board’s on-board debug chip (J-Link OB / DAPLink) - needs a J-Link |
|
Read a board’s provisioning state (chip id + network id) |
Flash an app#
flash resolves <app> to ./artifacts/<app>-<board>.hex, building it if the
file isn’t there; an explicit .hex/.bin path is flashed as-is.
export DOTBOT_FIRMWARE_REPO=$(pwd)/repos/DotBot-firmware
# Build, then flash the bare DotBot app onto a DotBot v3 (board defaults to dotbot-v3)
dotbot fw artifacts --app dotbot
dotbot device flash dotbot -s 77
-b/--board selects the chip family and core to program. The nrfjprog family
and coprocessor are derived from it: nRF52 boards → -f NRF52, no coprocessor;
nRF5340 → -f NRF53 with CP_APPLICATION, or CP_NETWORK for a *-net board.
-b only sets the family/core nrfjprog is told to program; the CLI doesn’t
read it back from the attached chip. Make sure the cabled board matches -b -
e.g. don’t flash an nRF53 image onto a connected nRF52 (or vice versa).
# Gateway onto an nRF52840-DK (device flash picks -f NRF52 from the board)
dotbot fw artifacts --app dotbot_gateway -t nrf52840dk
dotbot device flash dotbot_gateway -b nrf52840dk -s 10
nRF5340 = two cores#
The nRF5340’s radio lives on the net core, so an app-core app also needs a
net-core image. Build and flash each for its own target - the app image is
dotbot_gateway, the net image is nrf5340_net (not dotbot_gateway):
# App core
dotbot fw artifacts --app dotbot_gateway -t nrf5340dk-app
dotbot device flash dotbot_gateway -b nrf5340dk-app -s 10
# Net core (-b *-net routes to CP_NETWORK)
dotbot fw artifacts --app nrf5340_net -t nrf5340dk-net
dotbot device flash nrf5340_net -b nrf5340dk-net -s 10
flash flags (see dotbot device flash --help for the full list):
Flag |
Meaning |
|---|---|
|
Target board → chip family + core (default |
|
J-Link serial prefix, e.g. |
|
Resolve the sandbox-app flavor ( |
|
|
Flash a role#
flash-mari-gateway and flash-swarmit-sandbox flash a complete system firmware
(both cores) and write the network identity in one shot. They auto-fetch the
named release into ./artifacts/ if it isn’t cached.
# nRF5340-DK → swarm gateway
dotbot device flash-mari-gateway --swarm-id 0100 -f 0.8.0rc1 -s 10
# DotBot v3 → swarm sandbox host (the firmware that runs OTA apps)
dotbot device flash-swarmit-sandbox --swarm-id 0100 -f 0.8.0rc1 -s 77
Flag |
|
|
|---|---|---|
|
16-bit hex swarm id (or from config) |
16-bit hex swarm id (or from config) |
|
release to flash (required) |
release to flash (required) |
|
J-Link serial prefix |
J-Link serial prefix |
|
- |
optional LH2 calibration file to bake in |
A board flashed with flash-swarmit-sandbox is what swarm flash
targets to run sandboxed apps over the air.
Inspect a board#
dotbot device info -s 77
Reports the chip id and network identity. It never fails on a blank board - it says not provisioned and how to fix it.
flash-programmer#
Re-flashes the on-board debug chip’s own firmware (J-Link OB or DAPLink). This is obscure, one-time-per-board bring-up and requires an external J-Link.
dotbot device flash-programmer -p daplink -d ./programmer-firmware/
Flag |
Meaning |
|---|---|
|
|
|
directory with the programmer firmware files (required) |
|
pyOCD probe UID, when multiple probes are attached |
Note
Never run nrfjprog (or these commands) under sudo. One sudo run leaves
/tmp/boost_interprocess/ owned by root and every later call fails with
Operation not permitted. Recover with
sudo rm -rf /tmp/boost_interprocess.