The microphone in the headphones picks up all sounds from the headphone speakers

Question: How do I fix the issue where the headphone microphone picks up all sounds from the speakers?

Details: I’ve started using Linux for the first time, choosing Fedora KDE Plasma 44. Everything is great, but there’s a problem with the input sound (the microphone). The problem is that the headphone microphone picks up all sounds coming from the speakers (talking on Discord, watching videos, playing games, testing through system settings). On Windows 11, this issue didn’t occur (or if it did, it was resolved by Realtek).

We need a lot more info about your system, the speakers in use, and the microphone. You said headphone so more details about what is heard.

A sensitive microphone could pick up all noise in the environment, speakers, talking, fans, and everything else.

It sounds as if your environment may be actually producing a low level feedback in the audio. (high level feedback would result in squealing)

In general, if using a headphone mic it is best to not use external speakers and instead use the headset to listen to the audio. Some apps have the ability to do noise cancellation but not all, and a noisy environment is definitely not conducive to a suitable conversation.

You may be able to reduce the mic sensitivity (input volume) and alleviate some of the issue, but how much and if that would be acceptable depends on you and the environment.

Run inxi.

Or, I used AI to check how to fix this. You can still run Inxi, but hope this helps.

When your headphones are picking up sounds playing from your system (audio bleed/loopback), it is usually caused by an incorrect input device setting (like recording the "Monitor" instead of the mic) or missing echo cancellation.Here is how to quickly fix the issue on Fedora:1. Check for "Monitor" in PavucontrolIf your microphone is mistakenly set to record the computer's internal output, your friends will hear everything playing through your headphones.Open your terminal and run pavucontrol (or search for PulseAudio Volume Control).Go to the Input Devices tab. (If you don't see anything, click the dropdown in the bottom right corner and select All Input Devices).Look at the active microphone. If it says "Monitor of ..." (e.g., Monitor of Built-in Audio), your system is recording the desktop audio. Change this to your actual headset microphone.2. Enable System-Wide Echo CancellationIf you are using a built-in microphone and the speakers/headphones are bleeding straight into it, you can create a virtual filter.Open your terminal and run this command to temporarily load the echo cancellation module for your current session:pw-loopback -m echo-cancelTest your audio. If this solves it, you can apply it permanently:Run mkdir -p ~/.config/pipewire/pipewire.conf.d/Run nano ~/.config/pipewire/pipewire.conf.d/99-echo-cancel.confPaste the following text and save the file:textcontext.modules = [
  { name = libpipewire-module-echo-cancel }
]
Use code with caution.Restart your audio service by running: systemctl --user restart pipewire wireplumberFinally, in your meeting apps (Zoom, Teams, Discord), select Echo-Cancel Source as your Input Device.3. Use EasyEffects (GUI Noise & Echo Gate)If you prefer a graphical application with heavy noise suppression, you can install EasyEffects (available in your Software Center or as a Flatpak).Under the Input tab, enable the Noise Reduction or Echo Canceller.This processes your mic to completely eliminate system sounds or speaker echo before it gets broadcasted to other applications.

I’m using JBL Quantum 50 Black headphones (JBLQUANTUM50BLK) — small wired headphones with a TRRS 3.5mm jack connector. I listen to audio through them, not through the laptop’s speakers.
The microphone is picking up the system’s audio output in addition to my voice — for example, people can hear the video I’m listening to or an echo of their own voice, but my voice itself is also being captured correctly.

System info (inxi):

$ inxi -Faz --no-host
System:
  Kernel: 7.1.7-200.fc44.x86_64 arch: x86_64 bits: 64 compiler: gcc v: 16.1.1
    clocksource: tsc avail: acpi_pm
    parameters: BOOT_IMAGE=(hd0,gpt2)/vmlinuz-7.1.7-200.fc44.x86_64
    root=UUID=09abdc69-4413-451d-bf44-886ac0017ed5 ro rootflags=subvol=root
    rhgb quiet rd.driver.blacklist=nouveau,nova_core
    modprobe.blacklist=nouveau,nova_core
  Desktop: KDE Plasma v: 6.7.4 tk: Qt v: N/A info: frameworks v: 6.28.0
    wm: kwin_wayland vt: 1 dm: N/A Distro: Fedora Linux 44 (KDE Plasma Desktop
    Edition)
