Raspberry Pi Lab

Raspberry Pi Lab #

Purpose #

The Raspberry Pi bank provides a development and prototyping platform for edge compute, IoT, and clustering experiments. The Pis function as a reusable workbench—when a project is complete, the SD card becomes the deliverable and a new Pi4 is purchased for permanent deployment.

Goals:

  • SD card as product — Develop on the bank, deploy the card to dedicated hardware
  • Swappable experiments — Swap SD cards in/out for different projects or clustering configurations
  • Prototyping platform — Test configurations before committing to permanent hardware

Hardware #

Site: dvntm (mobile)

QuantityModelRAMNotes
4Raspberry Pi 4 Model B8GBDevelopment bank

Raspberry Pi 4

Selection Rationale #

AttributeValueRationale
ModelPi 4 Model BMature platform, broad software support
RAM8GBMaximum available, supports heavier workloads
Quantity4 unitsEnables clustering experiments (K3s, etc.)
Form factorStandard PiCompatible with cases, HATs, accessories

Network Position #

graph LR
    A[Core Router] <--> B[Access Switch
IoT VLAN] <--> C[Raspberry Pi Bank
4x Pi4 8GB]

Pis are placed on the IoT network segment for isolation from management workloads.


Operating System #

AttributeValue
OSRaspberry Pi OS (64-bit) or Fedora ARM
ProvisioningSD card imaging via deevnet-image-factory

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.

Page last modified: March 9, 2026