Микрофон не работает на archlinux


9

контекст

Я работал archlinuxна своем ноутбуке в течение многих лет и никогда не нуждался в микрофоне. Сейчас мне это нужно, но я не могу найти способ правильно его настроить.

Я использую alsaи pulseadio.

Работая alsamixerкак пользователь у меня есть два датчика:

  ||      ||
Master  Capture

У меня обоих они включены и включены в разумные (~ 50%) значения.

Запуск alsamixerот имени root У меня есть несколько датчиков:

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

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

Если я включаю Loopbackкак root, я слышу микрофон обратно через динамики .

Если я явно выберу свою звуковую карту alsamixerкак пользователя, я получу те же команды, что и от имени пользователя root (и если я включу ее Loopbackздесь, я тоже услышу микрофон из динамиков). Я получаю следующее:

введите описание изображения здесь

(Справа находятся еще два Internalдатчика, Loopback(включить / отключить) и изменяемый Off-hook)

Тем не менее, независимо от того, что я делаю и насколько я вмешиваюсь в измерения с помощью alsa, мне так и не удается передать микрофон пользовательскому приложению. По сути, каждый раз, когда я запускаю, arecordя получаю следующий вывод:

$ 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С другой стороны, работает отлично.


Моя звуковая карта ( lspci):

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

Я посмотрел на arch wiki и попытался установить следующее /etc/modprobe.d/modprobe.conf(и перезагрузил машину):

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

(Я не могу заставить микрофон отправлять данные в пользовательское приложение с этой конфигурацией или без нее.)

Мои текущие hdaмодули:

# 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

Для полноты, это мой pulseaudioконфиг (я не пробовал вмешиваться в него):

$ 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

Согласно комментарию Фахима Митхи, я уверен, что у pulseaudio tmpfsнего есть правильные разрешения:

# 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

И pavucontrolбыл отключен. Я не знал, pavucontrolчто привело к проблеме в первую очередь:

введите описание изображения здесь


Вопрос

У меня нет идей. Я считаю, что Loopbackаудиоинтерфейс существует в пространстве ядра , поэтому моя проблема в том, что я не могу перенести данные микрофона в пространство пользователя . Тем не менее, я не уверен на 100% в этом.

Какие другие опции я могу предоставить snd-hda-intel(или другим модулям), которые могут иметь отношение к микрофону, который работает в интерфейсе обратной связи, но не распространяется на прикладной уровень?

Могу ли я сделать что-то не так pulseaudio? Но опять же, pulseaudioработали правильно (вместе с alsa) все это время, и я пользуюсь audacityдовольно часто.


Привет. Вы не хотите запускать alsamixer от имени пользователя root; вы испортите ваши разрешения. См. Unix.stackexchange.com/questions/265043 . Можете ли вы предоставить скриншот alsamixer, работающего от имени пользователя? Убедитесь, что вы выбрали свою звуковую карту.
— Фахим Митха

Включите все и включите все до максимума alsamixer.
— Фахим Митха

@FaheemMitha - Спасибо, я получаю все датчики, если явно выбрал звуковую карту alsamixer. На данный момент я добавил скриншот и подтвердил свои pulseaudioразрешения (я даже перезагрузил компьютер, чтобы убедиться, что мое вмешательство в качестве root не повлияло на что-либо). Теперь я пытаюсь играть больше с pulseaudio.
— Grochmal

@FaheemMitha - все включается, даже Beep. Нет радости
— Grochmal

1
@FaheemMitha - Хех, он был приглушен внутри pavucontrol. Это решает это. Мне действительно интересно, как это произошло, у меня есть другая машина, использующая точно такой же модуль Intel HDA, ту же ОС (с теми же обновлениями), ту же alsa и ту же pulseaudio; и там не было приглушено. До того, как ваш комментарий pavucontrolне был установлен ни на одной из двух машин (archlinux имеет pavucontrolотдельный пакет).
— Grochmal

Ответы:


9

Исходя из переписки с постером (см. Комментарии), оказалось, что звуковая карта была заглушена внутри pavucontrol.


1
+1 Возникла такая же проблема, откройте pavucontrolи нажимайте стрелку вправо, пока не будет выделена вкладка «Устройства ввода», затем щелкните значок громкости (Mute Audio), который для меня был активирован по умолчанию.
— Джастин Булл

Я, вероятно, должен добавить, что я использую GNOME 3, и только сейчас заметил, что в настройках звука есть отключение звука, которое также можно использовать (нет необходимости pavucontrol).
— Джастин Булл

2

Я также столкнулся с проблемой, что мой микрофон не работает на Arch Linux. В моем случае в разделе «Устройства ввода» не отображается ни одно устройство pavucontrol(«Нет доступных устройств ввода»). Следуя совету от Arch Wiki, я исправил это:

  1. Запустите, arecord -lчтобы узнать идентификатор микрофона в hw:CARD,DEVICEнотации, например, если выход

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

Тогда идентификатор hw:0,0

  1. Добавьте строку load-module module-alsa-source device=hw:0,0в/etc/pulse/default.pa

  2. pulseaudio -k; pulseaudio -D перезапустить pulseaudio и активировать изменения.

Я оставлю это здесь на случай, если у кого-то возникнет та же проблема, что и у меня.


1

1.rm -rf ~ / .config / pulse

2.rm -rf / etc / pulse /

3. Вставьте USB-наушники в ноутбук

4.pacman -S pulseaudio pavucontrol

  1. Добавьте «load-module module-loopback latency_msec = 1» в /etc/pulse/default.pa

6.reboot

6.pavucontrol

ХОРОШО.


Это сработало. Я только следовал до 4-го шага и перезагружался. это чертовски сработало. большое спасибо
— никто не

0

Эта ссылка разобрала меня: микрофон не обнаружен PulseAudio

Определите карту и номер устройства вашего микрофона:

$ 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.

Затем отредактируйте /etc/pulse/default.pa и вставьте строку загрузочного модуля, указав ваше устройство следующим образом:

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

Наконец, перезапустите pulseaudio, чтобы применить новые настройки:

$ pulseaudio -k ; pulseaudio -D

Если все работает правильно, вы должны увидеть, как ваш микрофон показывается при запуске pavucontrol (на вкладке «Устройства ввода»).

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.