Lenovo Legion 5 - Internal Mic Not Working

Hello,

Just started using Manjaro last week and just cannot get the internal microphone to work.
I am running a Lenovo Legion 5 laptop which has an internal microphone next to the webcam.

Note the sound works fine, its only the mic.
I have been testing with Discord, but the mic bar is empty.

Here is the arecord -l info:

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

I have tried on alsamixer to set the volumes to max and making sure that the Capture device is activated:

Here is the output for inxi -Fazy:

System:
  Kernel: 5.10.36-2-MANJARO x86_64 bits: 64 compiler: gcc v: 10.2.0 
  parameters: BOOT_IMAGE=/boot/vmlinuz-5.10-x86_64 
  root=UUID=0c4155c2-fdff-4836-86d9-9e71ccb2757c rw quiet apparmor=1 
  security=apparmor udev.log_priority=3 
  Desktop: Xfce 4.16.0 tk: Gtk 3.24.24 info: xfce4-panel wm: xfwm4 vt: 7 
  dm: LightDM 1.30.0 Distro: Manjaro Linux base: Arch Linux 
Machine:
  Type: Laptop System: LENOVO product: 81Y6 v: Lenovo Legion 5 15IMH05H 
  serial: <filter> Chassis: type: 10 v: Lenovo Legion 5 15IMH05H 
  serial: <filter> 
  Mobo: LENOVO model: LNVNB161216 v: SDK0R32862 WIN serial: <filter> 
  UEFI: LENOVO v: EFCN38WW date: 07/30/2020 
Battery:
  ID-1: BAT0 charge: 50.9 Wh (95.0%) condition: 53.6/60.0 Wh (89.3%) 
  volts: 17.0 min: 15.4 model: Celxpert L19C4PC0 type: Li-poly 
  serial: <filter> status: Unknown cycles: 67 
CPU:
  Info: 6-Core model: Intel Core i7-10750H bits: 64 type: MT MCP 
  arch: Comet Lake family: 6 model-id: A5 (165) stepping: 2 microcode: E0 
  cache: L2: 12 MiB 
  flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx 
  bogomips: 62431 
  Speed: 800 MHz min/max: 800/5000 MHz Core speeds (MHz): 1: 800 2: 800 3: 800 
  4: 800 5: 800 6: 801 7: 800 8: 800 9: 800 10: 800 11: 800 12: 800 
  Vulnerabilities: Type: itlb_multihit status: KVM: VMX disabled 
  Type: l1tf status: Not affected 
  Type: mds status: Not affected 
  Type: meltdown status: Not affected 
  Type: spec_store_bypass 
  mitigation: Speculative Store Bypass disabled via prctl and seccomp 
  Type: spectre_v1 
  mitigation: usercopy/swapgs barriers and __user pointer sanitization 
  Type: spectre_v2 mitigation: Enhanced IBRS, IBPB: conditional, RSB filling 
  Type: srbds status: Not affected 
  Type: tsx_async_abort status: Not affected 
