Microfone não funciona no archlinux

9

Contexto

Estou archlinuxem funcionamento no meu laptop há anos e nunca precisei do microfone. Agora eu preciso, mas não consigo encontrar uma maneira de configurá-lo corretamente.

Eu uso alsae pulseadio.

Executando alsamixercomo usuário, tenho dois medidores:

  ||      ||
Master  Capture

Eu tenho os dois emudecidos e habilitados para valores sensíveis (~ 50%).

Executando alsamixercomo root, tenho vários medidores:

  ||        ||        ||      ||      ||       ||
Master  Headphones  Speaker  PCM  Microphone MIC Boot 

 ||      ||       ||        ||       ||
Beep  Loopback Internal  Internal  Capture

Se eu ativar o Loopbackas root , posso ouvir o microfone de volta pelos alto-falantes .

Se eu selecionar explicitamente minha placa de som alsamixercomo usuário, obtenho os mesmos comandos que o root (e se eu ativar Loopbackaqui, também ouço o microfone dos alto-falantes). Eu recebo o seguinte:

insira a descrição da imagem aqui

(À direita, há mais dois Internalmedidores, o Loopback(ativar / desativar) e um mutável Off-hook)

No entanto, não importa o que eu faça e o quanto eu me importe com os medidores da alsa, nunca consigo passar o microfone para o aplicativo do usuário. Em essência, toda vez que corro arecord, recebo a seguinte saída:

$ arecord -vv -f dat /dev/null 
Recording WAVE '/dev/null' : Signed 16 bit Little Endian, Rate 48000 Hz, Stereo
ALSA <-> PulseAudio PCM I/O Plugin
Its setup is:
  stream       : CAPTURE
  access       : RW_INTERLEAVED
  format       : S16_LE
  subformat    : STD
  channels     : 2
  rate         : 48000
  exact rate   : 48000 (48000/1)
  msbits       : 16
  buffer_size  : 24000
  period_size  : 6000
  period_time  : 125000
  tstamp_mode  : NONE
  tstamp_type  : GETTIMEOFDAY
  period_step  : 1
  avail_min    : 6000
  period_event : 0
  start_threshold  : 1
  stop_threshold   : 24000
  silence_threshold: 0
  silence_size : 0
  boundary     : 6755399441055744000
#+                                                 | 00%

aplay, por outro lado, funciona perfeitamente.


Minha placa de som é ( lspci):

# lspci| grep -i audio
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 Azalia (Intel HDA)

Eu olhei para o wiki do arch e tentei configurar o seguinte em /etc/modprobe.d/modprobe.conf(e reiniciei a máquina):

options snd-hda-intel model=dell-m6-dmic

(Não consigo que o microfone envie dados ao aplicativo do usuário com ou sem essa configuração.)

Meus hdamódulos atuais são:

# lsmod |grep hda
snd_hda_codec_si3054    16384  1
snd_hda_codec_realtek    69632  1
snd_hda_codec_generic    69632  1 snd_hda_codec_realtek
snd_hda_intel          32768  5
snd_hda_codec         106496  4 snd_hda_codec_realtek,snd_hda_codec_si3054,snd_hda_codec_generic,snd_hda_intel
snd_hda_core           61440  5 snd_hda_codec_realtek,snd_hda_codec_si3054,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel
snd_hwdep              16384  1 snd_hda_codec
snd_pcm                86016  4 snd_hda_codec_si3054,snd_hda_codec,snd_hda_intel,snd_hda_core
snd                    65536  18 snd_hda_codec_realtek,snd_hda_codec_si3054,snd_hwdep,snd_timer,snd_pcm,snd_hda_codec_generic,snd_hda_codec,snd_hda_intel

Para ser completo, esta é a minha pulseaudioconfiguração (não tentei me intrometer):

$ pulseaudio --dump-conf
### Read from configuration file: /etc/pulse/daemon.conf ###
daemonize = no
fail = yes
high-priority = yes
nice-level = -11
realtime-scheduling = yes
realtime-priority = 5
allow-module-loading = yes
allow-exit = yes
use-pid-file = yes
system-instance = no
local-server-type = user
cpu-limit = no
enable-shm = yes
flat-volumes = no
lock-memory = no
exit-idle-time = 20
scache-idle-time = 20
dl-search-path = /usr/lib/pulse-9.0/modules
default-script-file = /etc/pulse/default.pa
load-default-script-file = yes
log-target = 
log-level = notice
resample-method = auto
enable-remixing = yes
enable-lfe-remixing = no
lfe-crossover-freq = 0
default-sample-format = s16le
default-sample-rate = 44100
alternate-sample-rate = 48000
default-sample-channels = 2
default-channel-map = front-left,front-right
default-fragments = 4
default-fragment-size-msec = 25
enable-deferred-volume = yes
deferred-volume-safety-margin-usec = 8000
deferred-volume-extra-delay-usec = 0
shm-size-bytes = 0
log-meta = no
log-time = no
log-backtrace = 0
rlimit-fsize = -1
rlimit-data = -1
rlimit-stack = -1
rlimit-core = -1
rlimit-rss = -1
rlimit-as = -1
rlimit-nproc = -1
rlimit-nofile = 256
rlimit-memlock = -1
rlimit-locks = -1
rlimit-sigpending = -1
rlimit-msgqueue = -1
rlimit-nice = 31
rlimit-rtprio = 9
rlimit-rttime = 200000

De acordo com o comentário de Faheem Mitha, estou confiante de que pulseaudio tmpfstem as permissões corretas:

