Python SDK for siliconrig — remote access to real embedded boards.
Use it in scripts, automation, or as a pytest plugin for hardware-in-the-loop testing.
pip install siliconrigfromsiliconrigimportClientclient=Client()
withclient.session(board="esp32-s3") assession:
session.flash("firmware.bin")
session.serial.expect("Ready", timeout=10)
session.serial.send("status\n")
print(session.serial.read_until("OK", timeout=5))Or use the Board shorthand:
fromsiliconrigimportBoardwithBoard("esp32-s3", firmware="build/app.bin") asboard:
board.expect("System ready", timeout=5)
board.send("gpio set 4 1\n")
board.expect("GPIO4=HIGH", timeout=2)flash() accepts a raw .bin (all boards), a .uf2 (rp2350), or — for STM32
boards — an .elf or Intel .hex, which siliconrig converts to a raw image
server-side before flashing. Hand it your build's ELF directly:
withBoard("stm32-h753", firmware="build/firmware.elf") asboard:
board.expect("All tests passed", timeout=30)The package includes a pytest plugin that registers automatically. Use it with custom fixtures:
importpytestfromsiliconrigimportBoard@pytest.fixturedefboard():
withBoard("esp32-s3", firmware="build/app.bin") asb:
yieldbdeftest_boot_ok(board):
assertboard.expect("System ready", timeout=5)Or use the built-in siliconrig_board fixture via CLI options:
pytest --siliconrig-board esp32-s3 --siliconrig-firmware build/app.bin tests/hil/Set your API key via environment variable:
export SRIG_API_KEY=key_...Or pass it directly:
client=Client(api_key="key_...")