Skip to content

The hardware we have actually used is the Raspberry Pi (including the Pi 5), so this note starts there and then places it among the alternatives. Software ideas that run on it: Pi-hole DNS on a Raspberry Pi, Tailscale, VPNs and Always-On Pi Services, Remote Workstation Anywhere.

Which board for which job

Class Examples Runs Good for
Single-board computer (SBC) Raspberry Pi 5, Pi 4, Pi Zero 2 W Full Linux Servers, gateways, DNS, media, prototypes
Compute module Raspberry Pi Compute Module 5 Full Linux on a module you mount on your own carrier board Turning a prototype into an embedded product
Microcontroller board Raspberry Pi Pico (RP2040) and Pico 2 (RP2350), Arduino, ESP32 / ESP32-S3 One program, no OS, real-time Sensors, actuators, battery devices, deterministic timing
Industrial / mini PC Fanless x86 boxes, Intel NUC class Full Linux or Windows Heavier workloads, reliability, expansion
AI edge boards NVIDIA Jetson, Pi AI accessories Linux + accelerator On-device vision and inference

Rule of thumb: microcontroller when you need tiny power use and exact timing, SBC when you need an operating system, networking and containers.


Raspberry Pi 5 at a Glance

Feature Detail
CPU Broadcom BCM2712, quad-core Arm Cortex-A76 at about 2.4 GHz (roughly 2 to 3 times the Pi 4)
RAM LPDDR4X; several sizes (commonly 4, 8 and 16 GB); check the current lineup
I/O chip RP1, a separate chip handling USB, Ethernet, GPIO and camera / display ports
Storage microSD, or NVMe SSD through the PCIe connector with a HAT
PCIe One PCIe 2.0 lane (Gen 3 can be enabled), exposed on a small ribbon connector
Ports 2 x USB 3, 2 x USB 2, Gigabit Ethernet, 2 x micro-HDMI (up to 4K60), 2 x camera / display connectors
Extras Real-time clock with battery connector, power button, fan header, 40-pin GPIO
Power USB-C, 5 V / 5 A (27 W) supply recommended; weaker supplies limit USB power
Cooling Gets hot under load; use the official Active Cooler or a good case

Compared with the Pi 4 (Cortex-A72, no PCIe, no RTC) the Pi 5 can boot and run from NVMe and feels far faster for containers and databases. Older boards remain fine for DNS and VPN gateways.


Setting One Up

  1. Flash Raspberry Pi OS (or Ubuntu Server) with Raspberry Pi Imager; in its settings preset the hostname, user, Wi-Fi and SSH so the Pi boots headless
  2. Boot, find it on the network, and connect:
$ ssh sharif@raspberrypi.local
$ sudo apt update && sudo apt full-upgrade -y
$ sudo raspi-config            # boot order, locale, interfaces (I2C, SPI, SSH)
  1. Give it a fixed address: a DHCP reservation on the router is the cleanest approach
  2. Harden it: key-only SSH, firewall, automatic updates (Server Hardening with SSH, UFW and Fail2ban)
  3. Move off the SD card if it will run 24/7 (see below)

Storage choices

Option Notes
microSD Cheap and simple; wears out with constant writes; use a good brand (high endurance)
USB SSD Much faster and more durable; works on every model with USB 3
NVMe over PCIe (Pi 5) Fastest; needs a HAT and a suitable supply
Read-only root / overlay filesystem Protects the SD card on appliances that must survive power cuts

An always-on Pi should also survive power cuts: a decent supply, a small UPS HAT or battery for critical roles, and a read-only or well-backed-up system (Remote Workstation Anywhere has an operating section on this).


GPIO and Add-On Hardware

The 40-pin header exposes GPIO, I2C, SPI, UART, 1-Wire and PWM.

  • Logic is 3.3 V, not 5 V tolerant: connecting 5 V logic directly can damage the board. Use level shifters
  • Each pin supplies only a few milliamps; drive motors, relays and strips through a transistor, driver or relay board with their own supply
  • On the Pi 5 the old RPi.GPIO library does not work; use gpiozero (with lgpio) or the rpi-lgpio compatibility shim
from gpiozero import LED, Button
from signal import pause

led = LED(17)
button = Button(27)
button.when_pressed = led.toggle
pause()

HATs are boards that sit on the header: PoE power, UPS, NVMe, CAN bus, LoRa, AI accelerators, displays. Check each HAT for Pi 5 support.

Reading a CAN bus (vehicle or industrial)

A Pi can speak CAN with an SPI CAN HAT (for example MCP2515-based) or a USB-CAN adapter, then use the Linux SocketCAN tools. Details of buses and adapters: Sensors, Buses and Edge Hardware Reference.

$ sudo apt install can-utils
$ sudo ip link set can0 up type can bitrate 250000
$ candump can0                 # watch frames

Common Pi Roles

Role Why a Pi suits it
Network DNS filter Light, always on: Pi-hole DNS on a Raspberry Pi
VPN / Tailscale gateway Reach a home network from anywhere: Tailscale, VPNs and Always-On Pi Services
Home lab server Docker containers, small web apps (1. Docker)
Edge device Read sensors and forward them (MQTT, HTTP)
Network tool Packet capture, monitoring (Network Device Monitoring with NetPulse)
Learning platform Cheap, disposable Linux for experiments (01. Foundation)

An idea on the list: a passive network tap built from a Pi with two Ethernet interfaces bridged for inspection (only on networks you own or may test).


Buying Checklist

  • [ ] Board and RAM size for the role (DNS needs very little; containers and databases want 4 GB or more)
  • [ ] Power supply rated for the board (and its USB devices)
  • [ ] Case with cooling for 24/7 use
  • [ ] Storage: high-endurance microSD or an SSD
  • [ ] Ethernet over Wi-Fi for any server role
  • [ ] Spare SD card or an image backup of the working system