Updating the BenchPod firmware

Updating takes a few minutes and one USB-C cable to your computer. You do not need an embeddedci.com account for it: the benchpod CLI downloads the newest firmware and installs it over USB. If you are signed in to embeddedci.com, you can also update from the web app instead (see below).

The short version

With the CLI installed. Over USB, the pod is plugged into your computer with a USB-C cable:

benchpod --version                # 0.6.0 or later; update the CLI first if it is older
benchpod flash-self --enter-dfu   # pod on USB-C: fetches the newest firmware and installs it
benchpod discover                 # the pod shows the new version

Works whatever firmware the pod runs, and also brings back a pod whose firmware does not start. Needs dfu-util (step 2).

The steps below say the same in full, including how to install or update the CLI.

1. Install or update the benchpod CLI

Check whether you have it, and which version:

benchpod --version

Command not found? Install it:

brew install --cask embeddedci-com/tap/benchpod
benchpod --version

The binary isn't Apple-notarized, so the cask strips the quarantine flag on install. It also installs dfu-util, which flash-self needs.

# or the plain binary (the releases/latest/download URL is always the newest release)
curl -fsSL -o benchpod.tar.gz \
  https://github.com/embeddedci-com/benchpod-cli/releases/latest/download/benchpod_Darwin_arm64.tar.gz
tar -xzf benchpod.tar.gz benchpod
sudo mv benchpod /usr/local/bin/

On an Intel Mac use benchpod_Darwin_x86_64.tar.gz. If you download the archive with a browser instead, clear the quarantine flag once with xattr -d com.apple.quarantine ./benchpod.

Already installed? Update it to the newest release before you update the pod. Firmware 3.9.0 and later need CLI 0.6.0 or later: they change how the pod connects over USB, and an older CLI may not reach the pod afterward.

brew update
brew upgrade --cask benchpod
benchpod --version

Installed the plain binary instead of the cask? Run the same curl lines as for the install: the download is always the newest release and replaces the old binary.

2. Check dfu-util

The CLI writes the firmware with dfu-util, the standard tool for USB firmware updates. On macOS and Linux the Homebrew install brings it along. Elsewhere, install it once:

The Homebrew cask installs it. Without the cask: brew install dfu-util.

3. Plug the pod into your computer

Use a USB-C data cable (many USB-C cables only charge). The pod can stay wired to your board and on Ethernet; nothing else needs to change. Stop any test, capture or terminal that is using the pod, and close other programs that hold its USB console (a serial monitor, screen).

4. Update the firmware

benchpod flash-self --enter-dfu   # pod on USB-C: fetches the newest firmware and installs it

Works whatever firmware the pod runs, and also brings back a pod whose firmware does not start. Needs dfu-util (step 2).

Over the USB cable with DFU (the default), in about one to two minutes, it:

  1. Downloads the newest published firmware.
  2. Restarts the pod into its USB bootloader.
  3. Writes the firmware with dfu-util and starts it.
  4. Waits for the pod to come back and installs the FPGA and Wi-Fi chip images that go with this firmware, if the pod needs them.

With --network the pod receives the image itself, checks it and writes it to its flash, then restarts; the CLI then installs the FPGA and Wi-Fi chip images the same way. That takes about half a minute.

Do not unplug the pod until the command finishes. To install a specific release instead of the newest, add --firmware-version v3.9.0 (any tag from the firmware releases).

5. Check it worked

benchpod discover

The pod is listed with its new version (for example fw v3.9.0). A registered pod also shows the new version on its row in the web app once it has reconnected.

Using pytest, the Python SDK or the AI-agent plugin? Update the Python packages too:

pip install --upgrade embeddedci embeddedci-mcp

Updating from the web app instead

A pod that is registered on your account and online can be updated over its cloud link, without a cable:

  1. Sign in and open the BenchPod page.
  2. Click Update next to the pod's firmware version (or open the pod and go to its Settings tab, then Update firmware).
  3. Pick the release (the newest is preselected) and start the update. You can close the window while it runs.

Update the CLI and the Python packages as well (steps 1 and 5) if you use them with this pod.

If something goes wrong