PI5 Audio

Olli
Posts: 18
Joined: Mon Nov 10, 2025 3:06 pm

PI5 Audio

Post by Olli »

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?
hudiy
Site Admin
Posts: 440
Joined: Mon Jul 14, 2025 7:42 pm

Re: PI5 Audio

Post by hudiy »

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).
Olli
Posts: 18
Joined: Mon Nov 10, 2025 3:06 pm

Re: PI5 Audio

Post by Olli »

I installed qpwgraph and got the following image.
Attachments
IMG_4733.jpeg
IMG_4733.jpeg (2.21 MiB) Viewed 1447 times
hudiy
Site Admin
Posts: 440
Joined: Mon Jul 14, 2025 7:42 pm

Re: PI5 Audio

Post by hudiy »

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?
Olli
Posts: 18
Joined: Mon Nov 10, 2025 3:06 pm

Re: PI5 Audio

Post by Olli »

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.
Attachments
WIN_20251115_16_22_32_Pro.jpg
WIN_20251115_16_22_32_Pro.jpg (4.09 MiB) Viewed 1429 times
hudiy
Site Admin
Posts: 440
Joined: Mon Jul 14, 2025 7:42 pm

Re: PI5 Audio

Post by hudiy »

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?
Olli
Posts: 18
Joined: Mon Nov 10, 2025 3:06 pm

Re: PI5 Audio

Post by Olli »

How can I save a working routing as the default setting so that it is loaded as the default on restart?
hudiy
Site Admin
Posts: 440
Joined: Mon Jul 14, 2025 7:42 pm

Re: PI5 Audio

Post by hudiy »

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?
You can check PipeWire and WirePlumber docs if there is anything about restoring custom routing:

https://gitlab.freedesktop.org/pipewire ... ikis/pages
https://gitlab.freedesktop.org/pipewire ... wikis/home
https://docs.pipewire.org/
https://pipewire.pages.freedesktop.org/wireplumber/
Olli
Posts: 18
Joined: Mon Nov 10, 2025 3:06 pm

Re: PI5 Audio

Post by Olli »

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.
Attachments
WIN_20251115_17_59_00_Pro.jpg
WIN_20251115_17_59_00_Pro.jpg (3.98 MiB) Viewed 1406 times
Olli
Posts: 18
Joined: Mon Nov 10, 2025 3:06 pm

Re: PI5 Audio

Post by Olli »

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
Post Reply