Graphics:
  Device-1: NVIDIA TU106M [GeForce RTX 2060 Mobile] vendor: Lenovo 
  driver: nvidia v: 460.80 alternate: nouveau,nvidia_drm bus-ID: 01:00.0 
  chip-ID: 10de:1f15 class-ID: 0300 
  Device-2: Syntek Integrated Camera type: USB driver: uvcvideo bus-ID: 1-6:3 
  chip-ID: 174f:244c class-ID: 0e02 serial: <filter> 
  Display: x11 server: X.Org 1.20.11 driver: loaded: nvidia display-ID: :0.0 
  screens: 1 
  Screen-1: 0 s-res: 1920x1080 s-dpi: 143 s-size: 341x191mm (13.4x7.5") 
  s-diag: 391mm (15.4") 
  Monitor-1: DP-2 res: 1920x1080 hz: 240 dpi: 142 size: 344x193mm (13.5x7.6") 
  diag: 394mm (15.5") 
  OpenGL: renderer: GeForce RTX 2060/PCIe/SSE2 v: 4.6.0 NVIDIA 460.80 
  direct render: Yes 
Audio:
  Device-1: Intel Comet Lake PCH cAVS vendor: Lenovo driver: snd_hda_intel 
  v: kernel alternate: snd_soc_skl,snd_sof_pci bus-ID: 00:1f.3 
  chip-ID: 8086:06c8 class-ID: 0403 
  Device-2: NVIDIA TU106 High Definition Audio vendor: Lenovo 
  driver: snd_hda_intel v: kernel bus-ID: 01:00.1 chip-ID: 10de:10f9 
  class-ID: 0403 
  Sound Server-1: ALSA v: k5.10.36-2-MANJARO running: yes 
  Sound Server-2: JACK v: 0.125.0 running: no 
  Sound Server-3: PulseAudio v: 14.2 running: yes 
  Sound Server-4: PipeWire v: 0.3.28 running: no 
Network:
  Device-1: Intel Comet Lake PCH CNVi WiFi driver: iwlwifi v: kernel 
  bus-ID: 00:14.3 chip-ID: 8086:06f0 class-ID: 0280 
  IF: wlp0s20f3 state: up mac: <filter> 
  Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet 
  vendor: Lenovo driver: r8169 v: kernel port: 3000 bus-ID: 07:00.0 
  chip-ID: 10ec:8168 class-ID: 0200 
  IF: enp7s0 state: down mac: <filter> 
Bluetooth:
  Device-1: Intel type: USB driver: btusb v: 0.8 bus-ID: 1-14:5 
  chip-ID: 8087:0026 class-ID: e001 
  Report: rfkill ID: hci0 rfk-id: 3 state: down bt-service: enabled,running 
  rfk-block: hardware: no software: yes address: see --recommends 
Drives:
  Local Storage: total: 953.87 GiB used: 60.77 GiB (6.4%) 
  SMART Message: Required tool smartctl not installed. Check --recommends 
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Western Digital 
  model: PC SN730 SDBPNTY-1T00-1101 size: 953.87 GiB block-size: 
  physical: 512 B logical: 512 B speed: 31.6 Gb/s lanes: 4 rotation: SSD 
  serial: <filter> rev: 11130001 temp: 38.9 C scheme: GPT 
Partition:
  ID-1: / raw-size: 382.62 GiB size: 375.55 GiB (98.15%) 
  used: 60.74 GiB (16.2%) fs: ext4 dev: /dev/nvme0n1p5 maj-min: 259:5 
  ID-2: /boot/efi raw-size: 260 MiB size: 256 MiB (98.46%) 
  used: 29.9 MiB (11.7%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1 
Swap:
  Alert: No swap data was found. 
Sensors:
  System Temperatures: cpu: 47.0 C mobo: N/A gpu: nvidia temp: 47 C 
  Fan Speeds (RPM): N/A 
Info:
  Processes: 308 Uptime: 23m wakeups: 1 Memory: 15.42 GiB 
  used: 2.02 GiB (13.1%) Init: systemd v: 247 tool: systemctl Compilers: 
  gcc: 10.2.0 Packages: 1168 pacman: 1156 lib: 359 flatpak: 0 snap: 12 
  Shell: Bash v: 5.1.8 running-in: xfce4-terminal inxi: 3.3.04

I have followed the ArchWiki for troubleshooting the mic:

Followed also the other Manjaro posts about the mic not working, but none of the solutions posted there seemed to have been working. Last one I tried was creating a disable_dmic.conf file and putting the following setting:

options snd_hda_intel dmic_detect=0

Hope this is enough information, not sure what else to provide, but do not hesitate to ask.

Thank you!

when you started in to the boot loader did you switch to open source drivers or proprietary because alot of sound cards like intel sound cards use proprietary software which manjaro doesnt no include by default in the open source drivers like ubuntu or linux mint i think because i ran into the same problem you did and selecting proprietary software in the boot loader seemed to solve the problem for me on my machine is im runing a HP ENVY x360 Convertible 15-dr1xxx and my laptop like yours has a simlar sound card

1 Like

Yes before the install, I researched the difference between the 2 options and made sure to select the proprietary option instead.

System data shows the Sound Open Firmware drivers to support the internal digital microphone array (dmic) are probably installed, but only in use as alternate drivers

Device-1: Intel Comet Lake PCH cAVS vendor: Lenovo driver: snd_hda_intel 
  v: kernel alternate: snd_soc_skl,snd_sof_pci bus-ID: 00:1f.3 
  chip-ID: 8086:06c8 class-ID: 0403 

I suggest you check package sof-firmware is installed to make sure all the required drivers are available for ALSA

pamac info sof-firmware

The modprobe option mentioned in OP will only work to disable the dmic for kernel v5.4 and earlier

No output of speaker (heaphone and handset working properly)
this option has now been deprecated and does not work with kernel v5.8
If you want to continue using system with the internal dmic disabled
replacing the old modprobe option with `options snd-intel-dspcfg dsp_driver=1’
should get system working as before

Problem with headphones audio
The new modprobe option options snd-intel-dspcfg dsp_driver=1 might not be needed if the internal microphone array is supported by Sound Open Firmware drivers

It might be possible to change the modprobe option to force use of snd_sof_pci instead of snd_hda_intel

options snd-intel-dspcfg dsp_driver=3

If that option does not support the dmic for this system you may need to contact sofproject to consider if a driver patch is needed – Issues · thesofproject/sof · GitHub
I do not see any previous issues reported for a ‘Lenovo Legion’ system


@hotechman
Sound Open Firmware is an open source project

sofproject.org
BSD/MIT licensed firmware and BSD/GPL licensed drivers

The Non-Free GRUB boot option in Live ISO does not install audio drivers
Manjaro-User-Guide — Choosing the drivers

1 Like

Hello,

I ran the info for sof-firmware and it is installed:

Name                  : sof-firmware
Version               : 1.7-2
Description           : Sound Open Firmware
URL                   : https://www.sofproject.org/
Licenses              : custom:BSD custom:ISC
Repository            : extra
Installed Size        : 9.9 MB
Packager              : Jan Alexander Steffens (heftig) <heftig@archlinux.org>
Build Date            : 2021-04-07
Install Date          : 2021-05-19
Install Reason        : Installed as a dependency for another package
Signatures            : Yes

For the option dsp_driver=3, as soon as I added that and rebooted my computer, audio stopped working entirely. Undid my change and rebooted my station, and now the audio is back, but the mic is still not working. I removed the disable_dmic.conf file entirely since it was not doing anything.

Side question to better understand the modprobe directory. How do you know which *.conf file to create in that directory? I have seen multiple forum posts that each had a different *.conf file with their own name (for example: alsa-base.conf and the one I used on my OP).

I will create a ticket on the SOF site and see if I get a reply. When I get an update, I will make sure to post it here.

Thank you so much for your help!

The modprobe option snd-intel-dspcfg dsp_driver= can use numbers 0-3 for loading Intel drivers
0 - auto-detect driver
1 - snd_hda_intel ‘legacy’ driver without internal mic support
2 - snd_skl_soc ( for 7th and 8th gen Intel CPUs)
3 - snd_sof_pci (for 9th gen or later Intel CPU including Comet Lake)

Most other audio modprobe options are for hardware specific motherboard or laptop patches

The name of the *.conf file is not usually important, as long as it ends in .conf
The files are read and processed by system in numeric alphabetical order so they can be named to load in a specific order, but it is not a problem for loading one or two audio options

On Archwiki and other distributions the audio files are usually all called alsa-base.conf
When I suggest using a modprobe option on this forum I try to use different names so I can find them again with a forum search at a later date

1 Like

Thank you for the explanation, now I understand more and more how this works. My problem is I was blindly following solution online without any understanding.

I did some more digging and I ran pacmd list-cards:

2 card(s) available.
index: 0

name: <alsa_card.pci-0000_01_00.1>
driver: <module-alsa-card.c>
owner module: 6
properties:
alsa.card = “1”
alsa.card_name = “HDA NVidia”
alsa.long_card_name = “HDA NVidia at 0xb5000000 irq 17”
alsa.driver_name = “snd_hda_intel”
device.bus_path = “pci-0000:01:00.1”
sysfs.path = “/devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1”
device.bus = “pci”
device.vendor.id = “10de”
device.vendor.name = “NVIDIA Corporation”
device.product.id = “10f9”
device.product.name = “TU106 High Definition Audio Controller”
device.string = “1”
device.description = “TU106 High Definition Audio Controller”
module-udev-detect.discovered = “1”
device.icon_name = “audio-card-pci”
profiles:
output:hdmi-stereo: Digital Stereo (HDMI) Output (priority 5900, available: no)
output:hdmi-surround: Digital Surround 5.1 (HDMI) Output (priority 800, available: no)
output:hdmi-surround71: Digital Surround 7.1 (HDMI) Output (priority 800, available: no)
output:hdmi-stereo-extra1: Digital Stereo (HDMI 2) Output (priority 5700, available: no)
output:hdmi-surround-extra1: Digital Surround 5.1 (HDMI 2) Output (priority 600, available: no)
output:hdmi-surround71-extra1: Digital Surround 7.1 (HDMI 2) Output (priority 600, available: no)
output:hdmi-stereo-extra2: Digital Stereo (HDMI 3) Output (priority 5700, available: no)
output:hdmi-surround-extra2: Digital Surround 5.1 (HDMI 3) Output (priority 600, available: no)
output:hdmi-surround71-extra2: Digital Surround 7.1 (HDMI 3) Output (priority 600, available: no)
output:hdmi-stereo-extra3: Digital Stereo (HDMI 4) Output (priority 5700, available: no)
output:hdmi-surround-extra3: Digital Surround 5.1 (HDMI 4) Output (priority 600, available: no)
output:hdmi-surround71-extra3: Digital Surround 7.1 (HDMI 4) Output (priority 600, available: no)
output:hdmi-stereo-extra4: Digital Stereo (HDMI 5) Output (priority 5700, available: no)
output:hdmi-surround-extra4: Digital Surround 5.1 (HDMI 5) Output (priority 600, available: no)
output:hdmi-surround71-extra4: Digital Surround 7.1 (HDMI 5) Output (priority 600, available: no)
off: Off (priority 0, available: unknown)
active profile:
ports:
hdmi-output-0: HDMI / DisplayPort (priority 5900, latency offset 0 usec, available: no)
properties:
device.icon_name = “video-display”
hdmi-output-1: HDMI / DisplayPort 2 (priority 5800, latency offset 0 usec, available: no)
properties:
device.icon_name = “video-display”
hdmi-output-2: HDMI / DisplayPort 3 (priority 5700, latency offset 0 usec, available: no)
properties:
device.icon_name = “video-display”
hdmi-output-3: HDMI / DisplayPort 4 (priority 5600, latency offset 0 usec, available: no)
properties:
device.icon_name = “video-display”
hdmi-output-4: HDMI / DisplayPort 5 (priority 5500, latency offset 0 usec, available: no)
properties:
device.icon_name = “video-display”

index: 1

name: <alsa_card.pci-0000_00_1f.3>
driver: <module-alsa-card.c>
owner module: 7
properties:
alsa.card = “0”
alsa.card_name = “HDA Intel PCH”
alsa.long_card_name = “HDA Intel PCH at 0xb249c000 irq 157”
alsa.driver_name = “snd_hda_intel”
device.bus_path = “pci-0000:00:1f.3”
sysfs.path = “/devices/pci0000:00/0000:00:1f.3/sound/card0”
device.bus = “pci”
device.vendor.id = “8086”
device.vendor.name = “Intel Corporation”
device.product.id = “06c8”
device.product.name = “Comet Lake PCH cAVS”
device.form_factor = “internal”
device.string = “0”
device.description = “Built-in Audio”
module-udev-detect.discovered = “1”
device.icon_name = “audio-card-pci”
profiles:
input:analog-stereo: Analog Stereo Input (priority 65, available: unknown)
output:analog-stereo: Analog Stereo Output (priority 6500, available: unknown)
output:analog-stereo+input:analog-stereo: Analog Stereo Duplex (priority 6565, available: unknown)
off: Off (priority 0, available: unknown)
active profile: output:analog-stereo+input:analog-stereo
sinks:
alsa_output.pci-0000_00_1f.3.analog-stereo/#0: Built-in Audio Analog Stereo
sources:
alsa_output.pci-0000_00_1f.3.analog-stereo.monitor/#0: Monitor of Built-in Audio Analog Stereo
alsa_input.pci-0000_00_1f.3.analog-stereo/#1: Built-in Audio Analog Stereo
ports:
analog-input-internal-mic: Internal Microphone (priority 8900, latency offset 0 usec, available: unknown)
properties:
device.icon_name = “audio-input-microphone”
analog-input-mic: Microphone (priority 8700, latency offset 0 usec, available: no)
properties:
device.icon_name = “audio-input-microphone”
analog-output-speaker: Speakers (priority 10000, latency offset 0 usec, available: unknown)
properties:
device.icon_name = “audio-speakers”
analog-output-headphones: Headphones (priority 9900, latency offset 0 usec, available: no)
properties:
device.icon_name = “audio-headphones”

Before on Discord, I was seeing Index 0 as my input for my mic which is the HDMI which I do not think I am using. So I changed in the file /etc/pulse/default.pa to be on the second profile Index 1 which has my internal mic listed under the Sources.

Now in Discord I do see the Index 1 as an option and in PulseAudio the bar is moving just above the Advanced options. Unfortunately I still do not hear the mic, but it might be something:

Also tried to reinstalling pulseaudio, but that did not do anything.

Is there a way for me to reinstall the audio drivers completely as if it was a fresh Manjaro install without actually reinstalling Manjaro?

Alright I finally figured it out. My problem was that my laptop was trying to get the microphone from the headphone jack instead of the internal mic from my laptop.

How I realised this was in PulseAudio, under the Input Devices tab I saw 2 options for the Port dropdown:

  • Internal Microphone (unplugged)
  • Headphones (Plugged In)

It was the (unplugged) part that gave me the clue that it was not detecting the internal mic.
After some research I installed this tool:

sudo pacman -S alsa-tools

Then ran this in the terminal to start it up:

hdajackretask

Finally, override the Black Mic and set it to Not Connected. Installed the boot override and restarted my computer, which then worked:

Credit for this solution goes to this post:
https://askubuntu.com/questions/1218136/internal-microphone-doesnt-work-when-using-headphones

Thank you nik for your help. You made me understand a lot more about linux and now I can use Manjaro as my only OS.

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.