7

Context

I have been running archlinux on my laptop for years and never needed the microphone. Now I need it but cannot find a way to configure it properly.

I use alsa and pulseadio.

Running alsamixer as a user I have two gauges:

  ||      ||
Master  Capture

I have both of them unmuted and enabled to sensible (~50%) values.

Running alsamixer as root I have several gauges:

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

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

If I enable the Loopback as root I can hear the microphone back through the speakers.

If I explicitly select my sound card in alsamixer as a user I get the same commands as running as root (and if I enable Loopback here I do hear the microphone from the speakers as well). I get the following:

enter image description here

(To the right are two more Internal gauges, the Loopback (enable/disable) and a mutable Off-hook)

Yet, no matter what I do and how much I meddle with the alsa gauges I never manage to pass the microphone to the user application. In essence, every time I run arecord I get the following 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, on the other hand, works perfectly.


My sound card is (lspci):

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

I looked at the arch wiki and tried setting the following in /etc/modprobe.d/modprobe.conf (and rebooted the machine):

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

(I cannot get the microphone to send data to the user application with or without that configuration.)

My current hda modules are:

# 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

For completeness, this is my pulseaudio config (I have not tried meddling with it):

$ 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

As per Faheem Mitha's comment, I'm confident the pulseaudio tmpfs has the right permissions:

# 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

And pavucontrol was muted. I was not aware of pavucontrol which resulted in the issue in the first place:

enter image description here


Question

I'm out of ideas. I believe that the Loopback audio interface exists in kernel space, therefore my problem is that I cannot bring the microphone data into user space. Yet, I'm not 100% sure of it.

What other options can I give to snd-hda-intel (or the other modules) that might be relevant for a microphone that works on the loopback interface but does not propagate to the application layer?

Could I be doing something wrong with pulseaudio? But then again, pulseaudio worked correctly (together with alsa) for all that time, and I use audacity quite often.

  • Hi. You don't want to run alsamixer as root; you'll screw up your permissions. See unix.stackexchange.com/questions/265043. Can you provide a screenshot of alsamixer running as user? Make sure you select your sound card. – Faheem Mitha Jul 4 '16 at 21:23
  • Unmute everything, and bring everything up to the maximum in alsamixer. – Faheem Mitha Jul 4 '16 at 22:13
  • @FaheemMitha - Thanks, I do get all gauges if i explicitly select the sound card in alsamixer. For now I added the screenshot and confirmed my pulseaudio permissions (I even rebooted the machine to ensure that my meddling as root did not affect something). Now I'm trying to play more with pulseaudio. – grochmal Jul 4 '16 at 22:14
  • @FaheemMitha - Unmuted everything, even Beep. No joy. – grochmal Jul 4 '16 at 22:17
  • What are your mike settings inside pavucontrol? And does the gauge wiggle when you talk into your mike? One long shot is that your machine is using another mike jack than the one you think it is using. I think @derobert was discussing this with some other user a while back. Maybe he can shed some light. – Faheem Mitha Jul 5 '16 at 9:31
9

Based on correspondence with the poster (see comments), it turned out that the sound card was muted inside pavucontrol.

  • +1 Had the same issue, Open pavucontrol and click the right arrow until the "Input Devices" tab is highlighted, then click the volume icon (Mute Audio) which for me was activated by default. – Justin Bull Jul 25 '17 at 18:41
  • I should probably add that I'm using GNOME 3 and only now just noticed there is a mute toggle in the sound settings which can also be used (no need for pavucontrol). – Justin Bull Jul 25 '17 at 18:46
1

I also met the problem of my microphone not working on Arch Linux. In my case there's no device shown under "Input Devices" in pavucontrol (It says "no input devices available"). Following the following advice from Arch Wiki fixed it for me:

  1. Run arecord -l to find out the id of the microphone in hw:CARD,DEVICE notation, e.g. if the output is

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

Then the id is hw:0,0

  1. Add the line load-module module-alsa-source device=hw:0,0 in /etc/pulse/default.pa

  2. pulseaudio -k; pulseaudio -D to restart pulseaudio and activate the changes.

I'll leave it here in case somebody runs into the same problem as mine.

0

1.rm -rf ~/.config/pulse

2.rm -rf /etc/pulse/

3.Plug in the usb headphone into laptop

4.pacman -S pulseaudio pavucontrol

  1. Add "load-module module-loopback latency_msec=1" in /etc/pulse/default.pa

6.reboot

6.pavucontrol

OK.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.