๐Ÿ”„ Reachy Mini Boot Sequence

โš ๏ธ Critical Discovery

Reachy has a two-stage activation process. The web dashboard auto-starts, but the motor control backend requires manual activation via the dashboard's red switch for safety reasons.

๐Ÿ“Š Boot Timeline

Stage 1: Hardware Power-On (0-30 seconds)

  • Power applied to Raspberry Pi 4
  • Bootloader loads kernel from SD card
  • Linux kernel (Raspbian) initializes
  • Network stack loads, connects to saved WiFi
  • mDNS registers reachy-mini.local

Stage 2: Web Dashboard Service (30-60 seconds)

  • Dashboard service starts via systemd
  • Uvicorn ASGI server binds to port 8000
  • Static content (HTML/CSS/JS) becomes accessible
  • Health check endpoint returns {"status":"ok"}
  • WebSocket server ready for real-time communication
โœ… Active: /health-check, dashboard HTML
โŒ Inactive: Motor control, movement APIs

Stage 3: Backend Dormant State (60+ seconds)

  • Robot control backend does NOT auto-start
  • Dashboard shows red "power" switch (OFF state)
  • Movement APIs return {"detail":"Backend not running"}
  • Safety feature prevents unexpected movement
  • Resources saved (Python SDK not running)
โš ๏ธ This is intentional! Prevents robot from moving after power loss.

Stage 4: Manual Backend Activation โš ๏ธ USER ACTION REQUIRED

๐Ÿ”ด CRITICAL: You MUST click the red switch in the dashboard!

What happens when you click the switch:

  • Sends command to start reachy-sdk-server
  • Motor controllers initialize
  • Joint position sensors calibrate
  • Camera modules connect
  • Movement libraries load from cache/HuggingFace
  • Control loops establish

Stage 5: Fully Operational ๐Ÿš€

  • All movement APIs functional
  • 70+ emotions available
  • 19 dances available
  • Motor control online
  • Real-time WebSocket control active
  • Safety systems active (collision detection, joint limits)

๐Ÿ”ฌ Technical Details

Why This Architecture?

๐Ÿ›ก๏ธ Safety First

The robot doesn't start moving immediately after power-on. Someone must intentionally "wake" it to prevent unexpected movement after power loss or reboot.

๐Ÿ’พ Resource Management

The heavy Python backend with motor control doesn't consume CPU/RAM until needed. The Raspberry Pi can run other services without the overhead.

๐Ÿ› Debugging Friendly

Web interface remains available even if robot backend crashes, allowing remote diagnosis and recovery without physical access.

โšก Power Loss Recovery

After unexpected shutdown, robot remains in safe state until manually reactivated, preventing damage from uncontrolled movements during unstable power.

โœ… Verification Commands

# Stage 2: Check if dashboard is up
curl -X POST http://reachy-mini.local:8000/health-check
# Expected: {"status":"ok"}

# Stage 3: Check if backend is running
curl -X POST http://reachy-mini.local:8000/api/move/play/\
  recorded-move-dataset/pollen-robotics/\
  reachy-mini-emotions-library/test
# Expected if dormant: {"detail":"Backend not running"}

# Stage 5: Verify full operation
./aurion status
# Should show:
# Reachy Dashboard: โ— Online
# Reachy Backend:  โ— Active