Machine:
  Type: Laptop System: LENOVO product: 82XV v: LOQ 15IRH8
    serial: <superuser required> Chassis: type: 10 v: LOQ 15IRH8
    serial: <superuser required>
  Mobo: LENOVO model: LNVNB161216 v: No DPK serial: <superuser required>
    part-nu: LENOVO_MT_82XV_BU_idea_FM_LOQ 15IRH8 uuid: <superuser required>
    Firmware: UEFI vendor: LENOVO v: LZCN44WW date: 12/17/2025
Battery:
  ID-1: BAT1 charge: 53.5 Wh (99.5%) condition: 53.7/60 Wh (89.6%)
    volts: 16.89 min: 15.44 model: COSMX L22X4PA0 type: Li-poly serial: <filter>
    charging: status: not charging type: standard
    avail: fast,long_life,standard cycles: 98
CPU:
  Info: model: 12th Gen Intel Core i5-12450H bits: 64 type: MST AMCP
    arch: Alder Lake gen: core 12 level: v3 note: check built: 2021+
    process: Intel 7 (10nm ESF) family: 6 model-id: 0x9A (154) stepping: 3
    microcode: 0x43B
  Topology: cpus: 1x dies: 1 clusters: 5 cores: 8 threads: 12 mt: 4 tpc: 2
    st: 4 smt: enabled cache: L1: 704 KiB desc: d-4x32 KiB, 4x48 KiB; i-4x32
    KiB, 4x64 KiB L2: 7 MiB desc: 4x1.2 MiB, 1x2 MiB L3: 12 MiB desc: 1x12 MiB
  Speed (MHz): avg: 1247 min/max: 400/4400:3300 scaling:
    driver: intel_pstate governor: powersave cores: 1: 1247 2: 1247 3: 1247
    4: 1247 5: 1247 6: 1247 7: 1247 8: 1247 9: 1247 10: 1247 11: 1247 12: 1247
    bogomips: 59904
  Flags-basic: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
  Vulnerabilities:
  Type: gather_data_sampling status: Not affected
  Type: ghostwrite status: Not affected
  Type: indirect_target_selection status: Not affected
  Type: itlb_multihit status: Not affected
  Type: l1tf status: Not affected
  Type: mds status: Not affected
  Type: meltdown status: Not affected
  Type: mmio_stale_data status: Not affected
  Type: old_microcode status: Not affected
  Type: reg_file_data_sampling mitigation: Clear Register File
  Type: retbleed status: Not affected
  Type: spec_rstack_overflow status: Not affected
  Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
    prctl
  Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
    sanitization
  Type: spectre_v2 mitigation: Enhanced / Automatic IBRS; IBPB:
    conditional; PBRSB-eIBRS: SW sequence; BHI: BHI_DIS_S
  Type: srbds status: Not affected
  Type: tsa status: Not affected
  Type: tsx_async_abort status: Not affected
  Type: vmscape mitigation: IBPB before exit to userspace
