having some big issues currently getting my DAC to work nicely with hudiy
been reading through the forums trying to get an idea of what might be the issue, but it seems to be that hudiy cant pick the correct input
this is the current bootup config that is not working
i've confirmed if I set the hudiy_equalizer_sink output to Built-in Audio Pro, that it plays fine and also has volume control, but I am not sure if that is the correct way to do it, and also on reboot it just re-configures back to not working
what can I do to get it to detect the correct output?
Innomaker Raspberry Pi HiFi DAC Mini HAT
Re: Innomaker Raspberry Pi HiFi DAC Mini HAT
Code: Select all
pactl list sinks
Sink #64
State: RUNNING
Name: alsa_output.platform-soc_107c000000_sound.pro-output-0
Description: Built-in Audio Pro
Driver: PipeWire
Sample Specification: s32le 2ch 48000Hz
Channel Map: aux0,aux1
Owner Module: 4294967295
Mute: no
Volume: aux0: 65536 / 100% / 0.00 dB, aux1: 65536 / 100% / 0.00 dB
balance 0.00
Base Volume: 65536 / 100% / 0.00 dB
Monitor Source: alsa_output.platform-soc_107c000000_sound.pro-output-0.monitor
Latency: 0 usec, configured 0 usec
Flags: HARDWARE DECIBEL_VOLUME LATENCY
Properties:
alsa.card = "0"
alsa.card_name = "BossDAC"
alsa.class = "generic"
alsa.device = "0"
alsa.driver_name = "snd_soc_allo_boss_dac"
alsa.id = "Boss DAC HiFi [Master] pcm512x-hifi-0"
alsa.long_card_name = "BossDAC"
alsa.name = "Boss DAC HiFi [Master] pcm512x-hifi-0"
alsa.resolution_bits = "32"
alsa.subclass = "generic-mix"
alsa.subdevice = "0"
alsa.subdevice_name = "subdevice #0"
alsa.sync.id = "00000000:00000000:00000000:00000000"
api.alsa.card.longname = "BossDAC"
api.alsa.card.name = "BossDAC"
api.alsa.path = "hw:0,0"
api.alsa.pcm.card = "0"
api.alsa.pcm.stream = "playback"
audio.channels = "2"
audio.position = "AUX0,AUX1"
card.profile.device = "0"
clock.name = "api.alsa.0"
device.api = "alsa"
device.class = "sound"
device.id = "59"
device.profile.description = "Pro"
device.profile.name = "pro-output-0"
device.profile.pro = "true"
device.routes = "0"
factory.name = "api.alsa.pcm.sink"
media.class = "Audio/Sink"
device.description = "Built-in Audio"
node.name = "alsa_output.platform-soc_107c000000_sound.pro-output-0"
node.nick = "Boss DAC HiFi [Master] pcm512x-hifi-0"
node.pause-on-idle = "false"
object.path = "alsa:acp:BossDAC:0:playback"
port.group = "playback"
priority.driver = "1000"
priority.session = "1000"
factory.id = "19"
clock.quantum-limit = "8192"
client.id = "36"
node.driver = "true"
node.loop.name = "data-loop.0"
library.name = "audioconvert/libspa-audioconvert"
object.id = "64"
object.serial = "64"
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 = "0"
api.alsa.use-acp = "true"
api.dbus.ReserveDevice1 = "Audio0"
device.bus_path = "platform-soc@107c000000:sound"
device.enum.api = "udev"
device.form_factor = "internal"
device.icon_name = "audio-card-analog"
device.name = "alsa_card.platform-soc_107c000000_sound"
device.nick = "BossDAC"
device.plugged.usec = "3506954"
device.subsystem = "sound"
sysfs.path = "/devices/platform/soc@107c000000/soc@107c000000:sound/sound/card0"
device.string = "0"
Formats:
pcm
Sink #80
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: 29491 / 45% / -20.81 dB, front-right: 29491 / 45% / -20.81 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-880-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 = "68"
object.id = "69"
object.serial = "80"
node.driver-id = "64"
Formats:
pcm
Sink #95
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: 32768 / 50% / -18.06 dB, front-right: 32768 / 50% / -18.06 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-880-14"
node.link-group = "echo-cancel-880-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 = "79"
object.id = "81"
object.serial = "95"
node.driver-id = "64"
Formats:
pcmRe: Innomaker Raspberry Pi HiFi DAC Mini HAT
Hello,
Audio stack in Raspberry Pi OS is handled by PipeWire and WirePlumber. Once the routing is configured, WirePlumber is responsible for restoring it after a restart and applying the last used volume levels.
hudiy_equalizer_sink and echo_cancel sink are PipeWire modules that are loaded from $HOME/.hudiy/share/hudiy_startup.sh
You can try setting master directly as your DAC and see if WirePlumber will be able to restore the routing after a restart. Please modify the hudiy_startup.sh as below and check what is the behavior
You can also check the PipeWire and WirePlumber GitLab pages to see if similar issues with your DAC have been reported:
https://gitlab.freedesktop.org/pipewire ... /-/issues/
https://gitlab.freedesktop.org/pipewire ... /-/issues/
Audio stack in Raspberry Pi OS is handled by PipeWire and WirePlumber. Once the routing is configured, WirePlumber is responsible for restoring it after a restart and applying the last used volume levels.
hudiy_equalizer_sink and echo_cancel sink are PipeWire modules that are loaded from $HOME/.hudiy/share/hudiy_startup.sh
You can try setting master directly as your DAC and see if WirePlumber will be able to restore the routing after a restart. Please modify the hudiy_startup.sh as below and check what is the behavior
Code: Select all
#!/bin/bash
EC_SINK="echo_cancel_sink"
EC_SOURCE="echo_cancel_source"
EQ_SINK="hudiy_equalizer_sink"
sink_exists() { pactl list short sinks 2>/dev/null | awk '{print $2}' | grep -Fxq "$1"; }
until pactl info >/dev/null 2>&1; do sleep 0.1; done
# Gives PipeWire and WirePlumber additional time to detect all audio devices
sleep 1
sink_exists "$EQ_SINK" || pactl load-module module-ladspa-sink sink_name="$EQ_SINK" master="$EC_SINK" plugin=hudiy_equalizer label=hudiy_equalizer control=0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
sink_exists "$EC_SINK" || pactl load-module module-echo-cancel aec_method=webrtc aec_args=\"voice_detection=false\" source_name="$EC_SOURCE" sink_name="$EC_SINK" sink_master=alsa_output.platform-soc_107c000000_sound.pro-output-0
pactl set-default-sink "$EQ_SINK"
pactl set-default-source "$EC_SOURCE"
$HOME/.hudiy/share/hudiy &
https://gitlab.freedesktop.org/pipewire ... /-/issues/
https://gitlab.freedesktop.org/pipewire ... /-/issues/
Re: Innomaker Raspberry Pi HiFi DAC Mini HAT
confirmed working- I had to remove master="$EC_SINK" and add master_sink but that worked!
thank you!
thank you!