Home Assistant Supervised - pulseaudio 100% CPU

I followed the (excellent) instructions on installing Home Assistant supervised on my Alta, which worked fine…except that pulseaudio is now running at 100% CPU.

I’m trying to understand what needs to be fixed in this. Googling was a bit tricky as it’s fairly generic, and the issues I could find on home-assistant/plugin-audio were closed or required some specific changes to the plugin.

Below might make more sense for someone else?

ha audio logs:

W: [pulseaudio] module-udev-detect.c: Failed to open /proc/asound/card0: No such file or directory
E: [pulseaudio] module-alsa-card.c: Failed to find a working profile.
E: [pulseaudio] module.c: Failed to load module "module-alsa-card" (argument: "device_id="0" name="platform-sound" card_name="alsa_card.platform-sound" namereg_fail=false tsched=yes fixed_latency_range=no ignore_dB=no deferred_volume=yes use_ucm=yes avoid_resampling=no card_properties="module-udev-detect.discovered=1""): initialization failed.

ha audio info:

# ha audio info
audio:
  application: []
  card: []
  input: []
  output:
  - applications: []
    card: null
    default: true
    description: Dummy Output
    index: 0
    mute: false
    name: auto_null
    volume: 1
host: 172.30.32.4
update_available: false
version: 2023.12.0
version_latest: 2023.12.0

So it can’t identify which audio interface exists? If I exec into the container, /proc/asound/card0 is empty.

However, we have an audio interface?

# amixer
Simple mixer control 'ACODEC',0
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 255
  Mono:
  Front Left: Playback 139 [55%] [-43.33dB] [on]
  Front Right: Playback 139 [55%] [-43.33dB] [on]
Simple mixer control 'ACODEC Left DAC Sel',0
  Capabilities: enum
  Items: 'Left' 'Right'
  Item0: 'Left'
Simple mixer control 'ACODEC Mute Ramp',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'ACODEC Playback Channel Mode',0
  Capabilities: enum
  Items: 'Stereo' 'Mono'
  Item0: 'Stereo'
Simple mixer control 'ACODEC Ramp Rate',0
  Capabilities: enum
  Items: 'Fast' 'Slow'
  Item0: 'Fast'
Simple mixer control 'ACODEC Right DAC Sel',0
  Capabilities: enum
  Items: 'Right' 'Left'
  Item0: 'Right'
Simple mixer control 'ACODEC Unmute Ramp',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'ACODEC Volume Ramp',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'FRDDR_A SINK 1 SEL',0
  Capabilities: enum
  Items: 'OUT 0' 'OUT 1' 'OUT 2' 'OUT 3' 'OUT 4' 'OUT 5' 'OUT 6' 'OUT 7'
  Item0: 'OUT 0'
Simple mixer control 'FRDDR_A SINK 2 SEL',0
  Capabilities: enum
  Items: 'OUT 0' 'OUT 1' 'OUT 2' 'OUT 3' 'OUT 4' 'OUT 5' 'OUT 6' 'OUT 7'
  Item0: 'OUT 0'
Simple mixer control 'FRDDR_A SINK 3 SEL',0
  Capabilities: enum
  Items: 'OUT 0' 'OUT 1' 'OUT 2' 'OUT 3' 'OUT 4' 'OUT 5' 'OUT 6' 'OUT 7'
  Item0: 'OUT 0'
Simple mixer control 'FRDDR_A SRC 1 EN',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'FRDDR_A SRC 2 EN',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'FRDDR_A SRC 3 EN',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'FRDDR_B SINK 1 SEL',0
  Capabilities: enum
  Items: 'OUT 0' 'OUT 1' 'OUT 2' 'OUT 3' 'OUT 4' 'OUT 5' 'OUT 6' 'OUT 7'
  Item0: 'OUT 0'
