Clockwork uConsole · Volume 12

Cheatsheet & Quick Reference

Laminate-printable one-pagers, pinouts, key combos, command refs, decision flowcharts, gotcha matrix

Contents

SectionTopic
1Two-Minute Orientation
2Pinouts
· 2.140-pin GPIO header
· 2.2Mini PCIe slot
3Boot Recipes
· 3.1CM4 Lite — SD-only
· 3.2CM4 with eMMC — first flash via rpiboot
· 3.3USB-MSD boot from a USB-C SSD (CM4 Lite)
· 3.4Network boot (NFS root + TFTP kernel)
· 3.5Recovery from a brick
4OS Install One-Liners
5Keyboard Layers and Key Combos
6System Command Refs
· 6.1Package management (Debian-family)
· 6.2systemd
· 6.3Power info
7Networking Quick Refs
· 7.1Wi-Fi via NetworkManager (Pi OS Bookworm default)
· 7.2Wi-Fi via wpa_supplicant (Pi OS Bullseye / older)
· 7.3Monitor mode + injection
· 7.4Hotspot (uConsole as AP)
· 7.5Wireguard quick start
8RF / SDR Quick Refs
· 8.1RTL-SDR
· 8.2HackRF
· 8.3Kismet
9Ham Radio Quick Refs
· 9.1hamlib rigctld
· 9.2wsjtx
· 9.3pat (Winlink)
· 9.4fldigi
10Pen-test One-Liners
11Power Management
· 11.1CPU governor
· 11.2Display brightness
· 11.3Keyboard backlight
· 11.4Battery state
· 11.5Suspend/resume
12Mini PCIe Diagnosis
· 12.1Is it a PCIe card or USB?
· 12.2Common Mini PCIe device patterns
· 12.3Slot won’t enumerate
13Display & Audio Quirks
· 13.1Display orientation / scaling
· 13.2Audio output routing
· 13.3Common quirks
14Backup / Restore Recipes
· 14.1Image the SD to a file
· 14.2Shrink an image (PiShrink)
· 14.3rpiboot eMMC → file
· 14.4Selective backup with rsync
15Error → Fix Matrix
16Decision Flowcharts
· 16.1Which OS
· 16.2Which compute module
· 16.3Which OS for an RF rig
17systemd Service Templates
· 17.1Auto-start dump1090 with web UI
· 17.2Power-up wireless monitor mode
· 17.3RTL-SDR ADS-B → ADSBhub (or similar) feeder
18udev Rules
· 18.1RTL-SDR — non-root access
· 18.2HackRF
· 18.3SignaLink / DigiRig — stable name for ham audio
19SSH Hardening (a one-pager)
20Useful Aliases / Dotfiles
21Resource Shortcut Links
22Cross-Reference Index

1. Two-Minute Orientation

A pocket reference for the uConsole. Volumes 2–11 are the deep-dive references; this volume is the laminate-card set you keep on the bench.

Field guideWhere in this volume
The pinouts§2 (40-pin GPIO, Mini PCIe)
Boot recipes (SD, eMMC, USB-MSD)§3
OS install one-liners§4
Keyboard layer / key combos§5
System command refs§6
Networking quick refs§7
RF / SDR quick refs§8
Ham radio quick refs§9
Pen-test one-liners§10
Power management§11
Mini PCIe diagnosis§12
Display & audio quirks§13
Backup / restore recipes§14
Error → fix matrix§15
Decision flowcharts§16
systemd service templates§17
udev rules§18
SSH hardening§19
Useful aliases / dotfiles§20
Resource shortcut links§21
Cross-reference index§22

2. Pinouts

2.1 40-pin GPIO header

