PulseAudio não reconhece o Intel HDA após a atualização para o teste Debian (Buster)

1

Eu notei um problema durante o verão após a atualização do Debian 9 estável para o teste Debian 10: o PulseAudio não mais reconhecia meus dispositivos de áudio Intel HDA. Na época, eu era capaz de mudar para o áudio do meu monitor conectado via nVidia HDMI, então eu contornei o problema na esperança de que uma atualização futura pudesse consertá-lo. Eles não têm. Avanço rápido de alguns meses e eu reorganizei meu espaço de trabalho e agora preciso fazer com que o Intel HDA funcione novamente.

Aqui está o que eu vi até agora ...

Debian 10 Testing

O kernel vê isso:

# dmesg | grep HDA
[  +0.005509] input: HDA Intel PCH Front Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input17
[  +0.000073] input: HDA Intel PCH Rear Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input18
[  +0.000057] input: HDA Intel PCH Line as /devices/pci0000:00/0000:00:1b.0/sound/card0/input19
[  +0.000054] input: HDA Intel PCH Line Out Front as /devices/pci0000:00/0000:00:1b.0/sound/card0/input20
[  +0.000052] input: HDA Intel PCH Line Out Surround as /devices/pci0000:00/0000:00:1b.0/sound/card0/input21
[  +0.000051] input: HDA Intel PCH Line Out CLFE as /devices/pci0000:00/0000:00:1b.0/sound/card0/input22
[  +0.000053] input: HDA Intel PCH Line Out Side as /devices/pci0000:00/0000:00:1b.0/sound/card0/input23
[  +0.000058] input: HDA Intel PCH Front Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input24
[followed by NVidia HDMI audio devices that are recognized]

# lspci -nnk | grep -A2 Audio
00:1b.0 Audio device [0403]: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller [8086:1e20] (rev 04)
    Subsystem: Gigabyte Technology Co., Ltd 7 Series/C216 Chipset Family High Definition Audio Controller [1458:a002]
    Kernel driver in use: snd_hda_intel
    Kernel modules: snd_hda_intel
[followed by NVidia HDMI audio devices that are recognized]

ALSA vê:

# aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: Generic Analog [Generic Analog]
  Subdevices: 0/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: Generic Digital [Generic Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
[followed by NVidia HDMI audio devices that are recognized]

# aplay -L | grep PCH
default:CARD=PCH
    HDA Intel PCH, Generic Analog
sysdefault:CARD=PCH
    HDA Intel PCH, Generic Analog
front:CARD=PCH,DEV=0
    HDA Intel PCH, Generic Analog
surround21:CARD=PCH,DEV=0
    HDA Intel PCH, Generic Analog
surround40:CARD=PCH,DEV=0
    HDA Intel PCH, Generic Analog
surround41:CARD=PCH,DEV=0
    HDA Intel PCH, Generic Analog
surround50:CARD=PCH,DEV=0
    HDA Intel PCH, Generic Analog
surround51:CARD=PCH,DEV=0
    HDA Intel PCH, Generic Analog
surround71:CARD=PCH,DEV=0
    HDA Intel PCH, Generic Analog
iec958:CARD=PCH,DEV=0
    HDA Intel PCH, Generic Digital
dmix:CARD=PCH,DEV=0
    HDA Intel PCH, Generic Analog
dmix:CARD=PCH,DEV=1
    HDA Intel PCH, Generic Digital
dsnoop:CARD=PCH,DEV=0
    HDA Intel PCH, Generic Analog
dsnoop:CARD=PCH,DEV=1
    HDA Intel PCH, Generic Digital
hw:CARD=PCH,DEV=0
    HDA Intel PCH, Generic Analog
hw:CARD=PCH,DEV=1
    HDA Intel PCH, Generic Digital
plughw:CARD=PCH,DEV=0
    HDA Intel PCH, Generic Analog
plughw:CARD=PCH,DEV=1
    HDA Intel PCH, Generic Digital

speaker-test reproduz áudio normalmente como aplay -D padrão: CARD = PCH /usr/share/sounds/alsa/Front_Left.wav

No entanto, o PulseAudio não vê o dispositivo:

$ pacmd list-sinks
1 sink(s) available.
  * index: 0
    name: <auto_null>
    driver: <module-null-sink.c>
    flags: DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
    state: SUSPENDED
    suspend cause: IDLE
    priority: 1000
    volume: front-left: 55705 /  85% / -4.24 dB,   front-right: 55705 /  85% / -4.24 dB
            balance 0.00
    base volume: 65536 / 100% / 0.00 dB
    volume steps: 65537
    muted: no
    current latency: 0.00 ms
    max request: 344 KiB
    max rewind: 344 KiB
    monitor source: 0
    sample spec: s16le 2ch 44100Hz
    channel map: front-left,front-right
                 Stereo
    used by: 0
    linked by: 0
    configured latency: 0.00 ms; range is 0.50 .. 2000.00 ms
    module: 16
    properties:
        device.description = "Dummy Output"
        device.class = "abstract"
        device.icon_name = "audio-card"

Quando vou para Configurações de som, tudo o que vejo é o dispositivo de saída fictício. (Os dispositivos da nVidia não estão mais listados aqui porque, ao reorganizar as coisas, estou usando um monitor diferente sem áudio, por isso não há nenhum dispositivo de áudio HDMI conectado atualmente.)

Eu tentei limpar a configuração do PulseAudio pensando que poderia ter algum legado perdido por meio de:

rm ~/.pulse/* ~/.config/pulse/*

Debian 9 Stable

Eu tenho outra partição nesta máquina que ainda está rodando Debian 9 stable, onde o Intel HDA trabalha com o PulseAudio, e parece haver diferenças nos drivers ALSA vs. Debian 10, então abaixo estão as diferenças que eu notei .. .

# aplay -l

**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC887-VD Analog [ALC887-VD Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC887-VD Digital [ALC887-VD Digital]
  Subdevices: 0/1
  Subdevice #0: subdevice #0

# aplay -L | grep PCH

sysdefault:CARD=PCH
    HDA Intel PCH, ALC887-VD Analog
front:CARD=PCH,DEV=0
    HDA Intel PCH, ALC887-VD Analog
surround21:CARD=PCH,DEV=0
    HDA Intel PCH, ALC887-VD Analog
surround40:CARD=PCH,DEV=0
    HDA Intel PCH, ALC887-VD Analog
surround41:CARD=PCH,DEV=0
    HDA Intel PCH, ALC887-VD Analog
surround50:CARD=PCH,DEV=0
    HDA Intel PCH, ALC887-VD Analog
surround51:CARD=PCH,DEV=0
    HDA Intel PCH, ALC887-VD Analog
surround71:CARD=PCH,DEV=0
    HDA Intel PCH, ALC887-VD Analog
iec958:CARD=PCH,DEV=0
    HDA Intel PCH, ALC887-VD Digital
dmix:CARD=PCH,DEV=0
    HDA Intel PCH, ALC887-VD Analog
dmix:CARD=PCH,DEV=1
    HDA Intel PCH, ALC887-VD Digital
dsnoop:CARD=PCH,DEV=0
    HDA Intel PCH, ALC887-VD Analog
dsnoop:CARD=PCH,DEV=1
    HDA Intel PCH, ALC887-VD Digital
hw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC887-VD Analog
hw:CARD=PCH,DEV=1
    HDA Intel PCH, ALC887-VD Digital
plughw:CARD=PCH,DEV=0
    HDA Intel PCH, ALC887-VD Analog
plughw:CARD=PCH,DEV=1
    HDA Intel PCH, ALC887-VD Digital

E, é claro, o Debian 9 vê o Intel HDA no PulseAudio:

$ pacmd list-sinks
1 sink(s) available.
  * index: 2
    name: <alsa_output.pci-0000_00_1b.0.iec958-stereo>
    driver: <module-alsa-card.c>
    flags: HARDWARE HW_MUTE_CTRL DECIBEL_VOLUME LATENCY FLAT_VOLUME DYNAMIC_LATENCY
    state: RUNNING
    suspend cause: 
    priority: 9958
    volume: front-left: 65536 / 100% / 0.00 dB,   front-right: 65536 / 100% / 0.00 dB
            balance 0.00
    base volume: 65536 / 100% / 0.00 dB
    volume steps: 65537
    muted: no
    current latency: 24.26 ms
    max request: 4 KiB
    max rewind: 344 KiB
    monitor source: 3
    sample spec: s16le 2ch 48000Hz
    channel map: front-left,front-right
                 Stereo
    used by: 1
    linked by: 1
    configured latency: 25.00 ms; range is 0.50 .. 1837.50 ms
    card: 1 <alsa_card.pci-0000_00_1b.0>
    module: 7
    properties:
        alsa.resolution_bits = "16"
        device.api = "alsa"
        device.class = "sound"
        alsa.class = "generic"
        alsa.subclass = "generic-mix"
        alsa.name = "ALC887-VD Digital"
        alsa.id = "ALC887-VD Digital"
        alsa.subdevice = "0"
        alsa.subdevice_name = "subdevice #0"
        alsa.device = "1"
        alsa.card = "0"
        alsa.card_name = "HDA Intel PCH"
        alsa.long_card_name = "HDA Intel PCH at 0xf5130000 irq 30"
        alsa.driver_name = "snd_hda_intel"
        device.bus_path = "pci-0000:00:1b.0"
        sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card0"
        device.bus = "pci"
        device.vendor.id = "8086"
        device.vendor.name = "Intel Corporation"
        device.product.id = "1e20"
        device.product.name = "7 Series/C216 Chipset Family High Definition Audio Controller"
        device.form_factor = "internal"
        device.string = "iec958:0"
        device.buffering.buffer_size = "352800"
        device.buffering.fragment_size = "176400"
        device.access_mode = "mmap+timer"
        device.profile.name = "iec958-stereo"
        device.profile.description = "Digital Stereo (IEC958)"
        device.description = "Built-in Audio Digital Stereo (IEC958)"
        alsa.mixer_name = "Realtek ALC887-VD"
        alsa.components = "HDA:10ec0887,1458a002,00100302"
        module-udev-detect.discovered = "1"
        device.icon_name = "audio-card-pci"
    ports:
        iec958-stereo-output: Digital Output (S/PDIF) (priority 0, latency offset 0 usec, available: unknown)
            properties:

    active port: <iec958-stereo-output>

Portanto, a pergunta é óbvia: como faço para que o áudio Intel HDA funcione novamente no PulseAudio com o Debian 10? Isso é algo que eu posso corrigir do ponto de vista da configuração ou isso é um problema de driver que precisa ser corrigido pelos mantenedores do ALSA ou do PulseAudio?

    
por blihp 06.10.2018 / 23:08

2 respostas

2

Se alguém se deparar com isso, aqui está uma solução alternativa para forçar o PulseAudio a usar o dispositivo ALSA ...

Primeiro, confirme se você conhece a placa de som e o dispositivo corretos desejados tocando algum áudio diretamente via ALSA:

aplay -D plughw:<CARD#>,<DEVICE#> /usr/share/sounds/alsa/Front_Center.wav

No meu caso, eu queria que a saída de áudio óptica fosse baseada na minha saída aplay -l , como visto na minha pergunta acima:

aplay -D plughw:0,1 /usr/share/sounds/alsa/Front_Center.wav

Anote o cartão e o número do dispositivo e adicione uma entrada a /etc/pulse/default.pa (substitua 0,1 pelo que funcionou para você na etapa anterior):

load-module module-alsa-sink device=plughw:0,1

Eu adicionei esta linha imediatamente antes da linha .ifexists module-udev-detect.so no arquivo (ou seja, abaixo do comentário ### Carregar drivers de áudio estaticamente )

Em seguida, execute o seguinte como o usuário em que sua sessão da área de trabalho está conectada como (ou seja, não como root):

pulseaudio --kill
pulseaudio --start

Em seguida, você deve conseguir abrir as Configurações de som para ver e selecionar o cartão:

Neste ponto, você deve ter a reprodução de áudio por meio do PulseAudio funcionando novamente. (Algo que eu notei é que pacmd list-cards ainda não lista o cartão, embora agora funcione) Lembrete: esta é uma solução alternativa e não a correção a longo prazo, então não se esqueça de fazer uma nota para si mesmo para desfaça isso em algum momento no futuro para ver se ele foi corrigido corretamente. Mas fica o áudio trabalhando por enquanto.

    
por 14.10.2018 / 05:33
0

Acabei aqui por causa do mesmo problema, depois de atualizar o Stretch, o áudio desapareceu. Sintomas e saídas similares (placa Nvidia e som Intel HDA). No entanto, seguindo as instruções, descobri que não conseguia dar este passo para o trabalho:

root@desk:~# aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Center.wav
aplay: main:828: audio open error: Device or resource busy

Descobri que o culpado era a timidez:

root@desk:~# fuser -v /dev/snd/*
                     USER        PID ACCESS COMMAND
/dev/snd/pcmC0D0p:   timidity   1274 F...m timidity
/dev/snd/seq:        timidity   1274 F.... timidity

Uma vez que eu o matei, eu poderia continuar editando /etc/pulse/default.pa e tudo encaixado. Eu ainda não tenho certeza se o problema foi o sumidouro da PA ausente ou a timidez em assumir o controle.

Eu também considerei arquivar um relatório de bug, mas não tenho certeza de onde seria mais apropriado. Se tiver alguma sugestão, terei todo o gosto em seguir o seu exemplo e adicionar o meu apoio ao relatório.

Obrigado por compartilhar a solução!

    
por 02.11.2018 / 18:15