# ls -la /run/user/861213/pulse/
total 4
drwx------ 2 grochmal users  80 Jul  4 21:44 .
drwx------ 5 grochmal users 120 Jul  4 21:46 ..
srw-rw-rw- 1 grochmal users   0 Jul  4 21:44 native
-rw------- 1 grochmal users   4 Jul  4 21:44 pid

E pavucontrolfoi silenciado. Eu não sabia pavucontrolque resultou no problema em primeiro lugar:

insira a descrição da imagem aqui


Questão

Estou sem idéias. Eu acredito que a Loopbackinterface de áudio existe no espaço do kernel , portanto, o meu problema é que eu não posso trazer os dados de microfone em espaço do usuário . No entanto, não tenho 100% de certeza disso.

Que outras opções posso dar snd-hda-intel(ou aos outros módulos) que podem ser relevantes para um microfone que funciona na interface de loopback, mas não se propaga para a camada de aplicativo?

Eu poderia estar fazendo algo errado pulseaudio? Mas, novamente, pulseaudiofuncionou corretamente (junto com alsa) por todo esse tempo, e eu uso com audacitybastante frequência.

grochmal
fonte
Oi. Você não deseja executar o alsamixer como root; você vai estragar suas permissões. Consulte unix.stackexchange.com/questions/265043 . Você pode fornecer uma captura de tela do alsamixer sendo executado como usuário? Certifique-se de selecionar sua placa de som.
Faheem Mitha
Ative o som e traga tudo ao máximo alsamixer.
Faheem Mitha
@FaheemMitha - Obrigado, eu recebo todos os medidores se eu selecionar explicitamente a placa de som alsamixer. Por enquanto, adicionei a captura de tela e confirmei minhas pulseaudiopermissões (até reiniciei a máquina para garantir que minha intromissão como root não afetasse algo). Agora estou tentando jogar mais com pulseaudio.
grochmal
@FaheemMitha - Tudo muda, mesmo Beep. Sem alegria
187 grochmal
1
@FaheemMitha - Heh, foi silenciado por dentro pavucontrol. Isso resolve. Eu realmente me pergunto como isso aconteceu. Tenho outra máquina usando exatamente o mesmo módulo Intel HDA, o mesmo sistema operacional (com as mesmas atualizações), o mesmo alsa e o mesmo pulseaudio; e não foi silenciado lá. Antes de seu comentário pavucontrolnão ter sido instalado em nenhuma das duas máquinas (o archlinux possui pavucontrolum pacote separado).
grochmal

Respostas:

9

Com base na correspondência com o pôster (ver comentários), descobriu-se que a placa de som estava silenciada por dentro pavucontrol.

Faheem Mitha
fonte
1
+1 Com o mesmo problema, abra pavucontrole clique na seta à direita até que a guia "Dispositivos de entrada" seja destacada e clique no ícone de volume (Silenciar áudio) que, para mim, foi ativado por padrão.
Justin Bull
Provavelmente devo acrescentar que estou usando o GNOME 3 e só agora notei que há uma alternância muda nas configurações de som que também podem ser usadas (sem necessidade pavucontrol).
Justin Bull
2

Também encontrei o problema do meu microfone não funcionar no Arch Linux. No meu caso, não há nenhum dispositivo mostrado em "Dispositivos de entrada" em pavucontrol(Ele diz "nenhum dispositivo de entrada disponível"). Seguir o seguinte conselho do Arch Wiki o corrigiu para mim:

  1. Corra arecord -lpara descobrir a identificação do microfone em hw:CARD,DEVICEnotação, por exemplo, se a saída for

**** List of CAPTURE Hardware Devices **** card 0: PCH [HDA Intel PCH], device 0: ALC269VC Analog[ALC269VC Analog] Subdevices: 1/1 Subdevice #0: subdevice #0

Então o id é hw:0,0

  1. Adicione a linha load-module module-alsa-source device=hw:0,0em/etc/pulse/default.pa

  2. pulseaudio -k; pulseaudio -D para reiniciar o pulseaudio e ativar as alterações.

Vou deixar aqui para o caso de alguém encontrar o mesmo problema que o meu.

xji
fonte
1

1.rm -rf ~ / .config / pulse

2.rm -rf / etc / pulse /

3.plugue o fone de ouvido usb no laptop

4.pacman -S pulseaudio pavucontrol

  1. Adicione "load-module module-loopback latency_msec = 1" em /etc/pulse/default.pa

6.reboot

6.pavucontrol

ESTÁ BEM.

Nguyen Van Minh Hieu
fonte
Isso funcionou. Eu só segui até o quarto passo e reiniciei. Isso funcionou. muito obrigado
ninguém
0

Este link me classificou: Microfone não detectado pelo PulseAudio

Determine o número do cartão e do dispositivo do seu microfone:

$ arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC269VC Analog [ALC269VC Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
In hw:CARD,DEVICE notation, you would specify the above device as hw:0,0.

Em seguida, edite /etc/pulse/default.pa e insira uma linha do módulo de carga especificando seu dispositivo da seguinte maneira:

load-module module-alsa-source device=hw:0,0
# the line above should be somewhere before the line below
.ifexists module-udev-detect.so

Por fim, reinicie o pulseaudio para aplicar as novas configurações:

$ pulseaudio -k ; pulseaudio -D

Se tudo funcionou corretamente, agora você verá o seu microfone aparecer ao executar o pavucontrol (na guia Dispositivos de entrada).

authentichigh
fonte