The header on the back of the uConsole is electrically identical to the standard Raspberry Pi 40-pin header. Numbering follows the canonical Pi convention (pin 1 nearest the silk-screen 1).

        3V3   ( 1) ( 2)   5V
       SDA1   ( 3) ( 4)   5V
       SCL1   ( 5) ( 6)   GND
   GPIO  4   ( 7) ( 8)   TXD0
        GND   ( 9) (10)   RXD0
   GPIO 17   (11) (12)   GPIO 18 (PCM_CLK)
   GPIO 27   (13) (14)   GND
   GPIO 22   (15) (16)   GPIO 23
        3V3  (17) (18)   GPIO 24
   MOSI 10   (19) (20)   GND
   MISO  9   (21) (22)   GPIO 25
   SCLK 11   (23) (24)   CE0_N  (GPIO 8)
        GND  (25) (26)   CE1_N  (GPIO 7)
   ID_SD     (27) (28)   ID_SC
   GPIO  5   (29) (30)   GND
   GPIO  6   (31) (32)   GPIO 12
   GPIO 13   (33) (34)   GND
   GPIO 19   (35) (36)   GPIO 16
   GPIO 26   (37) (38)   GPIO 20
        GND  (39) (40)   GPIO 21

ID_SD/ID_SC are reserved for HAT EEPROM; treat as DNC unless you know the HAT discipline.

2.2 Mini PCIe slot

The 52-pin Mini PCIe slot on the uConsole exposes a hybrid pinout — full PCIe ×1 lanes are wired through (CM4 strap-dependent; CM5 is full PCIe ×1), plus a USB 2.0 pair, SIM-card pads, and a “SIM detect” sense. See Volume 7 §7.3 for the full electrical pinout. A few quick anchors:

PinSignalNotes
1, 17WAKE# / ReservedLTE modem wake interrupt
11/13REFCLK ±PCIe 100 MHz differential clock
23/25PERn / PERpPCIe receive lane
31/33PETn / PETpPCIe transmit lane
36/38USB D− / D+USB 2.0 alternate function — RTL-SDR, LTE-via-USB, etc.
8/10UIM_PWR / UIM_RSTSIM-card power / reset
9, 14, 18, 26, 39GNDMultiple grounds
2, 24, 41, 52+3.3V VccCard power
4, 19, 21Reserved / Vcc-auxSome cards expect these grounded — check the card’s datasheet

Rule of thumb: if lspci doesn’t show your card, but dmesg shows usb: new device, the card is on the USB pair; everything routes through /dev/bus/usb/. If lspci -vv shows the card, it’s on the PCIe lane. Volume 7 §7.4 covers debugging.

3. Boot Recipes

3.1 CM4 Lite — SD-only

# On a build PC, write the OS image:
xzcat 2026-04-11-raspios-bookworm-arm64.img.xz | sudo dd of=/dev/sdX bs=4M status=progress conv=fsync
# Insert SD into the uConsole, hold no key, power on. Done.

3.2 CM4 with eMMC — first flash via rpiboot

# Build PC:
git clone --depth=1 https://github.com/raspberrypi/usbboot
cd usbboot && make
# Power off uConsole. Set the on-mainboard "USB MSD" jumper to BOOT (Vol 4 §4.4).
# Connect uConsole USB-C ↔ PC USB.
sudo ./rpiboot
# uConsole's eMMC now appears as /dev/sdX on the PC. Image with the same dd command above.
# Power off, restore jumper, power on.

3.3 USB-MSD boot from a USB-C SSD (CM4 Lite)

# Update bootloader to boot-order: USB > SD
sudo rpi-eeprom-config --edit
# In the editor, set:
#   BOOT_ORDER=0xf41
# (4 = USB MSD, 1 = SD card, f = restart)

3.4 Network boot (NFS root + TFTP kernel)

# Bootloader:
BOOT_ORDER=0xf21       # 2 = network, 1 = SD fallback
# DHCP server hands out:
#   filename "u-boot.bin" or pixiecore-style boot image
# NFS root: /srv/nfs/uconsole-root, exported with no_root_squash, async, no_subtree_check

3.5 Recovery from a brick

