alsa-project / alsa-ucm-conf

ALSA Use Case Manager configuration
BSD 3-Clause "New" or "Revised" License
72 stars 211 forks source link

pulseaudio can't load configuration for snd_hda_intel #99

Open hzhuang1 opened 3 years ago

hzhuang1 commented 3 years ago

In v1.2.2, the content of HDA-Intel.conf is in below. v1.2.2 is widely used, such as in ubuntu 20.04.

Syntax 3

Define.Use ""  # a non-empty string to use UCM configuration for HDA devices

Define.AcpCardId "$${CardIdByName:acp}"

With this content, pulseaudio can't load configuration from UCM. Then I tried to edit the content. Change it to

Define.Use "2"

or

Define.Use "3"

Pulseaudio worked with "options snd-hda-intel probe_mask=1" on DELL laptop.

My question is what's the real meaning of Define.Use at here. Why the default value of Define.Use is empty string? Even in latest code, the Define.Use is also an empty string.

perexg commented 3 years ago

Empty Use means fallback to the legacy configuration (no UCM). Why do you need UCM config for your hardware?

hzhuang1 commented 3 years ago

With Define.Use "", the log of "pacmd list-cards" is in below.

hzhuang1@E7270:~$ pacmd list-cards
1 card(s) available.
    index: 0
    name: <alsa_card.pci-0000_00_1f.3>
    driver: <module-alsa-card.c>
    owner module: 7
    properties:
        alsa.card = "0"
        alsa.card_name = "HDA Intel PCH"
        alsa.long_card_name = "HDA Intel PCH at 0xe1348000 irq 135"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:1f.3"
        sysfs.path = "/devices/pci0000:00/0000:00:1f.3/sound/card0"
        device.bus = "pci"
        device.vendor.id = "8086"
        device.vendor.name = "Intel Corporation"
        device.product.id = "9d70"
        device.product.name = "Sunrise Point-LP HD Audio"
        device.form_factor = "internal"
        device.string = "0"
        device.description = "Built-in Audio"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    profiles:
        input:analog-stereo: Analog Stereo Input (priority 60, available: unknown)
        output:analog-stereo: Analog Stereo Output (priority 6000, available: no)
        output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (priority 6060, available: no)
        off: Off (priority 0, available: unknown)
    active profile: <input:analog-stereo>
    sources:
        alsa_input.pci-0000_00_1f.3.analog-stereo/#0: Built-in Audio Analog Stereo
    ports:
        B-analog-output-lineout: Line Out (priority 9900, latency offset 0 usec, available: no)
            properties:

hzhuang1@E7270:~$ 

With Define.Use "3", the log of "pacmd list-cards" is in below.

hzhuang1@E7270:~$ pacmd list-cards
1 card(s) available.
    index: 0
    name: <alsa_card.pci-0000_00_1f.3>
    driver: <module-alsa-card.c>
    owner module: 7
    properties:
        alsa.card = "0"
        alsa.card_name = "HDA Intel PCH"
        alsa.long_card_name = "HDA Intel PCH at 0xe1348000 irq 135"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:1f.3"
        sysfs.path = "/devices/pci0000:00/0000:00:1f.3/sound/card0"
        device.bus = "pci"
        device.vendor.id = "8086"
        device.vendor.name = "Intel Corporation"
        device.product.id = "9d70"
        device.product.name = "Sunrise Point-LP HD Audio"
        device.form_factor = "internal"
        device.string = "0"
        device.description = "Built-in Audio"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    profiles:
        HiFi: Play HiFi quality Music (priority 8000, available: unknown)
        off: Off (priority 0, available: unknown)
    active profile: <HiFi>
    sinks:
        alsa_output.pci-0000_00_1f.3.HiFi__hw_PCH__sink/#0: Built-in Audio Speaker + Headphones
    sources:
        alsa_output.pci-0000_00_1f.3.HiFi__hw_PCH__sink.monitor/#0: Monitor of Built-in Audio Speaker + Headphones
        alsa_input.pci-0000_00_1f.3.HiFi__hw_PCH__source/#1: Built-in Audio Headphones Stereo Microphone
    ports:
        [Out] Speaker: Speaker (priority 100, latency offset 0 usec, available: unknown)
            properties:

        [Out] Headphones: Headphones (priority 200, latency offset 0 usec, available: yes)
            properties:

        [In] Mic2: Headphones Stereo Microphone (priority 200, latency offset 0 usec, available: unknown)
            properties:

hzhuang1@E7270:~$ 

For the default configuration, pulseaudio can't work at all.

perexg commented 3 years ago

Then the pulseaudio legacy config probably didn't find the right controls. You may check the pulseaudio verbose output and modify /usr/share/pulseaudio/alsa-mixer/paths/ config to detect your hardware.

It's possible to add support for all HDA hardware to UCM, but there's no ETA.

hzhuang1 commented 3 years ago

Then the pulseaudio legacy config probably didn't find the right controls. You may check the pulseaudio verbose output and modify /usr/share/pulseaudio/alsa-mixer/paths/ config to detect your hardware.

OK. I'll try it. It's possible to add support for all HDA hardware to UCM, but there's no ETA.

Excuse me, what does ETA stand for at here? I'm not familiar with the abbreviation.

perexg commented 3 years ago

It's possible to add support for all HDA hardware to UCM, but there's no ETA.

Excuse me, what does ETA stand for at here? I'm not familiar with the abbreviation.

I meant this: https://www.allacronyms.com/ETA/Estimated_Time_of_Availability

hzhuang1 commented 3 years ago

I restored to Define.Use "". Then I found that pulseaudio is trying to parse /usr/share/pulseaudio/alsa-mixer/profile-sets/B-default.conf without UCM from verbose log. And there's default.conf in the same directory.

If I removed B-default.conf, pulseaudio can't work. I have to create a symbol link from default.conf to B-default.conf instead. Then it works.

Thanks for your suggestion. By the way, do you know why pulseaudio tries to parse B-default.conf?