3.0 KiB
3.0 KiB
Beacon CM4 Agent Cheat Sheet
Automated Flash (jumper bridged, fully scripted)
One command — bridge the EMMC_DISABLE jumper, then run from repo root:
cd ~/repos/buildroot-beacon
./beacon-buildroot/scripts/flash-cm4.sh
The script:
- Builds
usbboot/rpibootfrom source if not already compiled - Runs
rpiboot -d mass-storage-gadget64to expose eMMC over USB - Auto-detects the CM4 USB block device (~7.3 GiB)
- Unmounts any auto-mounted partitions
- Flashes
output/images/sdcard.img.xzviabmaptool(sparse, fast) - Prints "Flash complete — remove jumper and power-cycle"
Override device explicitly if auto-detect picks wrong disk:
./beacon-buildroot/scripts/flash-cm4.sh /dev/sda
UART Console (interactive)
UART probe on GPIO14 (TX) / GPIO15 (RX), 115200 baud:
picocom -b 115200 /dev/ttyUSB1
# or with log capture:
picocom -b 115200 --logfile /tmp/uart-$(date +%s).log /dev/ttyUSB1
Exit: Ctrl-A Ctrl-X
UART Log Capture (non-interactive, agent-readable)
Use socat — truly headless, no terminal required, clean line endings:
# Start BEFORE power-cycling the CM4:
socat -u /dev/ttyUSB1,b115200,rawer,crnl OPEN:/tmp/uart-boot.log,creat,trunc &
# Stop capture after boot is done:
kill %1
# Read the log:
cat /tmp/uart-boot.log
Notes:
picocombackgrounded with&gets stopped by job control (SIGTTOU) — do not use it headlesslycat /dev/ttyUSB1withstty rawproduces garbled output — do not use it
SSH Access
Login: user / beacon (root login disabled — use sudo su -)
# Find CM4 IP (DHCP, changes on reboot):
ip neigh show dev enp0s31f6 | grep e4:5f:01:e9:13:96
# SSH:
sshpass -p beacon ssh user@<cm4-ip>
Note: Dropbear has no sftp-server — scp does NOT work. Transfer files via stdin pipe:
sshpass -p beacon ssh user@<cm4-ip> 'sudo tee /upload/rootfs.raucb > /dev/null' < output/images/rootfs.raucb
OTA Update (fully scripted from host)
CM4=10.11.0.xx # find via: ip neigh show dev enp0s31f6
# 1. Transfer bundle (~51 MB, ~5s on LAN):
sshpass -p beacon ssh user@$CM4 'sudo tee /upload/rootfs.raucb > /dev/null' \
< output/images/rootfs.raucb
# 2. Install:
sshpass -p beacon ssh user@$CM4 'rauc install /upload/rootfs.raucb'
# 3. Reboot into slot B:
sshpass -p beacon ssh user@$CM4 'sudo reboot'
# 4. After reboot (new IP — find again with ip neigh):
sshpass -p beacon ssh user@$CM4_NEW 'rauc status mark-good && rauc status'
Note: ports 8080 and 9090 are taken by other host services — do NOT use HTTP for OTA.
RAUC Status
sshpass -p beacon ssh user@<cm4-ip> 'rauc status'
sudo fw_printenv | grep BOOT_
Rescue Mode
Short GPIO4 (pin 7) to GND (pin 9) on 40-pin header during power-on.
Secure Boot Provision (Milestone 2)
update-pieeprom.sh -k private.pem
rpiboot -d secure-boot-recovery
rpi secure boot private key: use /buildroot-beacon/private.pem — do NOT generate a fresh one. RAUC has its own key; keep both alongside each other.