Hey
I'm using a Raspberry Pi 5 with OS Trixie.
The video and audio are transmitted via HDMI to a 9" monitor with its own speakers. I also have an additional external speaker connected to the monitor.
I've now connected my iPhone via Bluetooth without any problems. When I start playing music on the iPhone, it's also displayed as playing on the Hudiy interface, but unfortunately, there's no sound.
If I switch to the OS desktop, I can hear the music through the external speaker. This means the audio is being transmitted from the Raspberry Pi. I have PipeWire installed. What settings might I need to change in Hudiy?
PI5 Audio
Re: PI5 Audio
Hello,
Audio routing and Bluetooth playback is managed by the PipeWire. You can check current routing using e. g. qpwgraph application (sudo apt install qpwgraph).
Audio routing and Bluetooth playback is managed by the PipeWire. You can check current routing using e. g. qpwgraph application (sudo apt install qpwgraph).
Re: PI5 Audio
I installed qpwgraph and got the following image.
- Attachments
-
- IMG_4733.jpeg (2.21 MiB) Viewed 1454 times
Re: PI5 Audio
The routing looks good.
During startup, Hudiy loads the equalizer and echo cancel modules. What is the output of the pactl list sinks command while music is playing?
During startup, Hudiy loads the equalizer and echo cancel modules. What is the output of the pactl list sinks command while music is playing?
Re: PI5 Audio
In this setting, the sound from the iPhone plays at the OS desktop through the external speakers.
How can I set this as the default?
To get back to the Hudiy interface, I have to restart the Pi 5. But then all the connections I created in QPWGraph disappear.
How can I set this as the default?
To get back to the Hudiy interface, I have to restart the Pi 5. But then all the connections I created in QPWGraph disappear.
- Attachments
-
- WIN_20251115_16_22_32_Pro.jpg (4.09 MiB) Viewed 1436 times
Re: PI5 Audio
With the routing shown in the screenshot, the Phone bypasses the Equalizer and Echo Cancel modules. This means that echo cancellation and equalizer processing won't apply to the phone's audio output. It would be better to investigate why in your case the PipeWire doesn't output sound when those modules are loaded.
Does this issue occur only with Bluetooth audio, or also with CarPlay or the Storage Music Player?
Does this issue occur only with Bluetooth audio, or also with CarPlay or the Storage Music Player?
Re: PI5 Audio
How can I save a working routing as the default setting so that it is loaded as the default on restart?
Re: PI5 Audio
You can check PipeWire and WirePlumber docs if there is anything about restoring custom routing:Olli wrote: Sat Nov 15, 2025 4:10 pm How can I save a working routing as the default setting so that it is loaded as the default on restart?
https://gitlab.freedesktop.org/pipewire ... ikis/pages
https://gitlab.freedesktop.org/pipewire ... wikis/home
https://docs.pipewire.org/
https://pipewire.pages.freedesktop.org/wireplumber/
Re: PI5 Audio
I've now configured this routing.
This means that both music files stored on the Pi and music streamed via Bluetooth from the iPhone will play in the OS desktop.
Unfortunately, nothing up in the Hudiy interface.
This means that both music files stored on the Pi and music streamed via Bluetooth from the iPhone will play in the OS desktop.
Unfortunately, nothing up in the Hudiy interface.
- Attachments
-
- WIN_20251115_17_59_00_Pro.jpg (3.98 MiB) Viewed 1413 times
Re: PI5 Audio
pactl list sinks
Sink #56
State: RUNNING
Name: alsa_output.platform-107c706400.hdmi.hdmi-stereo
Description: Internes Audio Digital Stereo (HDMI)
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 34715 / 53% / -16,56 dB, front-right: 34715 / 53% / -16,56 dB
balance 0,00
Base Volume: 65536 / 100% / 0,00 dB
Monitor Source: alsa_output.platform-107c706400.hdmi.hdmi-stereo.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE DECIBEL_VOLUME LATENCY SET_FORMATS
Properties:
alsa.card = "1"
alsa.card_name = "vc4-hdmi-1"
alsa.class = "generic"
alsa.device = "0"
alsa.driver_name = "vc4"
alsa.id = "MAI PCM i2s-hifi-0"
alsa.long_card_name = "vc4-hdmi-1"
alsa.name = "MAI PCM i2s-hifi-0"
alsa.resolution_bits = "16"
alsa.subclass = "generic-mix"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.sync.id = "00000000:00000000:00000000:00000000"
api.alsa.card.longname = "vc4-hdmi-1"
api.alsa.card.name = "vc4-hdmi-1"
api.alsa.path = "hdmi:1"
api.alsa.pcm.card = "1"
api.alsa.pcm.stream = "playback"
audio.channels = "2"
audio.position = "FL,FR"
card.profile.device = "1"
device.api = "alsa"
device.class = "sound"
device.icon_name = "audio-card-analog"
device.id = "49"
device.profile.description = "Digital Stereo (HDMI)"
device.profile.name = "hdmi-stereo"
device.routes = "1"
factory.name = "api.alsa.pcm.sink"
iec958.codecs = "[\"PCM\"]"
media.class = "Audio/Sink"
device.description = "Internes Audio"
node.name = "alsa_output.platform-107c706400.hdmi.hdmi-stereo"
node.nick = "MAI PCM i2s-hifi-0"
node.pause-on-idle = "false"
object.path = "alsa:acp:vc4hdmi1:1:playback"
port.group = "playback"
priority.driver = "1000"
priority.session = "1000"
factory.id = "19"
clock.quantum-limit = "8192"
client.id = "47"
node.driver = "true"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
object.id = "56"
object.serial = "56"
node.max-latency = "16384/48000"
api.alsa.period-size = "1024"
api.alsa.period-num = "32"
api.alsa.headroom = "0"
api.acp.auto-port = "false"
api.acp.auto-profile = "false"
api.alsa.card = "1"
api.alsa.split-enable = "true"
api.alsa.use-acp = "true"
api.dbus.ReserveDevice1 = "Audio1"
api.dbus.ReserveDevice1.Priority = "-20"
device.bus_path = "platform-107c706400.hdmi"
device.enum.api = "udev"
device.form_factor = "internal"
device.name = "alsa_card.platform-107c706400.hdmi"
device.nick = "vc4-hdmi-1"
device.plugged.usec = "3726586"
device.subsystem = "sound"
sysfs.path = "/devices/platform/soc@107c000000/107c706400.hdmi/sound/card1"
spa.object.id = "4"
device.string = "1"
Ports:
hdmi-output-0: HDMI / DisplayPort (type: HDMI, priority: 5900, availability group: Legacy 1, available)
Active Port: hdmi-output-0
Formats:
pcm
Sink #85
State: RUNNING
Name: hudiy_equalizer_sink
Description: hudiy_equalizer_sink Sink
Driver: PipeWire
Sample Specification: float32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 536870916
Mute: no
Volume: front-left: 65536 / 100% / 0,00 dB, front-right: 65536 / 100% / 0,00 dB
balance 0,00
Base Volume: 65536 / 100% / 0,00 dB
Monitor Source: hudiy_equalizer_sink.monitor
Latency: 0 usec, configured 0 usec
Flags: DECIBEL_VOLUME LATENCY
Properties:
node.name = "hudiy_equalizer_sink"
media.class = "Audio/Sink"
device.class = "filter"
audio.channels = "2"
audio.position = "[ FL, FR ]"
node.group = "ladspa-sink-536870916"
pulse.module.id = "536870916"
device.description = "hudiy_equalizer_sink Sink"
node.link-group = "filter-chain-1079-13"
node.virtual = "true"
resample.prefill = "true"
resample.disable = "true"
media.name = "hudiy_equalizer_sink Sink input"
stream.is-live = "true"
node.want-driver = "true"
node.autoconnect = "true"
port.group = "stream.0"
adapt.follower.spa-node = ""
object.register = "false"
factory.id = "7"
clock.quantum-limit = "8192"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
client.id = "77"
object.id = "78"
object.serial = "85"
node.driver-id = "56"
Formats:
pcm
Sink #100
State: RUNNING
Name: echo_cancel_sink
Description: Echo-Cancel Sink
Driver: PipeWire
Sample Specification: float32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 536870917
Mute: no
Volume: front-left: 65536 / 100% / 0,00 dB, front-right: 65536 / 100% / 0,00 dB
balance 0,00
Base Volume: 65536 / 100% / 0,00 dB
Monitor Source: echo_cancel_sink.monitor
Latency: 0 usec, configured 0 usec
Flags: DECIBEL_VOLUME LATENCY
Properties:
node.name = "echo_cancel_sink"
pulse.module.id = "536870917"
device.description = "Echo-Cancel Sink"
media.class = "Audio/Sink"
node.group = "echo-cancel-1079-14"
node.link-group = "echo-cancel-1079-14"
node.virtual = "true"
audio.channels = "2"
audio.position = "[ FL, FR ]"
resample.prefill = "true"
node.latency = "480/48000"
media.name = "Echo-Cancel Sink"
stream.is-live = "true"
node.want-driver = "true"
port.group = "stream.0"
adapt.follower.spa-node = ""
object.register = "false"
factory.id = "7"
clock.quantum-limit = "8192"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
client.id = "88"
object.id = "91"
object.serial = "100"
node.driver-id = "56"
Formats:
pcm
Sink #56
State: RUNNING
Name: alsa_output.platform-107c706400.hdmi.hdmi-stereo
Description: Internes Audio Digital Stereo (HDMI)
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 4294967295
Mute: no
Volume: front-left: 34715 / 53% / -16,56 dB, front-right: 34715 / 53% / -16,56 dB
balance 0,00
Base Volume: 65536 / 100% / 0,00 dB
Monitor Source: alsa_output.platform-107c706400.hdmi.hdmi-stereo.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE DECIBEL_VOLUME LATENCY SET_FORMATS
Properties:
alsa.card = "1"
alsa.card_name = "vc4-hdmi-1"
alsa.class = "generic"
alsa.device = "0"
alsa.driver_name = "vc4"
alsa.id = "MAI PCM i2s-hifi-0"
alsa.long_card_name = "vc4-hdmi-1"
alsa.name = "MAI PCM i2s-hifi-0"
alsa.resolution_bits = "16"
alsa.subclass = "generic-mix"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.sync.id = "00000000:00000000:00000000:00000000"
api.alsa.card.longname = "vc4-hdmi-1"
api.alsa.card.name = "vc4-hdmi-1"
api.alsa.path = "hdmi:1"
api.alsa.pcm.card = "1"
api.alsa.pcm.stream = "playback"
audio.channels = "2"
audio.position = "FL,FR"
card.profile.device = "1"
device.api = "alsa"
device.class = "sound"
device.icon_name = "audio-card-analog"
device.id = "49"
device.profile.description = "Digital Stereo (HDMI)"
device.profile.name = "hdmi-stereo"
device.routes = "1"
factory.name = "api.alsa.pcm.sink"
iec958.codecs = "[\"PCM\"]"
media.class = "Audio/Sink"
device.description = "Internes Audio"
node.name = "alsa_output.platform-107c706400.hdmi.hdmi-stereo"
node.nick = "MAI PCM i2s-hifi-0"
node.pause-on-idle = "false"
object.path = "alsa:acp:vc4hdmi1:1:playback"
port.group = "playback"
priority.driver = "1000"
priority.session = "1000"
factory.id = "19"
clock.quantum-limit = "8192"
client.id = "47"
node.driver = "true"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
object.id = "56"
object.serial = "56"
node.max-latency = "16384/48000"
api.alsa.period-size = "1024"
api.alsa.period-num = "32"
api.alsa.headroom = "0"
api.acp.auto-port = "false"
api.acp.auto-profile = "false"
api.alsa.card = "1"
api.alsa.split-enable = "true"
api.alsa.use-acp = "true"
api.dbus.ReserveDevice1 = "Audio1"
api.dbus.ReserveDevice1.Priority = "-20"
device.bus_path = "platform-107c706400.hdmi"
device.enum.api = "udev"
device.form_factor = "internal"
device.name = "alsa_card.platform-107c706400.hdmi"
device.nick = "vc4-hdmi-1"
device.plugged.usec = "3726586"
device.subsystem = "sound"
sysfs.path = "/devices/platform/soc@107c000000/107c706400.hdmi/sound/card1"
spa.object.id = "4"
device.string = "1"
Ports:
hdmi-output-0: HDMI / DisplayPort (type: HDMI, priority: 5900, availability group: Legacy 1, available)
Active Port: hdmi-output-0
Formats:
pcm
Sink #85
State: RUNNING
Name: hudiy_equalizer_sink
Description: hudiy_equalizer_sink Sink
Driver: PipeWire
Sample Specification: float32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 536870916
Mute: no
Volume: front-left: 65536 / 100% / 0,00 dB, front-right: 65536 / 100% / 0,00 dB
balance 0,00
Base Volume: 65536 / 100% / 0,00 dB
Monitor Source: hudiy_equalizer_sink.monitor
Latency: 0 usec, configured 0 usec
Flags: DECIBEL_VOLUME LATENCY
Properties:
node.name = "hudiy_equalizer_sink"
media.class = "Audio/Sink"
device.class = "filter"
audio.channels = "2"
audio.position = "[ FL, FR ]"
node.group = "ladspa-sink-536870916"
pulse.module.id = "536870916"
device.description = "hudiy_equalizer_sink Sink"
node.link-group = "filter-chain-1079-13"
node.virtual = "true"
resample.prefill = "true"
resample.disable = "true"
media.name = "hudiy_equalizer_sink Sink input"
stream.is-live = "true"
node.want-driver = "true"
node.autoconnect = "true"
port.group = "stream.0"
adapt.follower.spa-node = ""
object.register = "false"
factory.id = "7"
clock.quantum-limit = "8192"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
client.id = "77"
object.id = "78"
object.serial = "85"
node.driver-id = "56"
Formats:
pcm
Sink #100
State: RUNNING
Name: echo_cancel_sink
Description: Echo-Cancel Sink
Driver: PipeWire
Sample Specification: float32le 2ch 48000Hz
Channel Map: front-left,front-right
Owner Module: 536870917
Mute: no
Volume: front-left: 65536 / 100% / 0,00 dB, front-right: 65536 / 100% / 0,00 dB
balance 0,00
Base Volume: 65536 / 100% / 0,00 dB
Monitor Source: echo_cancel_sink.monitor
Latency: 0 usec, configured 0 usec
Flags: DECIBEL_VOLUME LATENCY
Properties:
node.name = "echo_cancel_sink"
pulse.module.id = "536870917"
device.description = "Echo-Cancel Sink"
media.class = "Audio/Sink"
node.group = "echo-cancel-1079-14"
node.link-group = "echo-cancel-1079-14"
node.virtual = "true"
audio.channels = "2"
audio.position = "[ FL, FR ]"
resample.prefill = "true"
node.latency = "480/48000"
media.name = "Echo-Cancel Sink"
stream.is-live = "true"
node.want-driver = "true"
port.group = "stream.0"
adapt.follower.spa-node = ""
object.register = "false"
factory.id = "7"
clock.quantum-limit = "8192"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
client.id = "88"
object.id = "91"
object.serial = "100"
node.driver-id = "56"
Formats:
pcm