USB Wireless Headset Mic Only Works at 100% Volume or More

Hello everyone,

I’m sharing a persistent issue I had with my Fantech Tamago WHG01 USB headset microphone on Manjaro KDE, in case anyone else experiences this.

The Problem:

The microphone would only output sound when the input volume was set to exactly 100%. If I moved the slider to 99% or any lower value, the microphone would go completely silent. This happened in both KDE’s audio settings and pavucontrol.

Symptoms:

  • Microphone audio works perfectly at 100% volume.
  • Microphone audio cuts out completely at 99% or below.
  • This is an “all-or-nothing” behavior, not a gradual decrease in volume.

I tried several standard solutions, including creating WirePlumber rules to force a software mixer (api.alsa.soft-mixer) and even kernel module options (ignore_ctl_error), but none of them worked. The issue seems to be a deeply flawed firmware implementation in the headset itself.

After extensive diagnostics, I found a reliable workaround. I will post the full solution in the first comment.

In my other post for Gnome, there was a similar issue. Though that issue was with playback rather than the microphone.

This workaround bypasses the headset’s broken hardware volume control by creating a virtual microphone with a working software volume control.

The Solution: Create a Remapped Virtual Microphone

1. Identify Device’s Hardware Controls

First, find the specific hardware controls for the microphone.

  • Find your sound card’s index number:

    cat /proc/asound/cards
    

    (Look for your device, my Fantech was card 2).

  • List all controls for that card to find the “Mic Capture Volume” numid:

    amixer -c <CARD_INDEX> contents
    

    (Replace <CARD_INDEX> with your number. For my device, the numid was 5).

2. Create a Startup Script

This script will run every time you log in to apply the fix.

  • Create a directory for the script:

    mkdir -p ~/.config/autostart-scripts/
    
  • Create the script file using a text editor like kate:

    kate ~/.config/autostart-scripts/mic-fix.sh
    
  • Paste the following code into the script. You must edit the two values specific to your device.

    #!/bin/bash
    
    # Wait a few seconds for audio services to be fully loaded
    sleep 10
    
    # 1. LOCK THE HARDWARE VOLUME
    #    Replace '2' with your card index and '5' with your Mic Capture Volume numid.
    /usr/bin/amixer -c 2 cset numid=5 31
    
    # 2. CREATE THE VIRTUAL MICROPHONE
    #    This command finds your real mic by name and creates a virtual copy.
    #    Find your microphone's full name with `pactl list sources short`.
    /usr/bin/pactl load-module module-remap-source master=alsa_input.usb-XiiSound_Technology_Corporation_Fantech_Tamago_WHG01-00.mono-fallback source_name=Fantech-Virtual-Mic source_properties='device.description="Fantech Mic (FIXED)"'
    
    # 3. SET THE NEW MIC AS DEFAULT
    /usr/bin/pactl set-default-source Fantech-Virtual-Mic
    
  • Save the file and make it executable:

    chmod +x ~/.config/autostart-scripts/mic-fix.sh
    

3. Add the Script to KDE Autostart

  • Go to System Settings > System > Autostart.
  • Click “Add…”“Add Login Script…”.
  • Navigate to and select your mic-fix.sh script.
  • Click OK.

4. Reboot

After rebooting, a new input device named “Fantech Mic” will appear in your audio settings. It will be your default microphone and will have a fully functional volume slider from 0% to 100%.

I hope this helps anyone else with a similarly stubborn device

Please note that marking a topic “[solved]” in a topic title is discouraged - There is a Solution button for that purpose, found below every post from Post #2 onwards.

This would not have appeared below your first post.

Better to add it in the 2nd post, where it can actually be marked as the Solution.

I have edited the title accordingly; also made it a little shorter (Fantech Tamago WHG01 isn’t needed in the title, as you have clearly mentioned it in the first post).


Additionally, it seems your intention was only to share information. Opening a Support topic isn’t ideal. In future, the Contributions category might be better suited.

I have taken the liberty of moving the topic for you.

Please note also that A.I. assisted or generated content is not encouraged. It is expected that contributions be one’s own work; or be fully referenced.


Regards.

2 Likes

i didn’t know that. Thanks for mentioning.

Another possible solution for ALSA volume control issues is to disable dB scaling in Wireplumber

ALSA configuration — WirePlumber 0.5.6 documentation

api.alsa.ignore-dB

Setting this option to true will ignore the decibel setting configured by the driver. Use this when the driver reports wrong settings.

reddit.com/linuxaudio - ‘api.alsa.ignore.db=true’ and volume above 100%

I could not decrease the volume below 15% because the sound simply disappeared. I’ve solved this problem by creating a file /etc/wireplumber/main.lua.d/50-low-volume-fix.lua with the following content:

table.insert (alsa_monitor.rules, {
    matches = {
      { { "device.name", "matches", "alsa_card.*" }, },
    },
    apply_properties = {
      ["api.alsa.ignore-dB"] = true,
    },
})

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