SymptomFirst try
Black screen, no green LEDPull power. Re-seat compute module. Try a known-good SD.
Green LED blinks 4× then 4× then loopsBootloader can’t find start4.elf. Reflash SD’s boot partition.
Boots to rainbow square then haltsKernel/firmware mismatch. Run sudo apt full-upgrade from a recovery rootfs.
eMMC un-flashable via rpibootSet the rpiboot jumper, double-check USB cable supports data, try a different cable.

4. OS Install One-Liners

OSOne-line(ish) install path
Pi OS Bookwormxzcat raspios-bookworm-arm64.img.xz | sudo dd of=/dev/sdX bs=4M
Kali Linux ARMxzcat kali-linux-2026.1-arm64-uconsole.img.xz | sudo dd of=/dev/sdX bs=4M (if Clockwork-flavored image available)
Pi OS + Kali toolsPi OS install, then sudo apt install kali-linux-arm kali-tools-wireless kali-tools-information-gathering
ParrotOS ARMDownload Parrot-arm64-rpi.img.xz, dd to SD
BlackArch ARMBuild via blackarch-installer on Arch Linux ARM rootfs
Ubuntu 24.04 ARMrpi-imager → “Ubuntu Server 24.04 LTS ARM64”, then sudo apt install ubuntu-desktop-minimal if you want a GUI
Arch Linux ARMPer archlinuxarm.org RaspberryPi-aarch64 instructions, with the Clockwork uConsole-specific firmware-uconsole package layered
NixOSnixos-install from the nixos-aarch64 SD image, then add services.uconsole.enable = true from the community module

After install, the Clockwork patch layer must be applied (Volume 6 §6.2). Most images ship with it pre-applied; on stock images, run:

git clone https://github.com/clockworkpi/uConsole.git
cd uConsole/Code/uConsole-Patches/CM4
sudo ./install.sh        # adds the kernel-patch overlay + dtbo
sudo reboot

5. Keyboard Layers and Key Combos

The 74-key keyboard has a Fn (yellow) and a Shift (white) modifier on the bottom row, plus a directional pad and four “gamepad” buttons (A, B, X, Y) under the right thumb.

ComboEffect (default Pi OS Bookworm + Clockwork patch)
Fn + number row 1–0F1 – F10
Fn + =F11
Fn + -F12
Fn + QEsc (an alternate Esc, in addition to top-left Esc)
Fn + WTab (alt)
Fn + / Brightness up / down
Fn + / Volume down / up
Fn + SpaceToggle Wi-Fi (rfkill block wifi / unblock wifi)
Fn + EnterToggle on-screen keyboard (when running matchbox-keyboard)
Fn + TabSwitch virtual desktop (Pi OS Wayland)
Fn + EscLock screen
Ctrl + Alt + F1F6Switch console TTY (works at the console)
Ctrl + Alt + F7Return to GUI (X11) / Wayland session
D-pad arrowsMap to standard arrow keys (Clockwork driver)
Game buttons A/B/X/YMap to keysyms Return, Escape, space, Tab by default

The full keymap source is in /etc/console-setup/uconsole.kmap after the Clockwork patch installs. Customizations: edit, then sudo dpkg-reconfigure console-setup.

6. System Command Refs

6.1 Package management (Debian-family)

sudo apt update && sudo apt full-upgrade -y    # update everything
apt list --installed | grep -i kali             # what kali-* metapackages are present
sudo apt install --no-install-recommends pkg    # avoid dragging in suggested deps
sudo apt-mark hold linux-image-rpi-v8           # pin a kernel
sudo apt purge --autoremove pkg                 # remove + clean dependencies

6.2 systemd

sudo systemctl status   service                # is it running, last 10 log lines
sudo systemctl restart  service                # bounce
sudo systemctl enable   --now service          # enable + start now
sudo systemctl mask     service                # prevent it from being started by anything
sudo journalctl -u service --since "1 hour ago" -f
sudo journalctl --vacuum-size=200M             # cap journal size on a small SD
sudo systemd-analyze blame                      # what's slow at boot
sudo systemd-analyze critical-chain

6.3 Power info

