Reachy Mini troubleshooting workflow for connectivity, daemon, motion, and import issues before deeper debugging.
Before debugging complex issues, always check that basic examples work.
For Lite (USB connection):
# Start daemon if not running
reachy-mini-daemon
# Or in simulation mode
reachy-mini-daemon --sim
For Wireless:
Run the minimal demo to verify connectivity and motion:
python examples/minimal_demo.py
This connects to the robot and makes the head nod with antenna movement. If this fails, the problem is connectivity, not your app.
Fix: Kill other connections, restart daemon.
Check:
print(mini.get_motor_status()) # Check if motors enabled
Fix:
mini.enable_motors()
Fix: Single control point, maintain 30Hz+, use one method at a time.
reachy-mini installed in your environment?See safe-torque.md for the workaround when enabling/disabling motor subsets.
| Issue | Simulation | Physical |
|---|---|---|
| No motion | Check daemon is in --sim mode | Check motors enabled, power on |
| Camera fails | Expected - no camera in sim | Check USB connection |
| Audio fails | May not work in sim | Check microphone permissions |
# If running in terminal, logs appear there
# Otherwise run with verbose flag
reachy-mini-daemon --verbose
SSH into the robot and check system logs or even restart the daemon:
ssh [email protected] # password: root
# View daemon logs
journalctl -u reachy-mini-daemon.service
# Restart the daemon
systemctl restart reachy-mini-daemon.service # password: root
Add logging to your app:
import logging
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger(__name__)
logger.debug(f"Current pose: {mini.get_current_head_pose()}")
Before asking for help or doing complex debugging:
reachy-mini package installedWhen your app breaks and you're not sure which change caused it, use git history to narrow down the problem efficiently.
python examples/minimal_demo.py# 1. Check current (broken) state
git log --oneline -10
# 2. Go back to a commit you know worked
git checkout <older-commit-hash>
python my_app/main.py # Test it
# 3. If it works, check the diff to the broken version
git diff <this-commit> <broken-commit>
# 4. Decide: is the diff small enough to debug directly?
# - YES → Read the diff and find the bug
# - NO → Binary search further (pick a commit in the middle)
The key insight: you don't always need to bisect all the way down. At each step, check git diff and judge if the changes are small enough to spot the bug directly.
For comprehensive troubleshooting (hardware issues, motor errors, audio problems, etc.), see:
docs/source/troubleshooting.md
This covers:
If basics work but your app doesn't: