контекст
Я работал 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
.
alsamixer
. На данный момент я добавил скриншот и подтвердил свои pulseaudio
разрешения (я даже перезагрузил компьютер, чтобы убедиться, что мое вмешательство в качестве root не повлияло на что-либо). Теперь я пытаюсь играть больше с pulseaudio
.
Beep
. Нет радости
pavucontrol
. Это решает это. Мне действительно интересно, как это произошло, у меня есть другая машина, использующая точно такой же модуль Intel HDA, ту же ОС (с теми же обновлениями), ту же alsa и ту же pulseaudio; и там не было приглушено. До того, как ваш комментарий pavucontrol
не был установлен ни на одной из двух машин (archlinux имеет pavucontrol
отдельный пакет).