Overview
Moorcheh voice can play TTS through a Bluetooth speaker on Linux (e.g. Arduino UNO Q) by setting"playback": "bluetooth" in ~/.moorcheh-edge/voice/audio.json.
Pairing is done manually with bluetoothctl on the board. There is no fully automated CLI wizard today - headless boards often need the pairing agent registered in the same interactive session.
Keep the USB mic on ALSA (
plughw:…) for capture. Only playback switches to Bluetooth.Prerequisites
bluetooth group.
Verify the adapter:
Powered: yes.
Pair the speaker (interactive)
Put the speaker in pairing mode, then:bluetoothctl prompt:
scan on running. With the speaker in pairing mode, wait 10-15 seconds so it appears in the scan results.
Pick your speaker and note its MAC
Still insidebluetoothctl, list discovered devices:
- Find the line for your Bluetooth speaker - read the name at the end of the line (e.g.
JBL Flip 5). - Copy the MAC address from the start of that same line - six pairs of hex digits like
AA:BB:CC:DD:EE:FF.
devices again.
Optional: stop scanning once you have the MAC:
Pair, trust, and connect
ReplaceAA:BB:CC:DD:EE:FF with the MAC you copied from devices:
Pairing successful and Connection successful before you run quit.
Point Moorcheh at Bluetooth playback
Edit~/.moorcheh-edge/voice/audio.json:
capture- USB mic (fromvoice setuporvoice check)playback- must be"bluetooth"for PipeWire/BlueZ outputbt_device- optional MAC hint when multiplebluez_outputsinks exist
Switch back to wired USB speaker
audio.json manually:
bt_device when using wired playback.
PipeWire session on UNO Q
On some UNO Q images the Bluetooth sink appears under thelightdm session while you SSH as arduino. Moorcheh tries the current user first, then lightdm, when "playback": "bluetooth".
If playback fails but pactl list sinks short shows a sink under another user:
| Variable | Purpose |
|---|---|
MOORCHEH_BT_DEVICE | MAC filter (same as bt_device in audio.json) |
MOORCHEH_PULSE_RUNTIME_USER | Force PipeWire session user |
MOORCHEH_AUDIO_PLAYBACK | Override playback (bluetooth or plughw:…) |