problema de fones de ouvido PulseAudio

4

Estou tendo alguns problemas com pulseaudio como é tradição.

Quando eu digito X (DWM), executo o google-chrome e viaje até youtube.com e reproduza um vídeo, os fones de ouvido não funcionarão, o som está instável.

speaker-test -c 2 -t wav -D plughw:2,0 resulta em: Erro de reprodução aberta: -16, Dispositivo ou recurso ocupado

Quando eu reinicio o X (Logout - > Login), o áudio no navegador começa a funcionar magicamente.

**** List of PLAYBACK Hardware Devices ****

card 0: PCH [HDA Intel PCH], device 0: ALC898 Analog [ALC898 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 1: ALC898 Digital [ALC898 Digital]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: NVidia [HDA NVidia], device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: Device [USB Sound Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

Eu não tenho idéia do que está acontecendo, abaixo estão as mensagens que recebo de / var / log / messages

First login

Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:31 qwerty pulseaudio[1223]: [pulseaudio] alsa-mixer.c: Volume element Speaker has 8 channels. That's too much
Mar 11 20:07:44 qwerty org.a11y.Bus[1007]: Activating service name='org.a11y.atspi.Registry'
Mar 11 20:07:44 qwerty org.a11y.Bus[1007]: Successfully activated service 'org.a11y.atspi.Registry'
Mar 11 20:07:44 qwerty org.a11y.atspi.Registry[1288]: SpiRegistry daemon is running with well-known name - org.a11y.atspi.

Second login

Mar 11 20:08:01 qwerty org.gtk.vfs.Daemon[1007]: A connection to the bus can't be made
Mar 11 20:08:01 qwerty org.gtk.vfs.Daemon[1007]: g_dbus_connection_real_closed: Remote peer vanished with error: Underlyin on an async read (g-io-error-quark, 0). Exiting.
Mar 11 20:08:01 qwerty org.a11y.Bus[1007]: g_dbus_connection_real_closed: Remote peer vanished with error: Underlying GIOS async read (g-io-error-quark, 0). Exiting.
Mar 11 20:08:01 qwerty org.a11y.atspi.Registry[1288]: g_dbus_connection_real_closed: Remote peer vanished with error: Undebytes on an async read (g-io-error-quark, 0). Exiting.
Mar 11 20:08:02 qwerty org.a11y.Bus[1007]: No protocol specified
Mar 11 20:08:17 qwerty org.a11y.Bus[1349]: Activating service name='org.a11y.atspi.Registry'
Mar 11 20:08:17 qwerty org.a11y.Bus[1349]: Successfully activated service 'org.a11y.atspi.Registry'
Mar 11 20:08:17 qwerty org.a11y.atspi.Registry[1539]: SpiRegistry daemon is running with well-known name - org.a11y.atspi.

Asound.conf

pcm.pulse {
    type pulse
}

ctl.pulse {
    type pulse
}

pcm.!default {
    type pulse
}

ctl.!default {
    type pulse
}

OUTPUT OF ALSA Information Script v 0.4.64

link

Se eu continuar a matar todos os processos pulseaudio em execução e executar

speaker-test -c 2 -t wav -D plughw:2,0 o áudio funciona, mas não no navegador, obviamente.

Agora eu tenho duas opções, remover o pulseaudio e tentar configurar o PCM_DEVICE através de variáveis de ambiente que também é problemático na a ** ou tentar classificar este pulseaudio s *** out ... Horas que eu prefiro estar gastando em outro lugar.

    
por JazzCat 11.03.2016 / 20:18

1 resposta

3

Eu não queria tentar resolvê-lo corrigindo o problema com pulseaudio, já que esse problema acabou de chegar à superfície do nada, não sei qual pacote eu instalei, mas não mudei nada os arquivos de configuração, e esse problema apareceu de repente.

O que eu fiz para resolver isso foi remover completamente o pulseaudio.

apt-get --purge remove pulseaudio*
rm -r ~/.config/pulse

Alterado de volta para o meu arquivo antigo alsa asound.conf e adicionado a entrada para a variável de ambiente do dispositivo.

/ETC/ASOUND.CONF

defaults.pcm.!card Device
defaults.ctl.!card Device
defaults.pcm.!device { 
        @func igetenv  
                vars [ ALSA_PCM_DEVICE ]  
                default 0 
}

FUNCIONA! ("Device" é o nome do meu cartão USB)

Eu tenho que definir as variáveis do ambiente ao mudar para um cartão com vários dispositivos de saída de áudio.

Comando

: > ALSA_PCM_CARD = CARTÃO ALSA_PCM_DEVICE = DEVICE firefox

Eu não consegui configurar o ALSA_PCM_DEVICE sem adicioná-lo ao asound.conf, aparentemente não foi suficiente configurá-lo apesar de estar definido em /usr/share/alsa/alsa.conf .

A razão para isso é que o plughw usa o ALSA_PCM_DEVICE e, se não estiver configurado, retorna ao defaults.pcm.device, enquanto o dmix (/usr/share/alsa/pcm/dmix.conf) usa apenas o defaults.pcm.device, sem verificar o ALSA_PCM_DEVICE

É por isso que você precisa redefinir explicitamente o dispositivo defaults.pcm.! para verificar a variável de ambiente ALSA_PCM_DEVICE

EDIT (SUMMARY CONVERSATION ON IRC - ALSA Enviroment variables)

A menos que você tenha algum dispositivo / driver incorporado incomum.

A Alsa deve fornecer uma cadeia de reprodução "padrão" = plug-> dmix- > hw semelhante.

Deve funcionar sem caixa ~ / .asoundrc.

É apenas por padrão que a cadeia termina no dispositivo 0 do cartão 0.

Ou, tecnicamente, ele: (1) assume como padrão o ambiente ALSA_PCM_CARD, se não for set (2), o padrão é ALSA_CARD env.variable, se não for set (3), o padrão é "defaults.pcm.card" alsa variable e se isso não for definido (4), o padrão é 0.

Assim, por exemplo, para ter todos os aplicativos sendo reproduzidos em uma placa de som chamada "PCH", você precisa de apenas duas linhas                     ~ / .asoundrc (apenas seu usuário) ou /etc/asound.conf (todos os usuários):

defaults.pcm.! card PCH

defaults.ctl.! card PCH

Para substituir isso e reproduzir para um cartão chamado "Fone de ouvido", você pode executar aplicativos como: env ALSA_CARD=Headset some-app-here . Você pode ver os nomes dos cartões em cat /proc/asound/cards ou aplay -l output. Tecnicamente, você pode usar números de cartão também ( env ALSA_CARD=2 some-app-here ), mas os números podem mudar na reinicialização, então é melhor usar nomes.

EDIT (SUMMARY CONVERSATION ON IRC - PulseAudio)

O Pulseaudio faz isso de forma diferente. Em vez de adicionar módulos intermediários, ele adiciona um daemon pulseaudio global e esse daemon reproduz diretamente para "hw" pcm. Todos os outros aplicativos devem ser reproduzidos para esse daemon, porque enquanto ele está em execução, ninguém mais pode reproduzir para "hw". É por isso que eu tinha "dispositivo ou recurso está ocupado".

Assim, uma cadeia de reprodução pulseaudio típica é o módulo default="type pulse" - > daemon pulseaudio - > hw Você não deve usar "hw" ou "plughw" ou "dmix" com pulseaudio - eles não podem trabalhar juntos. Em vez disso eu deveria ter definido pcm.! Default {type pulse} (na verdade o pulseaudio geralmente faz isso automaticamente)

Com o pulseaudio instalado, você precisa apenas de pcm.! default {tipo pulse}. E na maioria das distribuições o pulseaudio faz isso automaticamente. (no archlinux é empacotado como um pacote separado "pulseaudio-alsa", que basicamente tem apenas essa configuração alsa e nada mais)

    
por 11.03.2016 / 22:06

Tags