Troubleshooting Overview
Run these five checks first, before anything else. They resolve the vast majority of issues.
Quick Diagnostic Checklist
1. Are all services running?
systemctl --user status shiloh-mixer shiloh-web-relay mixer_web
All three should show active (running). If any are failed, check logs before restarting.
2. Is audio actually flowing through PipeWire?
timeout 2 pw-top -b -n 3 | head -20
Look for at least one ALSA node with status R (running) and non-zero QUANT/RATE. If every row shows C with QUANT=0 RATE=0, no hardware is clocking the graph — see Mixer Troubleshooting.
3. Are the meters updating?
watch -n 1 'ls -la ~/mixer-state/meters.json'
The mtime should advance every ~100 ms. If it’s frozen, the mixer’s meters thread is stuck — restart shiloh-mixer.
4. Is the UDP port open?
ss -lunp | grep 5005
Should show shiloh-mixer listening on 0.0.0.0:5005. If not, the mixer is not running or crashed before binding.
5. Can you reach the mixer UI?
curl -sf http://localhost:8889/ > /dev/null && echo OK
If this fails, mixer_web is down or the Phoenix app crashed on startup.
How to Read Logs
Tail logs in real time
# Rust mixer (most important)
journalctl --user -u shiloh-mixer -f
# WebRTC egress (browser listener)
journalctl --user -u shiloh-web-relay -f
# Phoenix LiveView UI
journalctl --user -u mixer_web -f
# Mopidy player
journalctl --user -u mopidy -f
Look back over the last 10 minutes
journalctl --user -u shiloh-mixer --since "10 min ago"
Increase log verbosity
By default RUST_LOG=info. To see debug-level messages, override in the environment or in the systemd unit drop-in:
# One-off (temporary, lost on service restart)
RUST_LOG=debug ~/mixer/shiloh-mixer-linux-x86_64
# Persistent: edit the unit's Environment= line
systemctl --user edit shiloh-mixer
# Add:
# [Service]
# Environment=RUST_LOG=debug
# Then:
systemctl --user daemon-reload && systemctl --user restart shiloh-mixer
Useful log targets:
| Target | What it shows |
|---|---|
RUST_LOG=info |
Default: connections, rejects, errors |
RUST_LOG=debug |
All packet parsing, RT stats |
RUST_LOG=shiloh_mixer=debug,shiloh_protocol=info |
Mixer debug only |
Troubleshooting Sections
- Mixer Won’t Start — JACK, config, port conflicts, audio permissions
- Broadcaster Can’t Connect — DNS, allow-list, channel/rate mismatch, ring full
- Relay Audio Problems — no audio, crackling, wrong device, packet loss
- Browser / Web Relay Issues — WHEP 404, connection timeout, delay, iOS/Safari
- MIDI Control Issues — device not detected, keys unresponsive, jitter
- Common Recovery Steps — ordered from least to most disruptive