Contesto
Sono in esecuzione archlinux
sul mio laptop da anni e non ho mai avuto bisogno del microfono. Ora ne ho bisogno ma non riesco a trovare un modo per configurarlo correttamente.
Io uso alsa
e pulseadio
.
In esecuzione alsamixer
come utente ho due calibri:
|| ||
Master Capture
Li ho entrambi disattivati e abilitati a valori sensibili (~ 50%).
In esecuzione alsamixer
come root ho diversi calibri:
|| || || || || ||
Master Headphones Speaker PCM Microphone MIC Boot
|| || || || ||
Beep Loopback Internal Internal Capture
Se abilito Loopback
come root posso sentire il microfono attraverso gli altoparlanti .
Se seleziono esplicitamente la mia scheda audio alsamixer
come utente, ottengo gli stessi comandi dell'esecuzione come root (e se abilito Loopback
qui, sento anche il microfono dagli altoparlanti). Ottengo quanto segue:
(A destra ci sono altri due Internal
indicatori, il Loopback
(abilita / disabilita) e un mutevole Off-hook
)
Tuttavia, indipendentemente da ciò che faccio e da quanto mi intrometto con gli indicatori alsa, non riesco mai a passare il microfono all'applicazione utente. In sostanza, ogni volta che corro arecord
ottengo il seguente output:
$ 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
d'altra parte, funziona perfettamente.
La mia scheda audio è ( lspci
):
# lspci| grep -i audio
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 Azalia (Intel HDA)
Ho guardato il wiki dell'arco e ho provato a impostare quanto segue /etc/modprobe.d/modprobe.conf
(e riavviato la macchina):
options snd-hda-intel model=dell-m6-dmic
(Non riesco a far sì che il microfono invii dati all'applicazione utente con o senza quella configurazione.)
I miei hda
moduli attuali sono:
# 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
Per completezza, questa è la mia pulseaudio
configurazione (non ho provato a immischiarmi):
$ 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
Secondo il commento di Faheem Mitha, sono sicuro che pulseaudio
tmpfs
abbia i permessi giusti:
# 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
Ed è pavucontrol
stato disattivato. Non ero a conoscenza di ciò pavucontrol
che ha causato il problema in primo luogo:
Domanda
Sono senza idee. Io credo che l' Loopback
interfaccia audio esiste in spazio del kernel , quindi, il mio problema è che non riesco a portare i dati del microfono in spazio utente . Tuttavia, non ne sono sicuro al 100%.
Quali altre opzioni posso offrire snd-hda-intel
(o agli altri moduli) che potrebbero essere rilevanti per un microfono che funziona sull'interfaccia di loopback ma non si propaga al livello dell'applicazione?
Potrei fare qualcosa di sbagliato in pulseaudio
? Ma poi, ha pulseaudio
funzionato correttamente (insieme alsa
) per tutto quel tempo, e lo uso audacity
abbastanza spesso.
alsamixer
.
alsamixer
. Per ora ho aggiunto lo screenshot e confermato i miei pulseaudio
permessi (ho anche riavviato la macchina per assicurarmi che il mio intromissione come root non influisse su qualcosa). Ora sto provando a giocare di più con pulseaudio
.
Beep
. Nessuna gioia.
pavucontrol
. Questo lo risolve. Mi chiedo davvero come sia successo, ho un'altra macchina che utilizza esattamente lo stesso modulo Intel HDA, lo stesso sistema operativo (con gli stessi aggiornamenti), lo stesso alsa e lo stesso pulseaudio; e non è stato disattivato. Prima che il tuo commento pavucontrol
non fosse installato su nessuna delle due macchine (archlinux ha pavucontrol
un pacchetto separato).