Power, console, and a way to flash the DUT will get you started. The next layer up is the signal layer: SPI, I2C, UART, GPIO, and the peripherals living between your test infrastructure and the device.
This is where a Raspberry Pi on its own starts to struggle. Linux can drive these protocols, and hardware SPI can move data quickly, but it cannot give you cycle-accurate timing. Once you need precise gaps between transactions, fast turnarounds, or several buses running in parallel, scheduler jitter shows up as flaky tests.
A Small MCU Between the Pi and the DUT
The fix is to put an MCU between the management node and the DUT. The Pi orchestrates the test; the MCU executes deterministic bus behavior on its behalf.
Pick whatever MCU your team is comfortable with: STM32, ESP32, RP2040 (Pico), RP2350 (Pico 2), or anything else you already have on the bench.
The RP2040 and RP2350 have one extra trick: PIO. PIO state machines run in dedicated hardware blocks alongside the CPU, which makes it relatively easy to implement custom bus behavior with tight, predictable timing.
Simulating the Real World
The signal-router MCU is also where you hang the peripherals the DUT expects to see in the field.
If the firmware reads a temperature sensor on boot, put a real one in the rig, or a simulator that responds the way the real one would. If the firmware expects an EEPROM at a specific I2C address, make sure something on that address answers.
The closer the rig is to deployment, the more your CI catches real bugs instead of bench-only artifacts. That's the difference between mocking an abstraction and watching the whole system behave around real electrical interfaces and boot timing.
Reading DUT State
On top of actively driving buses, you often need to passively observe DUT state: GPIO configuration, status lines, interrupt pins, or peripheral-ready signals.
An I2C GPIO expander is a simple way to get started. If your signal router is a Pico or Pico 2, PIO opens up another option: sample a set of pins on clock edges with much tighter timing than anything you'd get from software polling.