Eye Remote - CyberMind-FR/secubox-deb GitHub Wiki
SecuBox Eye Remote transforms a Raspberry Pi Zero W into a portable USB boot media controller for ARM64 SecuBox devices (ESPRESSObin, MOCHAbin).
The Eye Remote presents a multiboot storage image to the host device via USB gadget mass_storage, enabling network-less deployment and recovery.
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Eye Remote Architecture โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโโ USB OTG โโโโโโโโโโโโโโโโโโโ โ
โ โ Pi Zero W โ โโโโโโโโโโโโโโโโโโโโโโโบโ ESPRESSObin โ โ
โ โ โ mass_storage + โ or MOCHAbin โ โ
โ โ Eye Remote โ ECM network โ โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โ ยตSD Card โ โ
โ โผ โผ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ โ storage.img โ โโโโpresented asโโโโบ โ /dev/sda โ โ
โ โ 16GB image โ USB mass storage โ Bootable disk โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
| Feature | Description |
|---|---|
| USB Mass Storage | Pi Zero presents storage.img as USB disk to host |
| USB ECM Network | Ethernet over USB for remote management |
| Serial Console | USB ACM serial for debug access |
| Dual Boot Menu | Interactive menu: Live RAM Boot or Flash to eMMC |
| Web Dashboard | xterm.js serial console + status UI |
| Component | Specification |
|---|---|
| Pi Zero W | Any revision (W for WiFi management) |
| ยตSD Card | 32GB+ Class 10 / A1 recommended |
| USB Cable | USB-A to Micro-USB OTG |
| Target | ESPRESSObin, MOCHAbin, or compatible ARM64 |
# Download the Eye Remote image
wget https://github.com/CyberMind-FR/secubox-deb/releases/download/eye-remote-v2.2.4/secubox-eye-remote.img.xz
# Flash to ยตSD card
xzcat secubox-eye-remote.img.xz | sudo dd of=/dev/sdX bs=4M status=progress conv=fsync
sync- Insert ยตSD card into Pi Zero
- Connect Pi Zero USB port to target's USB port
- Power on target device
The target device will see a USB mass storage device and boot from it. The U-Boot boot.scr presents:
============================================
BOOT MENU
============================================
[1] Live RAM Boot (default)
[2] Flash SecuBox to eMMC
Auto-boot in 5 seconds...
| Partition | Label | Size | Purpose |
|---|---|---|---|
| 1 | SECUBOX-EFI | 512MB | Boot files (kernel, DTB, GRUB, U-Boot) |
| 2 | secubox-arm64 | ~4GB | ARM64 rootfs (RAM-loaded) |
| 3 | secubox-amd64 | ~4GB | AMD64 rootfs (for x86 targets) |
| 4 | secubox-data | ~7GB | Shared persistent data |
The Pi Zero configures multiple USB gadget functions:
# /boot/config.txt
dtoverlay=dwc2
# cmdline.txt (after rootwait)
modules-load=dwc2,g_multi| Function | Device | Purpose |
|---|---|---|
mass_storage |
Host sees USB disk | Boot media |
ecm |
usb0 network | Remote access |
acm |
ttyGS0 serial | Debug console |
cd secubox-deb
# Build the Eye Remote image
sudo bash image/eye-remote/build-eye-remote.sh \
--output output/secubox-eye-remote.img \
--storage-size 16G
# Or with multiboot integration
sudo bash image/multiboot/build-multiboot.sh \
--output output/secubox-multiboot.img \
--size 16GThe image is automatically built via CI:
- Workflow:
.github/workflows/build-eye-remote.yml - Trigger: Push to
eye-remote-v*tags
Edit /boot/wpa_supplicant.conf on the ยตSD card before first boot:
country=FR
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="YourWiFi"
psk="YourPassword"
}
# Via WiFi (if configured)
ssh secubox@<pi-zero-ip>
# Via USB ECM network
ssh [email protected]Access at http://10.55.0.1:8080:
- Serial console via xterm.js
- Boot media status
- Storage swap controls
The Eye Remote supports the Pimoroni HyperPixel 2.1 Round (480ร480) for a dedicated dashboard:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ด ๐ ๐ก ๐ข ๐ต ๐ฃ โ โ Rainbow icon ring
โ โญโโโโโโฎ โ
โ โญโโโTIME โโโโฎ โ โ Center clock
โ โญโโโโDATE โโโโโฎ โ
โ โญโโโโโHOST โโโโโโฎ โ โ Concentric metric rings
โ โญโโโโโโ UP โโโโโโโฎ โ (redโpurple outerโinner)
โ โฐโโโโโโฐโโโโโโฏโโโโโโฏ โ
โ RADAR โณ โ โ Rotating radar sweep
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Features:
- 6 module icons in rainbow order (BOOT, AUTH, WALL, ROOT, MESH, MIND)
- Radar sweep syncs with targeted module glow
- Metric arcs aligned with corresponding icon colors
- Concentric rings: red (outer) โ purple (inner)
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/v1/eye-remote/status |
System status |
| GET | /api/v1/eye-remote/boot-media/state |
Boot media state |
| POST | /api/v1/eye-remote/boot-media/upload |
Upload to shadow |
| POST | /api/v1/eye-remote/boot-media/swap |
Swap active/shadow |
| POST | /api/v1/eye-remote/boot-media/rollback |
Rollback swap |
- Check ยตSD card is properly seated
- Verify
config.txtcontainsdtoverlay=dwc2 - Check power LED (solid red = powered)
- Check activity LED (flashing green = reading SD)
- Ensure USB cable supports data (not charge-only)
- Check Pi Zero is fully booted (activity LED stops flashing)
- On target, run
lsusbto check USB detection - Check
dmesgfor mass_storage errors
- Target U-Boot must support
usb start - Check boot order in U-Boot:
printenv boot_targets - Manually try:
usb start; fatload usb 0:1 $kernel_addr_r Image
- Multi-Boot Live OS โ Full multiboot documentation
- ARM-Installation โ ARM64 installation guide
- ESPRESSObin โ ESPRESSObin specific setup
- Live-USB โ Standard Live USB guide