# ~/.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". Replace ROBOT_IP with the Pi's address # (give it a DHCP reservation on your router so it never changes). # # Apply with: systemctl --user restart pipewire pipewire-pulse wireplumber context.modules = [ { name = libpipewire-module-pulse-tunnel args = { tunnel.mode = sink pulse.server.address = "tcp:ROBOT_IP: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:ROBOT_IP: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" } } } ]