Graphics:
  Device-1: Intel Alder Lake-P GT1 [UHD Graphics] vendor: Lenovo driver: i915
    v: kernel alternate: xe arch: Xe process: Intel 10nm built: 2020-21 ports:
    active: eDP-1 empty: DP-1, DP-2, DP-3, DP-4 bus-ID: 00:02.0
    chip-ID: 8086:46a3 class-ID: 0300
  Device-2: NVIDIA AD107M [GeForce RTX 4050 Max-Q / Mobile] vendor: Lenovo
    driver: nvidia v: 610.57.04 alternate: nouveau,nvidia_drm
    non-free: 550-6xx.xx+ status: current (as of 2026-07) arch: Lovelace
    code: AD1xx process: TSMC n4 (5nm) built: 2022+ pcie: gen: 4
    speed: 16 GT/s lanes: 8 ports: active: none empty: DP-5,HDMI-A-1,eDP-2
    bus-ID: 01:00.0 chip-ID: 10de:28e1 class-ID: 0300
  Device-3: Bison Integrated Camera driver: uvcvideo type: USB rev: 2.0
    speed: 480 Mb/s lanes: 1 mode: 2.0 bus-ID: 1-7:4 chip-ID: 5986:215f
    class-ID: fe01 serial: <filter>
  Display: wayland server: Xwayland v: 24.1.13 compositor: kwin_wayland
    driver: gpu: i915 display-ID: 0
  Monitor-1: eDP-1 model: BOE Display 0x0ae3 built: 2021 res:
    mode: 1920x1080 hz: 144 scale: 100% (1) dpi: 142 gamma: 1.2
    size: 344x194mm (13.54x7.64") diag: 395mm (15.5") ratio: 16:9
    modes: 1920x1080
  API: EGL v: 1.5 hw: drv: intel iris drv: nvidia platforms: device: 0
    drv: nvidia device: 2 drv: iris device: 3 drv: swrast gbm: drv: nvidia
    surfaceless: drv: nvidia wayland: drv: iris x11: drv: iris
    inactive: device-1
  API: OpenGL v: 4.6.0 compat-v: 4.6 vendor: intel mesa v: 26.1.6 glx-v: 1.4
    direct-render: yes renderer: Mesa Intel Graphics (ADL GT2)
    device-ID: 8086:46a3 memory: 14.97 GiB unified: yes display-ID: :0.0
  API: Vulkan v: 1.4.341 layers: 5 device: 0 type: integrated-gpu name: Intel
    Graphics (ADL GT2) driver: mesa intel v: 26.1.6 device-ID: 8086:46a3
    surfaces: N/A device: 1 type: discrete-gpu name: NVIDIA GeForce RTX 4050
    Laptop GPU driver: nvidia v: 610.57.04 device-ID: 10de:28e1 surfaces: N/A
    device: 2 type: cpu name: llvmpipe (LLVM 22.1.8 256 bits)
    driver: mesa llvmpipe v: 26.1.6 (LLVM 22.1.8) device-ID: 10005:0000
    surfaces: N/A
  Info: Tools: api: clinfo, eglinfo, glxinfo, vulkaninfo
    de: kscreen-console,kscreen-doctor gpu: nvidia-settings,nvidia-smi
    wl: wayland-info x11: xdriinfo, xdpyinfo, xprop, xrandr
Audio:
  Device-1: Intel Alder Lake PCH-P High Definition Audio vendor: Lenovo
    driver: snd_hda_intel v: kernel alternate: snd_soc_avs,snd_sof_pci_intel_tgl
    bus-ID: 00:1f.3 chip-ID: 8086:51c8 class-ID: 0401
  Device-2: NVIDIA AD107 High Definition Audio vendor: Lenovo
    driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 8
    bus-ID: 01:00.1 chip-ID: 10de:22be class-ID: 0403
  API: ALSA v: k7.1.7-200.fc44.x86_64 status: kernel-api
    tools: alsactl,alsamixer,amixer
  Server-1: PipeWire v: 1.6.8 status: active with: 1: pipewire-pulse
    status: active 2: wireplumber status: active 3: pipewire-alsa type: plugin
    4: pw-jack type: plugin tools: pactl,pw-cat,pw-cli,wpctl
Network:
  Device-1: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet
    vendor: Lenovo driver: r8169 v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1
    port: 4000 bus-ID: 07:00.0 chip-ID: 10ec:8168 class-ID: 0200
  IF: enp7s0 state: up speed: 100 Mbps duplex: full mac: <filter>
  Device-2: Realtek RTL8852BE PCIe 802.11ax Wireless Network vendor: Lenovo
    driver: rtw89_8852be v: kernel pcie: gen: 1 speed: 2.5 GT/s lanes: 1
    port: 3000 bus-ID: 08:00.0 chip-ID: 10ec:b852 class-ID: 0280
  IF: wlp8s0 state: down mac: <filter>
  Info: services: NetworkManager
