sof-soundwire: cs42l43 headphone output is muted due to missing Headphone Switch in UCM

GitHub issues - edited <[email protected]> Sun, 5 Jul 2026 12:18:25 +0200 (CEST)
Newsgroups org.alsa-project.alsa-devel
Message-ID <[email protected]>
alsa-project/alsa-ucm-conf issue #804 was edited from Natializd:

Hi,
    
    I'm using a Dell Pro Max 16 Plus (Intel 800 Series ACE / cs42l43
    codec via SoundWire) running Ubuntu 26.04 with kernel 7.0.0-27-generic.
    
    When booting up or logging in with headphones plugged in, I get no
    sound output. The desktop environment shows that headphones are
    selected and unmuted, but there is complete silence.
    
    Checking the mixer status using amixer shows that the "Headphone Switch"
    control on card 1 remains off:
    $ amixer -c 1 cget name='Headphone Switch'
    numid=90,iface=MIXER,name='Headphone Switch'
      ; type=BOOLEAN,access=rw------,values=1
      : values=off
    
    If I manually toggle it on, sound starts working immediately:
    $ amixer -c 1 cset name='Headphone Switch' on
    
    The root cause is that `/usr/share/alsa/ucm2/sof-soundwire/cs42l43.conf`
    is missing mappings for the Headphone Switch in both the sequences
    and values.
    
    I manually edited the configuration file under SectionDevice."Headphones"
    from this:
    
    
    EnableSequence [
        cset "name='cs42l43 Headphone L Input 1' 'DP5RX1'"
        cset "name='cs42l43 Headphone R Input 1' 'DP5RX2'"
    ]
    
    DisableSequence [
        cset "name='cs42l43 Headphone L Input 1' 'None'"
        cset "name='cs42l43 Headphone R Input 1' 'None'"
    ]

    Value {
        PlaybackPriority 200
        PlaybackPCM "hw:${CardId},0"
        PlaybackVolume "cs42l43 Headphone Digital Volume"
        JackControl "Headphone Jack"
    }


    To this:


    EnableSequence [
        cset "name='cs42l43 Headphone L Input 1' 'DP5RX1'"
        cset "name='cs42l43 Headphone R Input 1' 'DP5RX2'"
        cset "name='Headphone Switch' on"
    ]

    DisableSequence [
        cset "name='cs42l43 Headphone L Input 1' 'None'"
        cset "name='cs42l43 Headphone R Input 1' 'None'"
        cset "name='Headphone Switch' off"
    ]

    Value {
        PlaybackPriority 200
        PlaybackPCM "hw:${CardId},0"
        PlaybackVolume "cs42l43 Headphone Digital Volume"
        PlaybackSwitch "Headphone Switch"
        JackControl "Headphone Jack"
    }


    After restarting PipeWire/WirePlumber, the operating system now
    correctly manages the hardware switch automatically and the audio
    works on boot/login.

Issue URL     : https://github.com/alsa-project/alsa-ucm-conf/issues/804
Repository URL: https://github.com/alsa-project/alsa-ucm-conf