Clockwork uConsole · Volume 12
Cheatsheet & Quick Reference
Laminate-printable one-pagers, pinouts, key combos, command refs, decision flowcharts, gotcha matrix
Contents
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 guide | Where 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:
| Pin | Signal | Notes |
|---|---|---|
| 1, 17 | WAKE# / Reserved | LTE modem wake interrupt |
| 11/13 | REFCLK ± | PCIe 100 MHz differential clock |
| 23/25 | PERn / PERp | PCIe receive lane |
| 31/33 | PETn / PETp | PCIe transmit lane |
| 36/38 | USB D− / D+ | USB 2.0 alternate function — RTL-SDR, LTE-via-USB, etc. |
| 8/10 | UIM_PWR / UIM_RST | SIM-card power / reset |
| 9, 14, 18, 26, 39 | GND | Multiple grounds |
| 2, 24, 41, 52 | +3.3V Vcc | Card power |
| 4, 19, 21 | Reserved / Vcc-aux | Some 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
| Symptom | First try |
|---|---|
| Black screen, no green LED | Pull power. Re-seat compute module. Try a known-good SD. |
| Green LED blinks 4× then 4× then loops | Bootloader can’t find start4.elf. Reflash SD’s boot partition. |
| Boots to rainbow square then halts | Kernel/firmware mismatch. Run sudo apt full-upgrade from a recovery rootfs. |
| eMMC un-flashable via rpiboot | Set the rpiboot jumper, double-check USB cable supports data, try a different cable. |
4. OS Install One-Liners
| OS | One-line(ish) install path |
|---|---|
| Pi OS Bookworm | xzcat raspios-bookworm-arm64.img.xz | sudo dd of=/dev/sdX bs=4M |
| Kali Linux ARM | xzcat kali-linux-2026.1-arm64-uconsole.img.xz | sudo dd of=/dev/sdX bs=4M (if Clockwork-flavored image available) |
| Pi OS + Kali tools | Pi OS install, then sudo apt install kali-linux-arm kali-tools-wireless kali-tools-information-gathering |
| ParrotOS ARM | Download Parrot-arm64-rpi.img.xz, dd to SD |
| BlackArch ARM | Build via blackarch-installer on Arch Linux ARM rootfs |
| Ubuntu 24.04 ARM | rpi-imager → “Ubuntu Server 24.04 LTS ARM64”, then sudo apt install ubuntu-desktop-minimal if you want a GUI |
| Arch Linux ARM | Per archlinuxarm.org RaspberryPi-aarch64 instructions, with the Clockwork uConsole-specific firmware-uconsole package layered |
| NixOS | nixos-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.
| Combo | Effect (default Pi OS Bookworm + Clockwork patch) |
|---|---|
Fn + number row 1–0 | F1 – F10 |
Fn + = | F11 |
Fn + - | F12 |
Fn + Q | Esc (an alternate Esc, in addition to top-left Esc) |
Fn + W | Tab (alt) |
Fn + ↑ / ↓ | Brightness up / down |
Fn + ← / → | Volume down / up |
Fn + Space | Toggle Wi-Fi (rfkill block wifi / unblock wifi) |
Fn + Enter | Toggle on-screen keyboard (when running matchbox-keyboard) |
Fn + Tab | Switch virtual desktop (Pi OS Wayland) |
Fn + Esc | Lock screen |
Ctrl + Alt + F1–F6 | Switch console TTY (works at the console) |
Ctrl + Alt + F7 | Return to GUI (X11) / Wayland session |
D-pad arrows | Map to standard arrow keys (Clockwork driver) |
| Game buttons A/B/X/Y | Map 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.
9.3 pat (Winlink)
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
| Symptom | Fix |
|---|---|
Screen tearing in glxgears | Set dtoverlay=vc4-kms-v3d in /boot/firmware/config.txt |
| No sound from speakers, fine on HDMI | amixer -c 1 set 'Speaker' 80% — alsa default mute |
| Backlight at full brightness, no control | Clockwork 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 NetworkManager | rfkill list → rfkill 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 / Symptom | Likely cause | Fix |
|---|---|---|
No DTB found at boot | SD’s boot partition is corrupt or missing files | Reflash boot partition; check FAT32 |
Kernel panic - not syncing: VFS: unable to mount root | Wrong root= in cmdline.txt | Boot from a known-good SD, mount target, fix cmdline.txt |
iwlwifi-XYZ.ucode failed with error -2 | Wrong firmware for an Intel WiFi card | Not applicable on CM4; only matters with USB Intel adapters |
vc4-drm: failed to find drm device | DSI 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 denied | User not in dialout (or tty) group | sudo gpasswd -a $USER dialout && newgrp dialout |
RuntimeError: this rtl-sdr device is in use | Another app holds the device, or dvb_usb_rtl28xxu blacklist missing | echo 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/rtl-blacklist.conf && sudo reboot |
Bluetooth: hci0: Failed to load Cypress firmware | Wi-Fi/BT firmware not installed | sudo apt install firmware-brcm80211 bluez |
GNU Radio aOOO overflow | CPU saturated; sample-rate too high | Lower sample rate, or move filter chain to GPU/FPGA-equivalent |
dump1090: cannot read from rtlsdr | Driver locked by another app, or USB power dropout | `lsof |
| Touchpad / D-pad swaps directions | Display rotation overlay vs input device mapping | Use xinput --set-prop or NetworkManager-bypass: evdev map override |
HackRF Resource busy | gqrx or gnuradio still has the device open | pkill -f gnuradio; pkill -f gqrx |
Battery 0% reading on a full charge | Fuel-gauge desync after deep discharge | Charge 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"
18.3 SignaLink / DigiRig — stable name for ham audio
# /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 user@server.example.com
# 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
| Topic | URL |
|---|---|
| uConsole repo | https://github.com/clockworkpi/uConsole |
| uConsole subforum | https://forum.clockworkpi.com/c/uconsole/ |
| Pi bootloader docs | https://www.raspberrypi.com/documentation/computers/raspberry-pi.html#raspberry-pi-bootloader-configuration |
usbboot (rpiboot) | https://github.com/raspberrypi/usbboot |
| Kali Linux ARM downloads | https://www.kali.org/get-kali/#kali-arm |
| RTL-SDR community + drivers | https://www.rtl-sdr.com/ |
| HackRF | https://greatscottgadgets.com/hackrf/ |
| GNU Radio | https://www.gnuradio.org/ |
| WSJT-X | https://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.