Bluetooth:
  Device-1: Realtek Bluetooth Radio driver: btusb v: 0.8 type: USB rev: 1.0
    speed: 12 Mb/s lanes: 1 mode: 1.1 bus-ID: 1-10:6 chip-ID: 0bda:4853
    class-ID: e001 serial: <filter>
  Report: btmgmt ID: hci0 rfk-id: 2 state: down bt-service: enabled,running
    rfk-block: hardware: no software: yes address: <filter> bt-v: 5.2 lmp-v: 11
    status: discoverable: no pairing: no
Drives:
  Local Storage: total: 476.94 GiB used: 59.97 GiB (12.6%)
  SMART Message: Unable to run smartctl. Root privileges required.
  ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: SK Hynix model: HFS512GEJ4X112N
    size: 476.94 GiB block-size: physical: 512 B logical: 512 B speed: 63.2 Gb/s
    lanes: 4 tech: SSD serial: <filter> fw-rev: 51040C31 temp: 35.9 C
    scheme: GPT
Partition:
  ID-1: / raw-size: 474.35 GiB size: 474.35 GiB (100.00%)
    used: 59.31 GiB (12.5%) fs: btrfs dev: /dev/nvme0n1p3 maj-min: 259:3
  ID-2: /boot raw-size: 2 GiB size: 1.9 GiB (95.01%) used: 655.9 MiB (33.7%)
    fs: ext4 dev: /dev/nvme0n1p2 maj-min: 259:2
  ID-3: /boot/efi raw-size: 600 MiB size: 598.8 MiB (99.80%)
    used: 28 MiB (4.7%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
  ID-4: /home raw-size: 474.35 GiB size: 474.35 GiB (100.00%)
    used: 59.31 GiB (12.5%) fs: btrfs dev: /dev/nvme0n1p3 maj-min: 259:3
Swap:
  Kernel: swappiness: 60 (default) cache-pressure: 100 (default) zswap: no
  ID-1: swap-1 type: zram size: 8 GiB used: 1.49 GiB (18.6%) priority: 100
    comp: lzo-rle avail: lzo,lz4,lz4hc,zstd,deflate,842 dev: /dev/zram0
Sensors:
  System Temperatures: cpu: 43.0 C mobo: N/A
  Fan Speeds (rpm): N/A
Info:
  Memory: total: 16 GiB note: est. available: 15.33 GiB used: 6.11 GiB (39.9%)
  Processes: 407 Power: uptime: 51m states: freeze,mem,disk suspend: deep
    avail: s2idle wakeups: 0 hibernate: platform avail: shutdown, reboot,
    suspend, test_resume image: 6.03 GiB services: org_kde_powerdevil,
    thermald, upowerd Init: systemd v: 259 default: graphical tool: systemctl
  Packages: pm: rpm pkgs: N/A note: see --rpm tools: dnf,yum pm: flatpak
    pkgs: 24 Compilers: gcc: 16.1.1 Shell: Bash v: 5.3.9 running-in: konsole
    inxi: 3.3.41

Kernel-level audio devices (ALSA):

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

Sound card info:

$ cat /proc/asound/cards
 0 [PCH            ]: HDA-Intel - HDA Intel PCH
                      HDA Intel PCH at 0x6203130000 irq 148
 1 [NVidia         ]: HDA-Intel - HDA NVidia
                      HDA NVidia at 0x52080000 irq 17

PipeWire sources (input devices):

$ pactl list sources short
51      alsa_output.pci-0000_00_1f.3.analog-stereo.monitor      PipeWire        s32le 2ch 48000Hz       SUSPENDED
52      alsa_input.pci-0000_00_1f.3.analog-stereo       PipeWire        s32le 2ch 48000Hz       SUSPENDED

WirePlumber/PipeWire status:

$ wpctl status
PipeWire 'pipewire-0' [1.6.8, Dandelion@fedora, cookie:2272082147]
 └─ Clients:
        33. uresourced                          [1.6.8, Dandelion@fedora, pid:1804]
        34. WirePlumber                         [1.6.8, Dandelion@fedora, pid:1822]
        42. WirePlumber [export]                [1.6.8, Dandelion@fedora, pid:1822]
        62. kwin_wayland                        [1.6.8, Dandelion@fedora, pid:1812]
        65. pipewire                            [1.6.8, Dandelion@fedora, pid:2102]
        66. libcanberra                         [1.6.8, Dandelion@fedora, pid:1977]
        67.                                     [1.6.8, Dandelion@fedora, pid:1977]
        68. plasmashell                         [1.6.8, Dandelion@fedora, pid:2006]
        69. libcanberra                         [1.6.8, Dandelion@fedora, pid:2006]
        70.                                     [1.6.8, Dandelion@fedora, pid:2006]
        71. KDE Connect Daemon                  [1.6.8, Dandelion@fedora, pid:2228]
        77. xdg-desktop-portal                  [1.6.8, Dandelion@fedora, pid:2371]
        78. WEBRTC VoiceEngine                  [1.6.8, Dandelion@fedora, pid:106]
        85. Firefox                             [1.6.8, Dandelion@fedora, pid:5505]
        87. speech-dispatcher-dummy             [1.6.8, Dandelion@fedora, pid:6649]
        94. Firefox                             [1.6.8, Dandelion@fedora, pid:5505]
       109. wpctl                               [1.6.8, Dandelion@fedora, pid:13991]
       112. Chromium input                      [1.6.8, Dandelion@fedora, pid:173]
       113. WEBRTC VoiceEngine                  [1.6.8, Dandelion@fedora, pid:106]

Audio
 ├─ Devices:
 │      43. AD107 High Definition Audio Controller [alsa]
 │      44. Built-in Audio                      [alsa]
 │  
 ├─ Sinks:
 │  *   51. Built-in Audio Analog Stereo        [vol: 0.50]
 │  
 ├─ Sources:
 │  *   52. Built-in Audio Analog Stereo        [vol: 1.00]
 │  
 ├─ Filters:
 │  
 └─ Streams:
        89. speech-dispatcher-dummy                                     
             88. output_FL       > ALC257 Analog:playback_FL    [init]
             91. output_FR       > ALC257 Analog:playback_FR    [init]
       136. Firefox                                                     
             79. output_FL       > ALC257 Analog:playback_FL    [init]
            118. output_FR       > ALC257 Analog:playback_FR    [init]

Video
 ├─ Devices:
 │      53. Integrated Camera                   [v4l2]
 │      54. Integrated Camera                   [v4l2]
 │      55. Integrated Camera: Integrated C     [libcamera]
 │  
 ├─ Sinks:
 │  
 ├─ Sources:
 │  *   63. Integrated Camera (V4L2)           
 │  
 ├─ Filters:
 │  
 └─ Streams:

Settings
 └─ Default Configured Devices:

PipeWire/WirePlumber package versions:

$ rpm -q pipewire wireplumber pipewire-pulseaudio
pipewire-1.6.8-1.fc44.x86_64
wireplumber-0.5.14-1.fc44.x86_64
pipewire-pulseaudio-1.6.8-1.fc44.x86_64

Kernel log for audio/codec detection:

$ dmesg | grep -i -E 'audio|codec|snd'
[    4.011621] snd_hda_intel 0000:00:1f.3: enabling device (0000 -> 0002)
[    4.013394] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops intel_audio_component_bind_ops [i915])
[    4.013787] snd_hda_intel 0000:01:00.1: enabling device (0000 -> 0002)
[    4.013870] snd_hda_intel 0000:01:00.1: Disabling MSI
[    4.013875] snd_hda_intel 0000:01:00.1: Handle vga_switcheroo audio client
[    4.135362] snd_hda_codec_alc269 hdaudioC0D0: ALC257: picked fixup  for PCI SSID 17aa:0000
[    4.135823] snd_hda_codec_alc269 hdaudioC0D0: autoconfig for ALC257: line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:speaker
[    4.135828] snd_hda_codec_alc269 hdaudioC0D0:    speaker_outs=0 (0x0/0x0/0x0/0x0/0x0)
[    4.135829] snd_hda_codec_alc269 hdaudioC0D0:    hp_outs=1 (0x21/0x0/0x0/0x0/0x0)
[    4.135831] snd_hda_codec_alc269 hdaudioC0D0:    mono: mono_out=0x0
[    4.135831] snd_hda_codec_alc269 hdaudioC0D0:    inputs:
[    4.135833] snd_hda_codec_alc269 hdaudioC0D0:      Internal Mic=0x12
[    4.135834] snd_hda_codec_alc269 hdaudioC0D0:      Mic=0x19

