Skip to content

[Bug] Audio applet mouse slider has no effect on headphone volume (HDA card with multiple sinks) #1411

@grissom-rasp

Description

@grissom-rasp

Summary

On an Intel HDA card (sof-hda-dsp) that exposes headphones + 3 HDMI/DP sinks under the same PipeWire device.id, the COSMIC audio applet volume mouse slider has no audible effect on the headphone output. The slider moves visually, but the actual audio level does not change.

Keyboard Fn volume keys work correctly — only the applet's mouse slider is affected.

Relationship to #1388

This appears to be the same root cause as #1388 (ActiveRoute handler picks the wrong node from device_ids when multiple sinks share a device). The difference is:

Steps to reproduce

  1. Use a laptop with an Intel HDA audio controller that exposes multiple sinks under one device:
    Sinks:
        48. ... HDMI / DisplayPort 3 Output [vol: 0.64]
        56. ... HDMI / DisplayPort 2 Output [vol: 0.97]
        57. ... HDMI / DisplayPort 1 Output [vol: 0.46]
    *   58. ... Headphones                  [vol: 1.00]
    
    All four sinks share PipeWire device 49 (Tiger Lake-LP Smart Sound Technology Audio Controller).
  2. Play audio through headphones.
  3. Open the COSMIC audio applet and drag the volume slider with the mouse.
  4. Observed: Slider moves visually; actual headphone volume does not change.
  5. Use Fn+VolumeDown/Up keyboard keys instead.
  6. Observed: Audio volume changes as expected.

Discrimination tests

To isolate the broken layer, I ran three tests while audio was playing:

Layer Command Audible change?
ALSA direct amixer -c 0 set 'Headphone' 5% / 100% YES
PipeWire wpctl set-volume 58 0.05 / 1.0 YES
COSMIC applet mouse slider Drag slider min→max NO
COSMIC Fn keys Fn+VolumeUp/Down YES

This confirms the break is specifically in the applet's slider → PipeWire path, not in the audio stack.

Probable root cause

Same as #1388: the ActiveRoute handler in subscriptions/sound/src/lib.rs iterates device_ids (hash-based order) and picks the first node matching the device — which on a multi-sink card may be an HDMI output rather than the active headphone sink. The Fn keys bypass this path (they go through cosmic-osdwpctl @DEFAULT_AUDIO_SINK@), which is why they work.

Environment

  • OS: CachyOS Linux (Arch-based), kernel 7.0.8-1-cachyos
  • COSMIC: 1.0.13-1.1 (cosmic-applets, cosmic-session, cosmic-comp)
  • PipeWire: 1.6.5, WirePlumber: 0.5.14
  • Hardware: HP EliteBook 840 Aero G8 (SBKPF), Intel Tiger Lake-LP Smart Sound Technology Audio Controller
  • Codec: Realtek ALC285 (subsystem 103c:884b), driver: sof-hda-dsp
  • ALSA card: sof-hda-dsp (card 0), UCM profile: HiFi

Workaround

Using wpctl set-volume <sink-id> <level> or Fn keys works. The applet mouse slider remains non-functional for volume changes on this configuration.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions