Noise saturation in laptop microphone

I installed Manjaro on my laptop (Asus K53SD), and it has been a fantastic operating system in all but one thing: the microphone.

When I plug in my headset, I can hear everything clearly, the problem lies in the microphone: when I record it sounds oversaturated and I can hardly distinguish my voice. This problem is both with headphones and with the laptop’s own microphone, and I think it is not a problem of damaged hardware, since I have dual boot with windows 10, and there you can hear perfectly the internal microphone and the one of the headset. To illustrate it better, I recorded a test with OBS by raising and lowering the volume, I warn you that there are very loud noises:

youtube.com/watch?v=oN5hh5yLuzs

this is my inxi -fazy output:

System:
  Kernel: 5.15.12-1-MANJARO x86_64 bits: 64 compiler: gcc v: 11.1.0
    parameters: BOOT_IMAGE=/boot/vmlinuz-5.15-x86_64
    root=UUID=06b94d6b-7930-4fca-8967-dbc6dcf3a0a2 rw quiet apparmor=1
    security=apparmor udev.log_priority=3
  Desktop: KDE Plasma 5.23.4 tk: Qt 5.15.2 wm: kwin_x11 vt: 1 dm: SDDM
    Distro: Manjaro Linux base: Arch Linux
Machine:
  Type: Laptop System: ASUSTeK product: K53SD v: 1.0
    serial: <superuser required>
  Mobo: ASUSTeK model: K53SD v: 1.0 serial: <superuser required>
    UEFI: American Megatrends v: K53SD.205 date: 03/06/2012
Battery:
  ID-1: BAT0 charge: 0 Wh (0.0%) condition: 29.6/48.4 Wh (61.2%) volts: 11.4
    min: 11.1 model: ASUSTek type: Li-ion serial: N/A status: N/A
  Device-1: hidpp_battery_0 model: Logitech Wireless Mouse M185
    serial: <filter> charge: 5% (should be ignored) rechargeable: yes
    status: Discharging
CPU:
  Info: model: Intel Core i7-2670QM bits: 64 type: MT MCP arch: Sandy Bridge
    family: 6 model-id: 0x2A (42) stepping: 7 microcode: 0x2F
  Topology: cpus: 1x cores: 4 tpc: 2 threads: 8 smt: enabled cache:
    L1: 256 KiB desc: d-4x32 KiB; i-4x32 KiB L2: 1024 KiB desc: 4x256 KiB
    L3: 6 MiB desc: 1x6 MiB
  Speed (MHz): avg: 982 high: 1203 min/max: 800/3100 scaling:
    driver: intel_cpufreq governor: schedutil cores: 1: 953 2: 857 3: 1080
    4: 1167 5: 871 6: 1203 7: 840 8: 892 bogomips: 35128
  Flags: avx ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities:
  Type: itlb_multihit status: KVM: VMX disabled
  Type: l1tf
    mitigation: PTE Inversion; VMX: conditional cache flushes, SMT vulnerable
  Type: mds mitigation: Clear CPU buffers; SMT vulnerable
  Type: meltdown mitigation: PTI
  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: Full generic retpoline, IBPB: conditional,
    IBRS_FW, STIBP: conditional, RSB filling
  Type: srbds status: Not affected
  Type: tsx_async_abort status: Not affected
Graphics:
  Device-1: Intel 2nd Generation Core Processor Family Integrated Graphics
    vendor: ASUSTeK driver: i915 v: kernel bus-ID: 00:02.0 chip-ID: 8086:0116
    class-ID: 0300
  Device-2: NVIDIA GF119M [GeForce 610M] driver: N/A
    alternate: nouveau, nvidia_drm, nvidia bus-ID: 01:00.0 chip-ID: 10de:1058
    class-ID: 0300
  Device-3: IMC Networks UVC VGA Webcam type: USB driver: uvcvideo
    bus-ID: 1-1.2:3 chip-ID: 13d3:5710 class-ID: 0e02 serial: <filter>
  Display: x11 server: X.Org 1.21.1.2 compositor: kwin_x11 driver:
    loaded: intel display-ID: :0 screens: 1
  Screen-1: 0 s-res: 1366x768 s-dpi: 96 s-size: 361x203mm (14.2x8.0")
    s-diag: 414mm (16.3")
  Monitor-1: LVDS1 res: 1366x768 hz: 60 dpi: 102 size: 340x190mm (13.4x7.5")
    diag: 389mm (15.3")
  OpenGL: renderer: Mesa DRI Intel HD Graphics 3000 (SNB GT2)
    v: 3.3 Mesa 21.3.2 compat-v: 3.0 direct render: Yes
Audio:
  Device-1: Intel 6 Series/C200 Series Family High Definition Audio
    vendor: ASUSTeK driver: snd_hda_intel v: kernel bus-ID: 00:1b.0
    chip-ID: 8086:1c20 class-ID: 0403
  Sound Server-1: ALSA v: k5.15.12-1-MANJARO running: yes
  Sound Server-2: JACK v: 1.9.19 running: no
  Sound Server-3: PulseAudio v: 15.0 running: yes
  Sound Server-4: PipeWire v: 0.3.42 running: yes
Network:
  Device-1: Intel Centrino Wireless-N 100 driver: iwlwifi v: kernel
    bus-ID: 03:00.0 chip-ID: 8086:08ae class-ID: 0280
  IF: wlp3s0 state: up mac: <filter>
  Device-2: Qualcomm Atheros AR8151 v2.0 Gigabit Ethernet vendor: ASUSTeK
    driver: atl1c v: kernel port: 9000 bus-ID: 05:00.0 chip-ID: 1969:1083
    class-ID: 0200
  IF: enp5s0 state: down mac: <filter>
Drives:
  Local Storage: total: 698.64 GiB used: 638.03 GiB (91.3%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/sda maj-min: 8:0 vendor: Western Digital
    model: WD7500BPVT-80HXZT3 size: 698.64 GiB block-size: physical: 4096 B
    logical: 512 B speed: 3.0 Gb/s type: HDD rpm: 5400 serial: <filter>
    rev: 1A01 scheme: GPT
Partition:
  ID-1: / raw-size: 30 GiB size: 29.36 GiB (97.87%) used: 26.94 GiB (91.8%)
    fs: ext4 dev: /dev/sda5 maj-min: 8:5
  ID-2: /boot/efi raw-size: 200.2 MiB size: 197 MiB (98.44%)
    used: 274 KiB (0.1%) fs: vfat dev: /dev/sda7 maj-min: 8:7
  ID-3: /home raw-size: 69.8 GiB size: 68.16 GiB (97.64%)
    used: 53.32 GiB (78.2%) fs: ext4 dev: /dev/sda6 maj-min: 8:6
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default)
  ID-1: swap-1 type: file size: 4 GiB used: 0 KiB (0.0%) priority: -2
    file: /swapfile
Sensors:
  System Temperatures: cpu: 55.0 C mobo: N/A
  Fan Speeds (RPM): cpu: 1600
Info:
  Processes: 278 Uptime: 1h 32m wakeups: 7 Memory: 7.54 GiB
  used: 4.53 GiB (60.0%) Init: systemd v: 250 tool: systemctl Compilers:
  gcc: 11.1.0 clang: 13.0.0 Packages: pacman: 1535 lib: 415 flatpak: 0
  Shell: Zsh v: 5.8 default: Bash v: 5.1.12 running-in: konsole inxi: 3.3.11

This is my pactl list cards output:

Placa #0
        Nombre: alsa_card.pci-0000_00_1b.0
        Controlador: module-alsa-card.c
        Módulo propietario: 6
        Propiedades:
                alsa.card = "0"
                alsa.card_name = "HDA Intel PCH"
                alsa.long_card_name = "HDA Intel PCH at 0xdf000000 irq 41"
                alsa.driver_name = "snd_hda_intel"
                device.bus_path = "pci-0000:00:1b.0"
                sysfs.path = "/devices/pci0000:00/0000:00:1b.0/sound/card0"
                device.bus = "pci"
                device.vendor.id = "8086"
                device.vendor.name = "Intel Corporation"
                device.product.id = "1c20"
                device.product.name = "6 Series/C200 Series Chipset Family High Definition Audio Controller"
                device.form_factor = "internal"
                device.string = "0"
                device.description = "Audio Interno"
                module-udev-detect.discovered = "1"
                device.icon_name = "audio-card-pci"
        Perfiles:
                input:analog-stereo: Entrada Estéreo analógico (sinks: 0, sources: 1, priority: 32833, available: sí)
                output:analog-stereo: Salida Estéreo analógico (sinks: 1, sources: 0, priority: 39268, available: sí)
                output:analog-stereo+input:analog-stereo: Estéreo analógico dúplex (sinks: 1, sources: 1, priority: 39333, available: sí)
                output:hdmi-stereo: Salida Digital Stereo (HDMI) (sinks: 1, sources: 0, priority: 5900, available: no)
                output:hdmi-stereo+input:analog-stereo: Salida Digital Stereo (HDMI) + Entrada Estéreo analógico (sinks: 1, sources: 1, priority: 5965, available: sí)
                output:hdmi-surround: Salida Digital Surround 5.1 (HDMI) (sinks: 1, sources: 0, priority: 800, available: no)
                output:hdmi-surround+input:analog-stereo: Salida Digital Surround 5.1 (HDMI) + Entrada Estéreo analógico (sinks: 1, sources: 1, priority: 865, available: sí)
                output:hdmi-surround71: Salida Digital Surround 7.1 (HDMI) (sinks: 1, sources: 0, priority: 800, available: no)
                output:hdmi-surround71+input:analog-stereo: Salida Digital Surround 7.1 (HDMI) + Entrada Estéreo analógico (sinks: 1, sources: 1, priority: 865, available: sí)
                off: Apagado (sinks: 0, sources: 0, priority: 0, available: sí)
        Perfil Activo: output:analog-stereo+input:analog-stereo
        Puertos:
                analog-input-internal-mic: Internal Microphone (type: Mic, priority: 8900, latency offset: 0 usec, disponibilidad desconocida)
                        Propiedades:
                                device.icon_name = "audio-input-microphone"
                        Parte de perfil/es: input:analog-stereo, output:analog-stereo+input:analog-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71+input:analog-stereo
                analog-input-mic: Microphone (type: Mic, priority: 8700, latency offset: 0 usec, not available)
                        Propiedades:
                                device.icon_name = "audio-input-microphone"
                        Parte de perfil/es: input:analog-stereo, output:analog-stereo+input:analog-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71+input:analog-stereo
                analog-output-speaker: Speakers (type: Altavoz, priority: 10000, latency offset: 0 usec, not available)
                        Propiedades:
                                device.icon_name = "audio-speakers"
                        Parte de perfil/es: output:analog-stereo, output:analog-stereo+input:analog-stereo
                analog-output-headphones: Headphones (type: Auriculares, priority: 9900, latency offset: 0 usec, disponible)
                        Propiedades:
                                device.icon_name = "audio-headphones"
                        Parte de perfil/es: output:analog-stereo, output:analog-stereo+input:analog-stereo
                hdmi-output-0: HDMI / DisplayPort (type: HDMI, priority: 5900, latency offset: 0 usec, not available)
                        Propiedades:
                                device.icon_name = "video-display"
                        Parte de perfil/es: output:hdmi-stereo, output:hdmi-stereo+input:analog-stereo, output:hdmi-surround, output:hdmi-surround+input:analog-stereo, output:hdmi-surround71, output:hdmi-surround71+input:analog-stereo

I already try the noise cancelation in the troubleshooting guide of arch and my problem persist.

Test recording shows microphone capture level is too high and heavily clipped most of the time
Except for periods 10-11s and 15-16s when capture level is showing at about 40-45%

I suggest you reduce ALSA audio capture levels for audio capture

alsamixer --card=0 --view=capture

set Mic Boost and Internal Mic Boost to 0

and turn down Capture and Internal Mic to about 50%

save ALSA settings:

sudo alsactl store

and test microphone recording level again


Do not try to match microphone level to other audio streams using the level meters in PulseAudio

PulseAudio remixes a mono microphone to stereo and the optimal audio capture level for the stereo level meters appears to be approximately -6.0 dB lower (about half as loud as the original mono)
Pan law - Wikipedia

1 Like