Innomaker Raspberry Pi HiFi DAC Mini HAT

Post Reply
timunchy
Posts: 3
Joined: Tue Nov 04, 2025 2:02 am

Innomaker Raspberry Pi HiFi DAC Mini HAT

Post by timunchy »

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
default on bootup config
default on bootup config
qpwrgraph.PNG (199.25 KiB) Viewed 348 times
pavucontrol playback.PNG
pavucontrol playback.PNG (109.57 KiB) Viewed 348 times
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?
timunchy
Posts: 3
Joined: Tue Nov 04, 2025 2:02 am

Re: Innomaker Raspberry Pi HiFi DAC Mini HAT

Post by timunchy »

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

Re: Innomaker Raspberry Pi HiFi DAC Mini HAT

Post by hudiy »

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

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 &
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/
timunchy
Posts: 3
Joined: Tue Nov 04, 2025 2:02 am

Re: Innomaker Raspberry Pi HiFi DAC Mini HAT

Post by timunchy »

confirmed working- I had to remove master="$EC_SINK" and add master_sink but that worked!
thank you!
Post Reply