Le contexte
Je cours archlinux
sur mon ordinateur portable depuis des années et je n'ai jamais eu besoin du microphone. Maintenant j'en ai besoin mais je ne trouve pas de moyen de le configurer correctement.
J'utilise alsa
et pulseadio
.
En alsamixer
tant qu'utilisateur, j'ai deux jauges:
|| ||
Master Capture
Je les ai tous deux non muets et activés pour des valeurs sensibles (~ 50%).
En cours alsamixer
d' exécution en tant que root, j'ai plusieurs jauges:
|| || || || || ||
Master Headphones Speaker PCM Microphone MIC Boot
|| || || || ||
Beep Loopback Internal Internal Capture
Si j'active le Loopback
root, je peux entendre le microphone à travers les haut-parleurs .
Si je sélectionne explicitement ma carte son en alsamixer
tant qu'utilisateur, j'obtiens les mêmes commandes qu'en exécutant en tant que root (et si j'active Loopback
ici, j'entends également le microphone des haut-parleurs). J'obtiens ce qui suit:
(À droite se trouvent deux autres Internal
jauges, la Loopback
(activer / désactiver) et une mutable Off-hook
)
Pourtant, peu importe ce que je fais et à quel point je me mêle des jauges alsa, je n'arrive jamais à passer le microphone à l'application utilisateur. Essentiellement, chaque fois que je lance, arecord
j'obtiens la sortie suivante:
$ 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'autre part, fonctionne parfaitement.
Ma carte son est ( lspci
):
# lspci| grep -i audio
00:14.2 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] SBx00 Azalia (Intel HDA)
J'ai regardé le wiki de l'archive et j'ai essayé de configurer ce qui suit dans /etc/modprobe.d/modprobe.conf
(et j'ai redémarré la machine):
options snd-hda-intel model=dell-m6-dmic
(Je ne parviens pas à ce que le microphone envoie des données à l'application utilisateur avec ou sans cette configuration.)
Mes hda
modules actuels sont:
# 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
Pour être complet, pulseaudio
voici ma config (je n'ai pas essayé de m'en mêler):
$ 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
Selon le commentaire de Faheem Mitha, je suis convaincu que le pulseaudio
tmpfs
a les bonnes autorisations:
# 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
Et pavucontrol
était muet. Je ne savais pas pavucontrol
ce qui a entraîné le problème en premier lieu:
Question
Je suis à court d'idées. Je crois que l' Loopback
interface audio existe dans l' espace du noyau , donc mon problème est que je ne peux pas importer les données du microphone dans l'espace utilisateur . Pourtant, je n'en suis pas sûr à 100%.
Quelles autres options puis-je donner à snd-hda-intel
(ou aux autres modules) qui pourraient être pertinentes pour un microphone qui fonctionne sur l'interface de bouclage mais ne se propage pas à la couche application?
Pourrais-je faire quelque chose de mal avec pulseaudio
? Mais là encore, a pulseaudio
fonctionné correctement (avec alsa
) pendant tout ce temps, et j'utilise audacity
assez souvent.
alsamixer
.
alsamixer
. Pour l'instant, j'ai ajouté la capture d'écran et confirmé mes pulseaudio
autorisations (j'ai même redémarré la machine pour m'assurer que mon ingérence en tant que root n'affectait pas quelque chose). Maintenant j'essaye de jouer plus avec pulseaudio
.
Beep
. Pas de joie.
pavucontrol
. Cela le résout. Je me demande vraiment comment cela s'est produit, j'ai une autre machine utilisant exactement le même module Intel HDA, le même système d'exploitation (avec les mêmes mises à jour), le même alsa et le même pulseaudio; et ce n'était pas muet là-dedans. Avant que votre commentaire pavucontrol
ne soit installé sur aucune des deux machines (archlinux a pavucontrol
un package séparé).