Wi-Fi-off acceptance passed: with Wi-Fi blocked, live and after a reboot, the Pi came up on the USB link alone, every node ran, and hermes mcp test robot and look() worked. (A temporary guard that would have unblocked Wi-Fi was the safety net and is removed; Wi-Fi is back on.) Delete what the ROS design superseded: the Picamera2 MCP server and its unit, the old installer and requirements, and the duplicate platform check. Move omarchy/ to host/omarchy/. Rewrite README.md for this build: parts, physical steps (including the Audio switch), setup, daily use, the troubleshooting learned the hard way, and the security model. pi/install.sh is now the single installer for a fresh Ubuntu 24.04 image, built from the steps done by hand: ROS, the libcamera fork at a pinned commit, camera_ros, the venv and models, the workspace, USB gadget, audio overlay, firewall (before PipeWire opens a port), PipeWire, mixer and services. Run twice on the live robot, the second run changed nothing and everything stayed healthy. It has not been run on a blank card. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AFN8nRRCiDiMN7ChBpHJhs
37 lines
1.5 KiB
Plaintext
37 lines
1.5 KiB
Plaintext
# ~/.config/pipewire/pipewire.conf.d/50-robot-tunnel.conf (on Omarchy)
|
|
#
|
|
# Makes the robot's speaker and microphone appear here as ordinary audio devices,
|
|
# "Robot speaker" and "Robot microphone". The robot is 10.55.0.2 on the USB link, a fixed address;
|
|
# the robot's firewall accepts port 4713 only over that link, from 10.55.0.1.
|
|
#
|
|
# Apply with: systemctl --user restart pipewire pipewire-pulse wireplumber
|
|
|
|
context.modules = [
|
|
{ name = libpipewire-module-pulse-tunnel
|
|
args = {
|
|
tunnel.mode = sink
|
|
pulse.server.address = "tcp:10.55.0.2:4713"
|
|
#pulse.device = "robot_ec_sink" # only with the Pi's optional echo-cancel config
|
|
pulse.latency = 200 # ms; lower is snappier but may crackle on weak Wi-Fi
|
|
reconnect.interval.ms = 5000 # keep retrying while the robot is off
|
|
stream.props = {
|
|
node.name = "robot_speaker"
|
|
node.description = "Robot speaker"
|
|
}
|
|
}
|
|
}
|
|
{ name = libpipewire-module-pulse-tunnel
|
|
args = {
|
|
tunnel.mode = source
|
|
pulse.server.address = "tcp:10.55.0.2:4713"
|
|
#pulse.device = "robot_ec_source" # only with the Pi's optional echo-cancel config
|
|
pulse.latency = 200
|
|
reconnect.interval.ms = 5000
|
|
stream.props = {
|
|
node.name = "robot_mic"
|
|
node.description = "Robot microphone"
|
|
}
|
|
}
|
|
}
|
|
]
|