RASPBERRY PI APPLICATION REFERENCE · PI ZERO · PI 4 · PI 5 · SERVICES
HARDWARE REF v1.0

HARDWARE QUICK REFERENCE

MODELCPURAMUSBNETWORKGPIOBEST FOR
Pi Zero 2 WRP3A0 1GHz quad512MB1× micro USB OTGWiFi · BT40-pinHeadless tools, BadUSB implants, portable
Pi 4 BBCM2711 1.8GHz quad1-8GB2× USB 3, 2× USB 2Gigabit · WiFi · BT40-pinFull server, desktop replacement, MeshChat
Pi 5BCM2712 2.4GHz quad4-8GB2× USB 3, 2× USB 2Gigabit · WiFi · BT40-pinHigh-perf workloads, Gaussian splatting prep
Pi 400BCM2711 1.8GHz4GB3× USB 3, 1× USB 2Gigabit · WiFi · BT40-pin (rear)All-in-one keyboard desktop
Pi CM4BCM27111-8GBvia carrier boardOptional40-pin + extraEmbedded NAS/router builds

HYLAS DEPLOYMENTS

MESHCHAT HYLAS
Flask + Socket.IO Meshtastic chat · Pi 4 or Pi Zero 2 W
PI 4
PI ZERO 2W
# Install dependencies
pip install flask flask-socketio \
meshtastic pyserial

# Run server
python meshchat.py
# Access: http://pi-ip:5000

# As systemd service:
sudo nano /etc/systemd/system/meshchat.service
The standalone HTML version runs fully client-side. No Pi needed for the UI — only for serial LoRa comms.
WARDRIVING NODE HYLAS
Passive 802.11 beacon capture · Pi Zero 2 W + GPS
PI ZERO 2W
# TP-Link TL-WN722N in monitor mode
sudo ip link set wlan1 down
sudo iw wlan1 set monitor none
sudo ip link set wlan1 up

# Run capture
python wardriving.py \
--interface wlan1 \
--gps /dev/ttyUSB0

# Export for hashcat
python wardriving.py --export hashcat
Use wlan0 for management / SSH, wlan1 (TL-WN722N) for capture. Never put both on monitor mode simultaneously.
HYLAS VIEWER HYLAS
Flask + pywebview knowledge base · Pi 4
PI 4
# Install
pip install flask pywebview

# Run with display
python hylasviewer.py

# Headless HTTP mode (no pywebview)
python hylasviewer.py --web-only
# Access: http://pi-ip:5500
Full-text search, PDF.js viewer, collapsible sidebar. Run headless with --web-only to serve from Pi to other devices on the network.
AETHER FLOW HYLAS
WiFi packet visualisation on AMOLED · ESP32-S3 companion
PI ZERO 2W
# Pi provides WiFi capture feed to ESP32
# ESP32 renders animated particle display

# Enable monitor mode on Pi
sudo iw wlan1 set monitor control

# Stream to ESP32 serial
python aether_feed.py --port /dev/ttyUSB0

SYSTEM SERVICES

SYSTEMD SERVICE TEMPLATE

# /etc/systemd/system/myapp.service
[Unit]
Description=My Hylas App
After=network.target