Simple mixer control 'FRDDR_B SINK 2 SEL',0
  Capabilities: enum
  Items: 'OUT 0' 'OUT 1' 'OUT 2' 'OUT 3' 'OUT 4' 'OUT 5' 'OUT 6' 'OUT 7'
  Item0: 'OUT 0'
Simple mixer control 'FRDDR_B SINK 3 SEL',0
  Capabilities: enum
  Items: 'OUT 0' 'OUT 1' 'OUT 2' 'OUT 3' 'OUT 4' 'OUT 5' 'OUT 6' 'OUT 7'
  Item0: 'OUT 0'
Simple mixer control 'FRDDR_B SRC 1 EN',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'FRDDR_B SRC 2 EN',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'FRDDR_B SRC 3 EN',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'FRDDR_C SINK 1 SEL',0
  Capabilities: enum
  Items: 'OUT 0' 'OUT 1' 'OUT 2' 'OUT 3' 'OUT 4' 'OUT 5' 'OUT 6' 'OUT 7'
  Item0: 'OUT 0'
Simple mixer control 'FRDDR_C SINK 2 SEL',0
  Capabilities: enum
  Items: 'OUT 0' 'OUT 1' 'OUT 2' 'OUT 3' 'OUT 4' 'OUT 5' 'OUT 6' 'OUT 7'
  Item0: 'OUT 0'
Simple mixer control 'FRDDR_C SINK 3 SEL',0
  Capabilities: enum
  Items: 'OUT 0' 'OUT 1' 'OUT 2' 'OUT 3' 'OUT 4' 'OUT 5' 'OUT 6' 'OUT 7'
  Item0: 'OUT 0'
Simple mixer control 'FRDDR_C SRC 1 EN',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'FRDDR_C SRC 2 EN',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'FRDDR_C SRC 3 EN',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'Onboard DAC output',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 0 [0%]
  Front Right: 0 [0%]
Simple mixer control 'TDMIN_A SRC SEL',0
  Capabilities: enum
  Items: 'IN 0' 'IN 1' 'IN 2' 'IN 3' 'IN 4' 'IN 5' 'IN 6' 'IN 7' 'IN 8' 'IN 9' 'IN 10' 'IN 11' 'IN 12' 'IN 13' 'IN 14' 'IN 15'
  Item0: 'IN 0'
Simple mixer control 'TDMIN_B SRC SEL',0
  Capabilities: enum
  Items: 'IN 0' 'IN 1' 'IN 2' 'IN 3' 'IN 4' 'IN 5' 'IN 6' 'IN 7' 'IN 8' 'IN 9' 'IN 10' 'IN 11' 'IN 12' 'IN 13' 'IN 14' 'IN 15'
  Item0: 'IN 0'
Simple mixer control 'TDMIN_C SRC SEL',0
  Capabilities: enum
  Items: 'IN 0' 'IN 1' 'IN 2' 'IN 3' 'IN 4' 'IN 5' 'IN 6' 'IN 7' 'IN 8' 'IN 9' 'IN 10' 'IN 11' 'IN 12' 'IN 13' 'IN 14' 'IN 15'
  Item0: 'IN 0'
Simple mixer control 'TDMOUT_A Gain Enable',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'TDMOUT_A Lane 0',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 0 [0%]
  Front Right: 0 [0%]
Simple mixer control 'TDMOUT_A Lane 1',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 0 [0%]
  Front Right: 0 [0%]
Simple mixer control 'TDMOUT_A Lane 2',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 0 [0%]
  Front Right: 0 [0%]
Simple mixer control 'TDMOUT_A Lane 3',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 0 [0%]
  Front Right: 0 [0%]
Simple mixer control 'TDMOUT_A SRC SEL',0
  Capabilities: enum
  Items: 'IN 0' 'IN 1' 'IN 2'
  Item0: 'IN 0'
Simple mixer control 'TDMOUT_B Gain Enable',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'TDMOUT_B Lane 0',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 0 [0%]
  Front Right: 0 [0%]
Simple mixer control 'TDMOUT_B Lane 1',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 0 [0%]
  Front Right: 0 [0%]
