JBL headset microphone isn't detected

Hi, newbie here

I am totally new to linux and decided to use garuda as my first distro.

The issue in hand is the following: When I connect my JBL quantum 200 headset, the system doesn't detect its microphone. Keep in mind it detects the headset as headphones and I can listen through them.

Any help would be appreciated, thanks.

garuda inxi, I think:

Kernel: 5.16.4-zen1-1-zen x86_64 bits: 64 compiler: gcc v: 11.1.0
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=b6fb8ae3-ea66-4e2c-821d-7b2771c302a6 rw rootflags=subvol=@
quiet splash rd.udev.log_priority=3 vt.global_cursor_default=0
resume=UUID=ae522201-9794-47b8-b6f4-827e937fbc08 loglevel=3
Desktop: KDE Plasma 5.23.5 tk: Qt 5.15.2 info: latte-dock wm: kwin_x11
vt: 1 dm: SDDM Distro: Garuda Linux base: Arch Linux
Type: Laptop System: ASUSTeK product: ROG Strix G531GT_G531GT v: 1.0
serial: <superuser required>
Mobo: ASUSTeK model: G531GT v: 1.0 serial: <superuser required>
UEFI: American Megatrends v: G531GT.308 date: 02/01/2021
ID-1: BAT0 charge: 23.2 Wh (78.6%) condition: 29.5/50.5 Wh (58.3%)
volts: 12.5 min: 12.5 model: ASUSTeK ASUS Battery type: Li-ion serial: N/A
status: Charging
Info: model: Intel Core i7-9750H bits: 64 type: MT MCP arch: Coffee Lake
family: 6 model-id: 0x9E (158) stepping: 0xA (10) microcode: 0xEA
Topology: cpus: 1x cores: 6 tpc: 2 threads: 12 smt: enabled cache:
L1: 384 KiB desc: d-6x32 KiB; i-6x32 KiB L2: 1.5 MiB desc: 6x256 KiB
L3: 12 MiB desc: 1x12 MiB
Speed (MHz): avg: 4057 high: 4098 min/max: 800/4500 scaling:
driver: intel_pstate governor: performance cores: 1: 4019 2: 4011 3: 3996
4: 4096 5: 4091 6: 4083 7: 4098 8: 3995 9: 4081 10: 4077 11: 4080
12: 4062 bogomips: 62399
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx
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
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 mitigation: Microcode
Type: tsx_async_abort status: Not affected
Device-1: Intel CoffeeLake-H GT2 [UHD Graphics 630] vendor: ASUSTeK
driver: i915 v: kernel bus-ID: 00:02.0 chip-ID: 8086:3e9b class-ID: 0300
Device-2: NVIDIA TU117M [GeForce GTX 1650 Mobile / Max-Q] vendor: ASUSTeK
driver: nvidia v: 495.46 alternate: nouveau,nvidia_drm bus-ID: 01:00.0
chip-ID: 10de:1f91 class-ID: 0300
Display: x11 server: X.Org compositor: kwin_x11 driver:
loaded: modesetting,nvidia display-ID: :0 screens: 1
Screen-1: 0 s-res: 1920x1080 s-dpi: 96 s-size: 508x285mm (20.0x11.2")
s-diag: 582mm (22.9")
Monitor-1: eDP-1 res: 1920x1080 hz: 120 dpi: 142
size: 344x194mm (13.5x7.6") diag: 395mm (15.5")
OpenGL: renderer: Mesa Intel UHD Graphics 630 (CFL GT2)
v: 4.6 Mesa 21.3.5 direct render: Yes
Device-1: Intel Cannon Lake PCH cAVS vendor: ASUSTeK driver: snd_hda_intel
v: kernel alternate: snd_soc_skl,snd_sof_pci_intel_cnl bus-ID: 00:1f.3
chip-ID: 8086:a348 class-ID: 0403
Device-2: NVIDIA vendor: ASUSTeK driver: snd_hda_intel v: kernel
bus-ID: 01:00.1 chip-ID: 10de:10fa class-ID: 0403
Sound Server-1: ALSA v: k5.16.4-zen1-1-zen running: yes
Sound Server-2: PulseAudio v: 15.0 running: no
Sound Server-3: PipeWire v: 0.3.44 running: yes
Device-1: Intel Cannon Lake PCH CNVi WiFi driver: iwlwifi v: kernel
bus-ID: 00:14.3 chip-ID: 8086:a370 class-ID: 0280
IF: wlo1 state: down mac: <filter>
Device-2: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
vendor: ASUSTeK driver: r8169 v: kernel port: 3000 bus-ID: 03:00.0
chip-ID: 10ec:8168 class-ID: 0200
IF: eno2 state: up speed: 100 Mbps duplex: full mac: <filter>
Device-1: Intel Bluetooth 9460/9560 Jefferson Peak (JfP) type: USB
driver: btusb v: 0.8 bus-ID: 1-14:4 chip-ID: 8087:0aaa class-ID: e001
Report: bt-adapter ID: hci0 rfk-id: 0 state: down
bt-service: enabled,running rfk-block: hardware: no software: yes
address: <filter>
Local Storage: total: 476.94 GiB used: 100.53 GiB (21.1%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/nvme0n1 maj-min: 259:0 vendor: Micron
model: 2200V MTFDHBA512TCK size: 476.94 GiB block-size: physical: 512 B
logical: 512 B speed: 31.6 Gb/s lanes: 4 type: SSD serial: <filter>
rev: P1MA0V4 temp: 49.9 C scheme: GPT
ID-1: / raw-size: 467.84 GiB size: 467.84 GiB (100.00%)
used: 100.53 GiB (21.5%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
used: 576 KiB (0.2%) fs: vfat dev: /dev/nvme0n1p1 maj-min: 259:1
ID-3: /home raw-size: 467.84 GiB size: 467.84 GiB (100.00%)
used: 100.53 GiB (21.5%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-4: /var/log raw-size: 467.84 GiB size: 467.84 GiB (100.00%)
used: 100.53 GiB (21.5%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
ID-5: /var/tmp raw-size: 467.84 GiB size: 467.84 GiB (100.00%)
used: 100.53 GiB (21.5%) fs: btrfs dev: /dev/nvme0n1p2 maj-min: 259:2
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)
ID-1: swap-1 type: partition size: 8.8 GiB used: 0 KiB (0.0%)
priority: -2 dev: /dev/nvme0n1p3 maj-min: 259:3
ID-2: swap-2 type: zram size: 7.61 GiB used: 1.82 GiB (24.0%)
priority: 100 dev: /dev/zram0
System Temperatures: cpu: 69.0 C pch: 68.0 C mobo: N/A
Fan Speeds (RPM): cpu: 5000
Processes: 333 Uptime: 1h 53m wakeups: 11 Memory: 7.61 GiB
used: 5.32 GiB (69.8%) Init: systemd v: 250 tool: systemctl Compilers:
gcc: 11.1.0 clang: 13.0.0 Packages: pacman: 1805 lib: 546 Shell: fish
v: 3.3.1 default: Bash v: 5.1.16 running-in: konsole inxi: 3.3.12
Garuda (2.5.3-1):
System install date:     2022-01-31
Last full system update: 2022-01-31
Is partially upgraded:   No
Relevant software:       NetworkManager
Windows dual boot:       Probably (Run as root to verify)
Snapshots:               Snapper
Failed units:

I was going to check what DE you are using but you forgot to post your garuda-inxi. Do you mind editing your post to include that?

Just did, I think

I move it from #issues-assistance:newbies to #issues-assistance:dual-boot-unsupported-hardware-software

Welcome to the forum @Electric :slight_smile:

Please use next time three ~ in first and last line from terminal text. :slight_smile:

1 Like

What is the output of pw-record --list-targets?

Available targets ("*" denotes default): alsa_input.pci-0000_00_1f.3.analog-stereo
*      58: source description="Built-in Audio Analog Stereo" prio=2009
       33: monitor description="JamesDSP Sink" prio=-1
       48: monitor description="Built-in Audio Analog Stereo" prio=1009

There is a suggested fix in the Arch Wiki (if you are feeling brave–sorry, I know you said you are brand new and this is your first distro :grimacing:). If you can bear with me, it might be worth a shot.

From the wiki:

Microphone is not detected by PipeWire
PipeWire’s alsa-monitor module uses alsa-card-profiles to detect devices by default. If this is not working for you, try to turn off api.alsa.use-acp, or optionally turn on api.alsa.use-ucm.

It goes on to say there is a config file located at /usr/share/pipewire/media-session.d/alsa-monitor.conf that contains the line api.alsa.use-acp = true and you want to change it to false. The actual article specifies a different path, but it looks like on Garuda that’s where it is.

A best practice is to save a copy of this config in your local profile, somewhere Pipewire knows to look for it, instead of changing the system file. This way if it causes problems or just doesn’t work, you can just redo your local copy or delete it, and not have to worry about the changes you made to a system file.

The path they recommend to save your local copy in Arch wiki is ~/.config/pipewire/media-session.d/alsa-monitor.conf. Since I do not have the /pipewire/media-session.d/ part of that, I will guess you do not either so you’ll have to make it:

mkdir ~/.config/pipewire/
mkdir ~/.config/pipewire/media-session.d/

To copy the config locally:

cp /usr/share/pipewire/media-session.d/alsa-monitor.conf ~/.config/pipewire/media-session.d/alsa-monitor.conf

And then edit the copy you just made:

micro ~/.config/pipewire/media-session.d/alsa-monitor.conf

You’ll have to go down to find the line that says api.alsa.use-acp = true, on mine it is line 45. Make sure it is not one of the lines with a “#” in front–those are commented out (they don’t count, basically). Change the true to false and then press Ctrl+Q to quit out of micro. It will prompt you to save, press “Y” and then enter to save.

Reboot, cross your fingers, and check again:

pw-record --list-targets


I almost forgot the second part of the suggested fix (if the first thing doesn’t work).

The other option would be to turn on the api.alsa.use-ucm = true line. If you want to try that, you would go in to edit the same file again:

micro ~/.config/pipewire/media-session.d/alsa-monitor.conf

Go down to line 49 (yours might be different, its a few lines down from the one you just edited) where it says #api.alsa.use-ucm = true and delete the “#”. That basically “turns on” that value.

Ctrl+q to quit micro, “Y” to save, reboot, good luck!

Reference: PipeWire - ArchWiki


On stock KDE plasma in pavucontrol under Configuration, choose Analog Stereo Duplex profile.


didn't work :pensive:

it's already in that profile

I'm not sure if you are still troubleshooting this or not, but I read something on another forum and was reminded of this thread.

This bug was reported recently: 211853 – Realtek ALC295 external headset microphone not working on Acer Spin 5 - SP513-54N

They fixed the bug with a Realtek patch listed here. That guy had an Acer laptop, but if you look at the patch they also have a version of the same code for Asus laptops here.

I modified this from what I originally found (to use the Asus version), but I'm pretty sure it's right if you want to give it a shot:

sudo tee /etc/modprobe.d/external-mic.conf <<< 'snd_sof_intel_hda_common hda_model=alc255-asus'

That file doesn't have to be named "external-mic", it can be called whatever you want--as long as it has ".conf" at the end it doesn't matter.

1 Like

This did it for me, just created an account to say thank you

1 Like