[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi/myapp
ExecStart=/usr/bin/python3 app.py
Restart=on-failure
RestartSec=5
Environment=PYTHONUNBUFFERED=1

[Install]
WantedBy=multi-user.target
# Enable and start
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
sudo systemctl status myapp
journalctl -u myapp -f # live logs

COMMON SERVICE COMMANDS

COMMANDACTION
status myappCheck if running + last log lines
start myappStart the service
stop myappStop the service
restart myappRestart
enable myappStart on boot
disable myappDon't start on boot
daemon-reloadReload after editing .service files

LOG COMMANDS

# Follow live logs for a service
journalctl -u myapp -f
# Last 100 lines
journalctl -u myapp -n 100
# Since boot
journalctl -u myapp -b

NETWORKING TOOLS

MONITOR MODE SETUP
TP-Link TL-WN722N (Atheros AR9271) on Pi
# Check interface name
ip link show

# Kill interfering processes
sudo airmon-ng check kill

# Manual monitor mode
sudo ip link set wlan1 down
sudo iw dev wlan1 set type monitor
sudo ip link set wlan1 up

# Verify
iw dev wlan1 info

# Channel hop (optional)
sudo iw dev wlan1 set channel 6
NETWORK SCAN
# Find devices on subnet
nmap -sn 192.168.1.0/24

# ARP scan (faster)
arp-scan --localnet
sudo arp-scan -l

# Port scan target
nmap -sV -p 1-1000 192.168.1.x

# OS detection
sudo nmap -O 192.168.1.x

# Check current routes
ip route show
ip addr show
WIFI TOOLS
# Scan available networks
nmcli device wifi list
# or
sudo iwlist wlan0 scan | grep ESSID

# Connect to network
nmcli device wifi connect "SSID" \
password "password"

# Show connected network
nmcli connection show --active
iwconfig wlan0

# Signal strength
watch -n 1 iwconfig wlan0
HOSTAPD — PI AS ACCESS POINT
# Install
sudo apt install hostapd dnsmasq

# /etc/hostapd/hostapd.conf
interface=wlan0
ssid=HylasAP
wpa_passphrase=changeme
wpa=2
wpa_key_mgmt=WPA-PSK
hw_mode=g
channel=6

# Enable and start
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd
Useful for creating isolated capture/test networks. Pair with dnsmasq for DHCP. On Pi Zero 2 W only one wlan interface available — use USB dongle for AP + internet.

GPIO QUICK REFERENCE

GPIOZERO (Python — recommended)

# pip install gpiozero
from gpiozero import LED, Button, PWMOutputDevice
from signal import pause

led = LED(17)
led.on()
led.blink(on_time=0.5, off_time=0.5)

btn = Button(4)
btn.when_pressed = led.on
btn.when_released = led.off

pwm = PWMOutputDevice(18)
pwm.value = 0.5 # 50% duty cycle

pause() # keep script running

RPIGPIO (low-level)

# import RPi.GPIO as GPIO
import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
GPIO.setup(4, GPIO.IN,
pull_up_down=GPIO.PUD_UP)

GPIO.output(17, GPIO.HIGH)
time.sleep(1)
GPIO.output(17, GPIO.LOW)

# Always cleanup
GPIO.cleanup()

PIGPIO (precise timing / remote)

# sudo systemctl start pigpiod
import pigpio
pi = pigpio.pi()
pi.set_mode(17, pigpio.OUTPUT)
pi.write(17, 1)
pi.set_servo_pulsewidth(18, 1500) # servo

CAMERA / USB

PICAMERA2 (Pi Camera Module)

# Enable camera in raspi-config first
from picamera2 import Picamera2

cam = Picamera2()
cam.start()
cam.capture_file("image.jpg")
cam.stop()

# CLI still capture
rpicam-still -o image.jpg

# CLI video
rpicam-vid -t 10000 -o video.h264

USB DEVICE MANAGEMENT

# List USB devices
lsusb
dmesg | tail -20

# Find USB serial port
ls /dev/ttyUSB* /dev/ttyACM*
udevadm info /dev/ttyUSB0

# Persistent device name by serial
# /etc/udev/rules.d/99-usb.rules
SUBSYSTEM=="tty", \
ATTRS{idVendor}=="0403", \
ATTRS{idProduct}=="6001", \
SYMLINK+="gps"

SYSTEM MAINTENANCE

UPDATES
sudo apt update && sudo apt upgrade -y
sudo apt autoremove
sudo apt autoclean

# Full dist-upgrade (careful)
sudo apt full-upgrade

# Firmware update
sudo rpi-update # bleeding edge — use with care
DISK & MEMORY
# Disk usage
df -h
du -sh /home/pi/*

# Memory usage
free -h
vmstat -s

# Running processes
top
htop # install: sudo apt install htop

# Temperature
vcgencmd measure_temp
cat /sys/class/thermal/thermal_zone0/temp
RASPI-CONFIG QUICK TASKS
TASKPATH
Change passwordSystem Options > Password
Change hostnameSystem Options > Hostname
Expand filesystemAdvanced > Expand Filesystem
Enable I2CInterface Options > I2C
Enable SPIInterface Options > SPI
Enable serialInterface Options > Serial Port
GPU memoryPerformance > GPU Memory (64 headless)
sudo raspi-config

PYTHON ENVIRONMENT MANAGEMENT

VENV (recommended)

# Create venv for each project
python3 -m venv ~/venvs/myapp
source ~/venvs/myapp/bin/activate
pip install flask requests

# Deactivate
deactivate

# In systemd service
ExecStart=/home/pi/venvs/myapp/bin/python app.py

SYSTEM-WIDE (--break-system-packages)

# Pi OS Bookworm requires this flag
# for pip outside venv
pip install flask --break-system-packages

# Or use pipx for CLI tools
sudo apt install pipx
pipx install yt-dlp
pipx install httpie
Bookworm enforces PEP 668 — pip install without venv fails unless you pass --break-system-packages. Use venvs to avoid this.
HYLAS SECURITY // PIAPPS v1.0INTERNAL — HARDWARE REFERENCE