vcgencmd measure_temp                           # SoC temp
vcgencmd measure_volts core                     # core voltage
vcgencmd measure_volts sdram_c                  # DRAM voltage
vcgencmd get_throttled                          # 0x0 = no throttle; bits per Pi docs
vcgencmd get_config arm_freq                    # current ARM freq config
cat /sys/class/thermal/thermal_zone0/temp       # temp in millidegree C

7. Networking Quick Refs

7.1 Wi-Fi via NetworkManager (Pi OS Bookworm default)

nmcli device wifi list
sudo nmcli device wifi connect "<SSID>" password "<password>"
nmcli connection show
sudo nmcli connection up "<connection-name>"
sudo nmcli connection delete "<connection-name>"

7.2 Wi-Fi via wpa_supplicant (Pi OS Bullseye / older)

sudo wpa_passphrase "<SSID>" "<password>" | sudo tee -a /etc/wpa_supplicant/wpa_supplicant.conf
sudo systemctl restart dhcpcd

7.3 Monitor mode + injection

The CM4’s CYW43455 supports 2.4 GHz monitor mode via nexmon patches (already in Pi OS Bookworm + Clockwork patches as of 2026); 5 GHz monitor mode requires a USB adapter.

sudo airmon-ng start wlan0
sudo airodump-ng wlan0mon
# 5 GHz with Alfa AWUS036ACH:
sudo airmon-ng start wlan1
sudo iwconfig wlan1mon channel 36
sudo airodump-ng --band a wlan1mon

7.4 Hotspot (uConsole as AP)

sudo nmcli device wifi hotspot ssid uConsole-AP password "Cyberdeck1!"
# or with hostapd / dnsmasq for a more controlled setup — Vol 7 §7.5

7.5 Wireguard quick start

sudo apt install wireguard
wg genkey | tee privatekey | wg pubkey > publickey
sudo cp wg0.conf /etc/wireguard/
sudo systemctl enable --now wg-quick@wg0

8. RF / SDR Quick Refs

8.1 RTL-SDR

sudo apt install rtl-sdr gqrx-sdr
rtl_test -t                          # smoke test
rtl_fm -f 162.55M -M wbfm -s 200000 -r 48000 - | aplay -r 48000 -t raw -f S16_LE -c 1
gqrx                                  # full GUI
rtl_433                               # ISM-band protocol decoder
dump1090 --interactive --net          # ADS-B + web UI on :8080

8.2 HackRF

sudo apt install hackrf gnuradio
hackrf_info                           # smoke test
hackrf_transfer -r capture.iq -f 433920000 -s 8000000  # capture 8 Msps to file
hackrf_sweep -f 88:108                # spectrum sweep across the FM band
gnuradio-companion                    # GUI flowgraph editor

8.3 Kismet

sudo apt install kismet
sudo gpasswd -a "$USER" kismet
sudo reboot
kismet -c wlan0mon                    # web UI on :2501

9. Ham Radio Quick Refs

9.1 hamlib rigctld

rigctld -m 3061 -r /dev/ttyUSB0 -s 38400      # Yaesu FT-897, USB CAT
# Then any client (wsjtx, fldigi, gpredict) targets net rigctl on :4532.

9.2 wsjtx

wsjtx                                  # GUI; configure once, then it auto-launches the rigctl daemon

Audio routing tips: in Pi OS, pavucontrol is the easiest way to lock wsjtx’s input/output to the SignaLink USB or DigiRig device. Volume 10 §10.5 has the schematic.

sudo apt install pat
pat configure                          # run the interactive setup
pat connect telnet://CMSTelnet         # smoke test
pat connect ax25:///N0CALL@VHF-2m      # via direwolf packet

9.4 fldigi

sudo apt install fldigi flrig
fldigi                                 # GUI
flrig &                                # CAT bridge if hamlib doesn't cover your radio

10. Pen-test One-Liners

# Recon
nmap -sV -A -T4 -oA recon-$(date +%F) 10.0.0.0/24
nmap -sU -p 53,67,68,69,123,161 10.0.0.0/24
masscan -p1-65535 10.0.0.0/16 --rate=1000 -oG masscan.gnmap