Real-time PipeWire node activity:

$ pw-top
S   30      0      0    ---     ---   ---   ---     0                  Dummy-Driver
S   31      0      0    ---     ---   ---   ---     0                  Freewheel-Driver
S   45      0      0    ---     ---   ---   ---     0                  Midi-Bridge
S   48      0      0    ---     ---   ---   ---     0                  bluez_midi.server
S   51      0      0    ---     ---   ---   ---     0                  alsa_output.pci-0000_00_1f.3.analog-ste
S   52      0      0    ---     ---   ---   ---     0                  alsa_input.pci-0000_00_1f.3.analog-ster
S   63      0      0    ---     ---   ---   ---     0                  v4l2_input.pci-0000_00_14.0-usb-0_7_1.0
I   89      0      0   0.0us   0.0us  ???   ???     0    S16LE 1 44100 speech-dispatcher-dummy
I  136      0      0   0.0us   0.0us  ???   ???     0    F32LE 2 48000 Firefox

I tried the options you listed, but unfortunately, the problem hasn’t gone away.

This used to be a common problem. Several mitigations are used:

  1. over-ear headphones and standalone microphone (expensive hardware)
  2. noise-cancellation with, e.g., rnnoise (Fedora package) or https://copr.fedorainfracloud.org/coprs/principis/NoiseTorch/, not always effective.
  3. software that removes headset output signal from microphone input — allows use of cheap headset and microphone but can create annoying glitches. On Windows: https://www.youtube.com/watch?v=pk3jaDRB58M.

I sent the AI the console output. As a result, it suggested the following method: “Digital DSP processing via the PipeWire WebRTC Echo Cancel module”: use the libpipewire-module-echo-cancel module by writing a configuration file for it, and then restart the PipeWire and WirePlumber system services (by running the command systemctl --user restart pipewire wireplumber). After that, a virtual microphone appeared, which performs its task quite successfully (I can communicate with people again, although once or twice a day it may glitch for a couple of seconds).

Contents of the configuration file:

context.modules = [
    {
        name = libpipewire-module-echo-cancel
        args = {
            library.name = "aec/libspa-aec-webrtc"
            node.latency = 1024/48000
            
            monitor.mode = true
            
            capture.props = {
                node.name = "Echo_Cancel_Capture"
                node.description = "ALC257 Raw Hardware Capture"
            }
            source.props = {
                node.name = "echo-cancel-source"
                node.description = "JBL Quantum 50 Microphone (Echo Cancelled)"
                filter.smart = true
                filter.smart.name = "echo-cancel-source"
            }
            sink.props = {
                node.name = "echo-cancel-sink"
                node.description = "JBL Quantum 50 Headphones (Echo Cancelled)"
                filter.smart = true
                filter.smart.name = "echo-cancel-sink"
            }
        }
    }
]