feat: add uConsole CM5 host configuration #6

Closed
Hermes wants to merge 1 commits from feat/add-uconsole-host into master
Collaborator

Summary

Add support for the uConsole CM5 (Raspberry Pi Compute Module 5 based handheld) to the infra flake.

Prerequisites - Flash eMMC First

Important: For CM5 with eMMC (recommended for reliability), flash via USB-C using rpiboot.

Step 1: Download Base Image

# Download CM5 image (experimental)
wget https://github.com/nixos-uconsole/nixos-uconsole/releases/download/v1.1.0/nixos-uconsole-cm5-v1.1.0.img.zst

# Decompress
zstd -d nixos-uconsole-cm5-v1.1.0.img.zst -o nixos-uconsole.img

Step 2: Flash eMMC via USB-C

On your host computer (Linux/Ubuntu example):

# Install rpiboot
sudo apt update
sudo apt install libusb-1.0-0-dev build-essential git
git clone https://github.com/raspberrypi/usbboot
cd usbboot
make

Flash procedure:

  1. Put CM5 in boot mode (hold BOOT button while powering on the IO board)
  2. Connect USB-C from CM5 IO board to your host computer
  3. Run sudo ./rpiboot - it will detect and mount the eMMC
  4. Find the device: lsblk (look for ~16-64GB device)
  5. Flash: sudo dd if=nixos-uconsole.img of=/dev/sdX bs=4M status=progress
  6. Wait for sync: sync

Alternative: Use balenaEtcher GUI on any platform.

Step 3: First Boot

  1. Power on uConsole normally (no boot button needed)
  2. Login as root with password changeme
  3. Connect to WiFi: nmtui
  4. Wait for NTP time sync

Step 4: Deploy Custom Configuration

# Clone infra repo
git clone ssh://git@code.lazyworkhorse.net:2222/gortium/infra.git
cd infra

# Build and deploy
sudo nixos-rebuild switch --flake .#uConsole

Configuration Details

Hardware Support

  • nixos-uconsole: Hardware-specific patches (Kernel, DTBO, Display)
  • nixos-hardware: Raspberry Pi 5 hardware tweaks
  • GPU acceleration: VideoCore VII enabled
  • Display: 720x1280 landscape, panel_orientation=right_side_up
  • variant = "cm5": Correct for CM5 module

User Configuration

  • User: thierry (wheel, dialout, plugdev, wireshark, video, networkmanager)
  • SSH access: gortium keys authorized

Software Packages

Base: emacs-pgtk, git, ripgrep, fd, htop, tmux, neovim

HAM Radio: js8call, wsjtx, fldigi, pat, direwolf, chirp, hamlib, trustedqsl

SDR/RF: sdrpp, gqrx, rtl-sdr, inspectrum, soapysdr-with-plugins

Mesh/LoRa: meshtastic, reticulum-network-stack, nomadnet, lxmf, sidechannel-rns

Security: nmap, metasploit, aircrack-ng, kismet, bettercap, wireshark, burpsuite, hashcat, john, sqlmap

GPS/Maps: foxtrotgps, viking, gpsbabel, marble

Services

  • gpsd (GPS daemon on /dev/ttyAMA0)
  • sway (Wayland, --unsupported-gpu)
  • openssh
  • wireshark (privilege separation)
  • udev rules (RTL-SDR access)

Verification

systemctl status gpsd           # GPS daemon
loginctl show-session           # Display session
lsusb | grep -i rtl             # SDR devices
sway --version                  # Sway running
## Summary Add support for the uConsole CM5 (Raspberry Pi Compute Module 5 based handheld) to the infra flake. ## Prerequisites - Flash eMMC First **Important:** For CM5 with eMMC (recommended for reliability), flash via USB-C using rpiboot. ### Step 1: Download Base Image ```bash # Download CM5 image (experimental) wget https://github.com/nixos-uconsole/nixos-uconsole/releases/download/v1.1.0/nixos-uconsole-cm5-v1.1.0.img.zst # Decompress zstd -d nixos-uconsole-cm5-v1.1.0.img.zst -o nixos-uconsole.img ``` ### Step 2: Flash eMMC via USB-C **On your host computer (Linux/Ubuntu example):** ```bash # Install rpiboot sudo apt update sudo apt install libusb-1.0-0-dev build-essential git git clone https://github.com/raspberrypi/usbboot cd usbboot make ``` **Flash procedure:** 1. Put CM5 in boot mode (hold BOOT button while powering on the IO board) 2. Connect USB-C from CM5 IO board to your host computer 3. Run `sudo ./rpiboot` - it will detect and mount the eMMC 4. Find the device: `lsblk` (look for ~16-64GB device) 5. Flash: `sudo dd if=nixos-uconsole.img of=/dev/sdX bs=4M status=progress` 6. Wait for sync: `sync` **Alternative:** Use balenaEtcher GUI on any platform. ### Step 3: First Boot 1. Power on uConsole normally (no boot button needed) 2. Login as `root` with password `changeme` 3. Connect to WiFi: `nmtui` 4. Wait for NTP time sync ### Step 4: Deploy Custom Configuration ```bash # Clone infra repo git clone ssh://git@code.lazyworkhorse.net:2222/gortium/infra.git cd infra # Build and deploy sudo nixos-rebuild switch --flake .#uConsole ``` ## Configuration Details ### Hardware Support - **nixos-uconsole**: Hardware-specific patches (Kernel, DTBO, Display) - **nixos-hardware**: Raspberry Pi 5 hardware tweaks - **GPU acceleration**: VideoCore VII enabled - **Display**: 720x1280 landscape, panel_orientation=right_side_up - **variant = "cm5"**: Correct for CM5 module ### User Configuration - User: thierry (wheel, dialout, plugdev, wireshark, video, networkmanager) - SSH access: gortium keys authorized ### Software Packages **Base:** emacs-pgtk, git, ripgrep, fd, htop, tmux, neovim **HAM Radio:** js8call, wsjtx, fldigi, pat, direwolf, chirp, hamlib, trustedqsl **SDR/RF:** sdrpp, gqrx, rtl-sdr, inspectrum, soapysdr-with-plugins **Mesh/LoRa:** meshtastic, reticulum-network-stack, nomadnet, lxmf, sidechannel-rns **Security:** nmap, metasploit, aircrack-ng, kismet, bettercap, wireshark, burpsuite, hashcat, john, sqlmap **GPS/Maps:** foxtrotgps, viking, gpsbabel, marble ### Services - gpsd (GPS daemon on /dev/ttyAMA0) - sway (Wayland, --unsupported-gpu) - openssh - wireshark (privilege separation) - udev rules (RTL-SDR access) ## Verification ```bash systemctl status gpsd # GPS daemon loginctl show-session # Display session lsusb | grep -i rtl # SDR devices sway --version # Sway running ``` ## Related - Hardware: uConsole CM5 with CM5 IO Board (eMMC) - Based on Raspberry Pi Compute Module 5 - nixos-uconsole: https://github.com/nixos-uconsole/nixos-uconsole - rpiboot: https://github.com/raspberrypi/usbboot
Hermes added 1 commit 2026-04-29 17:27:10 +00:00
- Add nixos-uconsole and nixos-hardware inputs for CM5/RPi5 support
- Create hosts/uconsole/configuration.nix with HAM radio, SDR, and security tools
- Create hosts/uconsole/hardware-configuration.nix for CM5 hardware
- Register uConsole in flake.nix nixosConfigurations
- Add uconsole host key placeholder to lib/keys.nix
Hermes closed this pull request 2026-04-29 20:27:06 +00:00

Pull request closed

Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gortium/infra#6
No description provided.