# Wireless
sudo airodump-ng wlan0mon -w handshake --bssid AA:BB:CC:DD:EE:FF
aircrack-ng -w /usr/share/wordlists/rockyou.txt handshake-01.cap

# Web
gobuster dir -u http://target/ -w /usr/share/seclists/Discovery/Web-Content/common.txt
sqlmap -u 'http://target/page?id=1' --batch --dbs

# Hash crack
hashcat -m 22000 hash.hc22000 wordlist.txt -O    # WPA-PSK on the uConsole's GPU is slow; use it as a PoC, do real cracking on a beefy box
john --wordlist=rockyou.txt hashes.txt

11. Power Management

11.1 CPU governor

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
echo powersave | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
echo ondemand  | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# Persistent on Pi OS:
sudo apt install cpufrequtils
echo 'GOVERNOR="ondemand"' | sudo tee /etc/default/cpufrequtils
sudo systemctl restart cpufrequtils

11.2 Display brightness

# After the Clockwork patches:
echo 50 | sudo tee /sys/class/backlight/uconsole_backlight/brightness    # 0-255
# Userspace shortcut: Fn+↑/↓ (see §5)

11.3 Keyboard backlight

echo 1 | sudo tee /sys/class/leds/keyboard_backlight/brightness  # off
echo 30 | sudo tee /sys/class/leds/keyboard_backlight/brightness # readable in dark

11.4 Battery state

# Pi OS Bookworm + uConsole patches expose a fuel gauge:
cat /sys/class/power_supply/uconsole_battery/capacity   # %
cat /sys/class/power_supply/uconsole_battery/status     # Charging / Discharging / Full
cat /sys/class/power_supply/uconsole_battery/voltage_now

11.5 Suspend/resume

sudo systemctl suspend     # works on CM4; light-sleep via Cypress radio
sudo systemctl hibernate   # untested on uConsole; needs swap >= RAM

12. Mini PCIe Diagnosis

12.1 Is it a PCIe card or USB?

lspci -vv                              # PCIe — empty if the card is USB-only
lsusb                                  # USB — Quectel modems show here
dmesg | grep -E "(pcie|usb|enum)" -i

12.2 Common Mini PCIe device patterns

Quectel EM06    → USB. Look for `usb 1-1: New USB device` and `option` driver.
Quectel EM12-G  → USB. Same pattern.
Quectel RM502Q  → PCIe. Shows in lspci with vendor 1eac.
LTE m.2 cards   → require a M.2 ↔ Mini-PCIe adapter, depend on host PCIe support.
RTL-SDR Mini    → USB. Look for `e0c0` or `0bda:2838`.
M.2 NVMe via mPCIe-NVMe adapter → PCIe; needs `nvme` driver, only with CM5.

12.3 Slot won’t enumerate

# On CM4 you must enable PCIe explicitly in /boot/firmware/config.txt:
dtparam=pciex1
# Then reboot. lspci should show the slot.
sudo modprobe -r pcie_brcmstb && sudo modprobe pcie_brcmstb

13. Display & Audio Quirks

13.1 Display orientation / scaling

The 1280×720 panel is driven via the CM4’s DSI lane. Resolution should be auto-detected by the patched kernel. To force:

# /boot/firmware/cmdline.txt — append:
video=DSI-1:1280x720@60

13.2 Audio output routing

# Default is the on-board codec. Check:
aplay -L
# uConsole audio devices typically show as:
#   default
#   sysdefault:CARD=uConsole
#   plughw:CARD=uConsole,DEV=0

# Override default:
echo 'defaults.pcm.card 1' | tee -a ~/.asoundrc
echo 'defaults.ctl.card 1' | tee -a ~/.asoundrc
# Or via PulseAudio: pavucontrol → Configuration tab.

13.3 Common quirks