Simple mixer control 'TDMOUT_B Lane 2',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 0 [0%]
  Front Right: 0 [0%]
Simple mixer control 'TDMOUT_B Lane 3',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 0 [0%]
  Front Right: 0 [0%]
Simple mixer control 'TDMOUT_B SRC SEL',0
  Capabilities: enum
  Items: 'IN 0' 'IN 1' 'IN 2'
  Item0: 'IN 0'
Simple mixer control 'TDMOUT_C Gain Enable',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'TDMOUT_C Lane 0',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 0 [0%]
  Front Right: 0 [0%]
Simple mixer control 'TDMOUT_C Lane 1',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 0 [0%]
  Front Right: 0 [0%]
Simple mixer control 'TDMOUT_C Lane 2',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 0 [0%]
  Front Right: 0 [0%]
Simple mixer control 'TDMOUT_C Lane 3',0
  Capabilities: volume
  Playback channels: Front Left - Front Right
  Capture channels: Front Left - Front Right
  Limits: 0 - 255
  Front Left: 0 [0%]
  Front Right: 0 [0%]
Simple mixer control 'TDMOUT_C SRC SEL',0
  Capabilities: enum
  Items: 'IN 0' 'IN 1' 'IN 2'
  Item0: 'IN 0'
Simple mixer control 'TOACODEC Lane Select',0
  Capabilities: volume volume-joined
  Playback channels: Mono
  Capture channels: Mono
  Limits: 0 - 3
  Mono: 0 [0%]
Simple mixer control 'TOACODEC OUT EN',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'TOACODEC SRC',0
  Capabilities: enum
  Items: 'I2S A' 'I2S B' 'I2S C'
  Item0: 'I2S A'
Simple mixer control 'TODDR_A SRC SEL',0
  Capabilities: enum
  Items: 'IN 0' 'IN 1' 'IN 2' 'IN 3' 'IN 4' 'IN 5' 'IN 6' 'IN 7'
  Item0: 'IN 0'
Simple mixer control 'TODDR_B SRC SEL',0
  Capabilities: enum
  Items: 'IN 0' 'IN 1' 'IN 2' 'IN 3' 'IN 4' 'IN 5' 'IN 6' 'IN 7'
  Item0: 'IN 0'
Simple mixer control 'TODDR_C SRC SEL',0
  Capabilities: enum
  Items: 'IN 0' 'IN 1' 'IN 2' 'IN 3' 'IN 4' 'IN 5' 'IN 6' 'IN 7'
  Item0: 'IN 0'
Simple mixer control 'TOHDMITX',0
  Capabilities: pswitch pswitch-joined
  Playback channels: Mono
  Mono: Playback [off]
Simple mixer control 'TOHDMITX I2S SRC',0
  Capabilities: enum
  Items: 'I2S A' 'I2S B' 'I2S C'
  Item0: 'I2S A'
Simple mixer control 'TOHDMITX SPDIF SRC',0
  Capabilities: enum
  Items: 'SPDIF A' 'SPDIF B'
  Item0: 'SPDIF A'

Also, if I inspect the container, the /proc/asound is masked? How does pulseaudio interact with hardware, dbus?

"MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware",
                "/sys/devices/virtual/powercap"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ],

Any ideas how to move forward? It feels stupid to waste CPU time on a hanged process…

I don’t know whether you’re using Bullseye or Bookworm as your Debian base (from those Libre Computer instructions) but if it’s Bookworm, the default sound infra is PipeWire - according to RPi Documentation:

“The PipeWire backend was introduced in Bookworm. PulseAudio was used in older versions of Rasperry Pi OS.”

I don’t know whether that actually changes anything in how you’d approach this but thought I’d throw it out there in case it helps?

As @AltaTHD mentioned, pipewire and pulseaudio are fighting over which one controls the sound card. Use one or the other, not both. We recommend pipewire since it is the future.

1 Like