Pi Lab

Pi Lab #

The Raspberry Pi bank is a shared workbench for projects that need a Pi rather than a VM: edge compute, SDR, sensors, GPIO, clustering experiments. The hardware and why it was chosen are under Raspberry Pi in Implementation & Tooling; this page is how to use it.

The idea is the SD card is the product. You develop on a bank Pi; when the project works, the card moves to dedicated hardware and the bank Pi returns to the pool.


Image Factory Integration #

All Pi projects start in the deevnet-image-factory. The goal is to bake as much configuration as possible into the image itself:

LayerWhat Gets Baked In
Base imageRaspberry Pi OS or Fedora ARM
cloud-initNetwork config, users, SSH keys
PackagesAll software dependencies
ConfigurationService configs, systemd units
Test scriptsHardware/software validation scripts
Post-startup scriptsFor hardware-dependent setup (SDR, GPIO, etc.)

Test Scripts #

Each image includes validation scripts that proof the hardware and software are working as expected:

/opt/deevnet/tests/
β”œβ”€β”€ test-network.sh      # Validate connectivity
β”œβ”€β”€ test-services.sh     # Verify services running
β”œβ”€β”€ test-hardware.sh     # Hardware-specific checks (SDR, GPIO)
└── run-all-tests.sh     # Execute full validation suite

Run after first boot to confirm the image deployed correctly.

Post-Startup Scripts #

Some configurations require hardware to complete (SDR tuning, GPIO initialization, device calibration). These run on first boot after hardware detection:

/opt/deevnet/post-startup/
β”œβ”€β”€ init-sdr.sh          # SDR device initialization
β”œβ”€β”€ init-gpio.sh         # GPIO pin configuration
└── init-sensors.sh      # Sensor calibration

Experiments #

The 4-Pi bank supports various experiment configurations:

ConfigurationUse Case
4-node K3s clusterLightweight Kubernetes, distributed workloads
3+1 cluster3-node cluster + 1 control/monitoring node
2+2 splitTwo separate 2-node experiments
4 independentFour different single-node projects

Example Projects #

ProjectDescription
K3s clusterLightweight Kubernetes for container orchestration
SDR gatewaySoftware-defined radio signal processing
Sensor collectionIoT sensor aggregation and forwarding
Home automationHome Assistant or similar platforms
Display/kioskInformation displays, dashboards

SD cards can be swapped to reconfigure the bank for different experiments without rebuilding images.


Workflow #

Development Cycle #

  1. Create image β€” Build project-specific image in deevnet-image-factory
  2. Bake configuration β€” Include packages, configs, test scripts
  3. Flash SD card β€” Write image to card
  4. Boot and validate β€” Run test scripts to proof the build
  5. Iterate β€” Fix issues in image factory, rebuild, re-test
  6. Finalize β€” Working SD card is the deliverable

Permanent Deployment #

When a project graduates from the development bank:

  1. Document configuration β€” Capture working setup in image factory
  2. Purchase Pi4 β€” Buy dedicated hardware for permanent role
  3. Transfer SD card β€” Move finalized card to new hardware
  4. Reclaim bank slot β€” Bank Pi returns to available pool

This model keeps the development bank available for new experiments while completed projects run on dedicated hardware.


Graduating a project #

When a project runs unattended on its own hardware, it leaves the bank and gets an entry under Completed Projects, which also lists what “complete” requires.

Pis and tenants. A bank Pi today sits on the IoT network like any other device, so a Pi project that talks to a tenant’s services does it the way a microcontroller does β€” a Wi-Fi key or wired port on the IoT network, and a broker account. Declaring a Pi as a tenant resource of its own is not built.

Page last modified: September 26, 2026