SymptomFix
Screen tearing in glxgearsSet dtoverlay=vc4-kms-v3d in /boot/firmware/config.txt
No sound from speakers, fine on HDMIamixer -c 1 set 'Speaker' 80% — alsa default mute
Backlight at full brightness, no controlClockwork patch not installed; cd uConsole/Code/uConsole-Patches/CM4 && sudo ./install.sh
Keyboard layout wrong (e.g., Fn produces literal char)sudo dpkg-reconfigure console-setup and pick “uConsole”
Wi-Fi greyed out in NetworkManagerrfkill listrfkill unblock wifi

14. Backup / Restore Recipes

14.1 Image the SD to a file

sudo dd if=/dev/sdX of=uconsole-$(date +%F).img bs=4M status=progress
# Compress:
xz -9 -e -T 0 uconsole-2026-05-06.img

14.2 Shrink an image (PiShrink)

wget https://raw.githubusercontent.com/Drewsif/PiShrink/master/pishrink.sh
sudo bash pishrink.sh uconsole-2026-05-06.img
# Now resizes to its actual content; re-grows on first boot.

14.3 rpiboot eMMC → file

sudo ./rpiboot                        # mount uConsole eMMC as /dev/sdY
sudo dd if=/dev/sdY of=uconsole-emmc-$(date +%F).img bs=4M status=progress

14.4 Selective backup with rsync

rsync -aAXHv --delete --info=progress2 \
    --exclude='/proc/*' --exclude='/sys/*' --exclude='/tmp/*' \
    --exclude='/run/*' --exclude='/var/cache/apt/archives/*' \
    /  /backup/uconsole/

15. Error → Fix Matrix

