Support Playbook
Use this document when you need a practical triage checklist for the active Ioruba stack.
🧾 What to collect first
Before opening an issue or debugging a broken session, capture:
- operating system and version
- whether you are using a real Nano or demo mode
- the current profile JSON from the
Configtab - the latest lines from
ioruba-watch.log - output of:
node --version
npm --version
pactl info
arduino-cli board list
Useful config locations:
- Linux:
~/.config/io.ioruba.desktop/ - macOS:
~/Library/Application Support/io.ioruba.desktop/ - Windows:
%APPDATA%\\io.ioruba.desktop\\
🔌 Serial problems
Symptom: no controller found
Check:
- the board is powered through a real USB data cable
- the sketch in
firmware/arduino/ioruba-controlleris flashed - the board appears in
arduino-cli board list - your Linux user is in
dialoutand/oruucp
Commands:
arduino-cli board list
ls -l /dev/ttyUSB* /dev/ttyACM* 2>/dev/null
Symptom: port busy or permission denied
Check whether another tool is holding the port:
fuser -v /dev/ttyUSB0
Fix Linux permissions if needed:
sudo usermod -a -G dialout $USER
sudo usermod -a -G uucp $USER
Then log out and back in.
🎛️ Audio problems on Linux
Symptom: backend unavailable
The current production audio path depends on pactl.
Check:
pactl info
If that fails, install a PulseAudio-compatible interface such as PipeWire Pulse or PulseAudio utilities.
Symptom: applications do not move
Check:
pactl list short sink-inputs
Tips:
- keep the target app actively playing audio
- refresh the inventory in the desktop app
- use stable application names in the profile JSON
Symptom: microphone or output target does not move
Check:
pactl list short sinks
pactl list short sources
pactl get-default-sink
pactl get-default-source
Prefer default_output and default_microphone when you want profiles to survive device changes.
🧩 Profile JSON problems
Symptom: profile does not save
The editor already performs inline validation. Common causes are:
- invalid JSON syntax
- duplicated slider
id - empty
name - invalid
kind - invalid enum values in
audioorui
Reference examples:
📈 Runtime and watch-log problems
If the UI opens but behavior still feels wrong:
- inspect the
Watchtab - compare the last serial line with the controller movement
- check whether the app is stuck in
searching,connecting,connected, ordemo - verify that
ioruba-watch.logis being written to the config directory
🖥️ Non-Linux platforms
On macOS and Windows, treat the current app as:
- valid for layout review
- valid for demo mode
- valid for persistence checks
- not yet production-ready for real system-audio control