Error / SymptomLikely causeFix
No DTB found at bootSD’s boot partition is corrupt or missing filesReflash boot partition; check FAT32
Kernel panic - not syncing: VFS: unable to mount rootWrong root= in cmdline.txtBoot from a known-good SD, mount target, fix cmdline.txt
iwlwifi-XYZ.ucode failed with error -2Wrong firmware for an Intel WiFi cardNot applicable on CM4; only matters with USB Intel adapters
vc4-drm: failed to find drm deviceDSI not initialized (Clockwork patch missing/old)Update patches: cd uConsole && git pull && cd Code/uConsole-Patches/CM4 && sudo ./install.sh
cannot open /dev/ttyUSB0: Permission deniedUser not in dialout (or tty) groupsudo gpasswd -a $USER dialout && newgrp dialout
RuntimeError: this rtl-sdr device is in useAnother app holds the device, or dvb_usb_rtl28xxu blacklist missingecho 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/rtl-blacklist.conf && sudo reboot
Bluetooth: hci0: Failed to load Cypress firmwareWi-Fi/BT firmware not installedsudo apt install firmware-brcm80211 bluez
GNU Radio aOOO overflowCPU saturated; sample-rate too highLower sample rate, or move filter chain to GPU/FPGA-equivalent
dump1090: cannot read from rtlsdrDriver locked by another app, or USB power dropout`lsof
Touchpad / D-pad swaps directionsDisplay rotation overlay vs input device mappingUse xinput --set-prop or NetworkManager-bypass: evdev map override
HackRF Resource busygqrx or gnuradio still has the device openpkill -f gnuradio; pkill -f gqrx
Battery 0% reading on a full chargeFuel-gauge desync after deep dischargeCharge to 100 %, leave on for 1 hour, then discharge fully — recalibrates the gauge

16. Decision Flowcharts

16.1 Which OS

Need Kali tools as the primary?
   YES → Kali Linux ARM     (or Pi OS + kali-linux-arm metapackages if you want a more stable base)
   NO  → Need a hardened/security-minded daily driver?
            YES → ParrotOS ARM   (or BlackArch ARM if you live in pacman/AUR)
            NO  → Need bleeding-edge packages?
                    YES → Arch Linux ARM   (or NixOS for reproducibility)
                    NO  → Pi OS Bookworm   (default; lowest friction)

16.2 Which compute module

Need >32 GB onboard storage?
   YES → CM4 Lite + USB-3 SSD (cheap), or CM5 + NVMe in Mini PCIe
   NO  → Need >4 GB RAM?
            YES → CM5 (Pi or Radxa)
            NO  → Cost-sensitive?
                    YES → CM4 Lite + microSD
                    NO  → CM4 with eMMC (fast, small, durable)

16.3 Which OS for an RF rig

Just gqrx + dump1090?           Pi OS Bookworm
+ kismet + aircrack?            Pi OS + kali-linux-arm metapackages, or Kali ARM
+ GNU Radio + custom flowgraphs? Pi OS Bookworm (apt has gnuradio 3.10+); or build from source on Ubuntu 24.04 ARM
+ HF digital modes?              Pi OS Bookworm + wsjtx, fldigi, hamlib (apt installable)

17. systemd Service Templates

17.1 Auto-start dump1090 with web UI

# /etc/systemd/system/dump1090-uconsole.service
[Unit]
Description=ADS-B receiver
After=network.target

[Service]
ExecStart=/usr/bin/dump1090 --net --quiet
Restart=always
User=jeff

[Install]
WantedBy=multi-user.target
sudo systemctl enable --now dump1090-uconsole

17.2 Power-up wireless monitor mode

# /etc/systemd/system/monmode.service
[Unit]
Description=Bring up wlan0 in monitor mode at boot
After=network.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/airmon-ng start wlan0

[Install]
WantedBy=multi-user.target

17.3 RTL-SDR ADS-B → ADSBhub (or similar) feeder

# /etc/systemd/system/adsb-feeder.service
[Unit]
Description=ADS-B feeder
After=dump1090-uconsole.service
Requires=dump1090-uconsole.service

[Service]
ExecStart=/usr/bin/socat - TCP:localhost:30005,reuseaddr | /usr/bin/your-feeder-client
Restart=always

[Install]
WantedBy=multi-user.target

18. udev Rules

18.1 RTL-SDR — non-root access

# /etc/udev/rules.d/20-rtlsdr.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2838", GROUP="plugdev", MODE="0660"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0bda", ATTRS{idProduct}=="2832", GROUP="plugdev", MODE="0660"
sudo gpasswd -a $USER plugdev
sudo udevadm control --reload-rules && sudo udevadm trigger

18.2 HackRF

# /etc/udev/rules.d/53-hackrf.rules
ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6089", SYMLINK+="hackrf-jawbreaker%k", MODE="660", GROUP="plugdev"
ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="cc15", SYMLINK+="hackrf-rad1o%k", MODE="660", GROUP="plugdev"
ATTRS{idVendor}=="1d50", ATTRS{idProduct}=="6089", SYMLINK+="hackrf-one%k", MODE="660", GROUP="plugdev"
# /etc/udev/rules.d/85-signalink.rules
SUBSYSTEM=="sound", ATTRS{idVendor}=="0d8c", ATTRS{idProduct}=="000c", \
    ATTR{id}="hamradio", SYMLINK+="snd_hamradio"

19. SSH Hardening (a one-pager)

# 1. Generate a stronger key on the uConsole:
ssh-keygen -t ed25519 -a 100 -C "uConsole jeff $(date +%F)"

# 2. Copy public key to the server:
ssh-copy-id [email protected]

# 3. /etc/ssh/sshd_config (uConsole side, if accepting incoming SSH):
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes
AuthenticationMethods publickey
PermitEmptyPasswords no
MaxAuthTries 3
LoginGraceTime 30
ClientAliveInterval 60
ClientAliveCountMax 3
AllowUsers jeff
Port 22                                  # change to a non-standard port if exposed

# 4. Restart:
sudo systemctl restart ssh

# 5. Bonus — make the inbound port reachable only over Wireguard or Tailscale:
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw allow in on wg0 to any port 22
sudo ufw enable

20. Useful Aliases / Dotfiles

# ~/.bashrc additions
alias ll='ls -lah --color=auto'
alias gst='git status -sb'
alias gco='git checkout'
alias gd='git diff --color-words'
alias k='kubectl'
alias temp='vcgencmd measure_temp; cat /sys/class/thermal/thermal_zone0/temp'
alias bright='cat /sys/class/backlight/uconsole_backlight/brightness'
alias bset='function _b(){ echo $1 | sudo tee /sys/class/backlight/uconsole_backlight/brightness; }; _b'
alias batt='cat /sys/class/power_supply/uconsole_battery/capacity; cat /sys/class/power_supply/uconsole_battery/status'
alias uconsole-update-patches='cd ~/src/uConsole && git pull && cd Code/uConsole-Patches/CM4 && sudo ./install.sh'

# Useful prompt — show CPU temp + battery in PS1
PS1='[$(awk "{printf \"%.0f\", \$1/1000}" /sys/class/thermal/thermal_zone0/temp)°C $(cat /sys/class/power_supply/uconsole_battery/capacity)%] \u@\h:\w\$ '

21. Resource Shortcut Links

TopicURL
uConsole repohttps://github.com/clockworkpi/uConsole
uConsole subforumhttps://forum.clockworkpi.com/c/uconsole/
Pi bootloader docshttps://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-bootloader-configuration
usbboot (rpiboot)https://github.com/raspberrypi/usbboot
Kali Linux ARM downloadshttps://www.kali.org/get-kali/#kali-arm
RTL-SDR community + drivershttps://www.rtl-sdr.com/
HackRFhttps://greatscottgadgets.com/hackrf/
GNU Radiohttps://www.gnuradio.org/
WSJT-Xhttps://wsjt.sourceforge.io/
pat (Winlink)https://getpat.io/
nexmon (CYW43455 monitor mode)https://github.com/seemoo-lab/nexmon
Raspberry Pi forums (booting from USB)https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#bootloader_config

22. Cross-Reference Index

A — Aliases — §20. Audio — §13.2. Aircrack — §10. ADS-B — §8.1, §17.1. AXP — Vol 2.

B — Backlight — §11.2. Backup — §14. Battery — §11.4. Boot — §3. Brightness — §5, §11.2. BCM2711 / 2712 — Vol 1 §3.

C — Clockwork patches — §4 install line, §13.3 fix. CM4 / CM5 — Vol 1 §3, Vol 3. Console TTY — §5. CPU governor — §11.1.

D — D-pad — §5. Decision flowcharts — §16. Display — §13. dump1090 — §8.1, §17.1.

E — eMMC — §3.2. Error matrix — §15. Ethernet — §7 (none on uConsole — use USB-Ethernet adapter).

F — fldigi — §9.4. Fn key — §5. Forum — §21.

G — Game buttons — §5. GNU Radio — §8.2. GPIO — §2.1. gqrx — §8.1.

H — HackRF — §8.2. Hash crack — §10. Hotspot — §7.4. Hardening (SSH) — §19.

I — Index — §22 (this). Install one-liners — §4. iw / iwconfig — §7.3.

J — journalctl — §6.2. JS8Call — §9 (mention).

K — Kali — §4, §10. Keyboard — §5, §13.3. Keymap — §5.

L — LCD — §13. lspci — §12.1.

M — Mini PCIe — §2.2, §12. Monitor mode — §7.3.

N — nexmon — §7.3. nmap — §10. NetworkManager — §7.1. NFS root — §3.4.

O — OS install — §4. OS decision — §16.1. OTA upgrade — §6.1.

P — Pinout — §2. PMIC — Vol 2. Pi OS — §4, §16. Power — §11.

Q — Quectel — §12.2. Quick refs — entire volume.

R — Recovery — §3.5, §15. rpiboot — §3.2. RTL-SDR — §8.1, §18.1.

S — SD card — §3.1, §14. systemd — §6.2, §17. SSH — §19. Suspend — §11.5.

T — TTY — §5, §6.2. Thermal — §6.3, §11.

U — udev — §18. UART — §2.1, §7.3 (PTT lines, Vol 10).

V — Volume keys — §5. vcgencmd — §6.3, §11.

W — WSJT-X — §9.2. Wi-Fi — §7. Wireguard — §7.5.

X — xinput — §15.

Y — None.

Z — None.