Posted in Uncategorized

EndeavourOS Arch Lenovo laptop internal microphone volume not working (solution: must change internal mic config from stereo to mono) [update – solved]

Update :

I have found the new solution for this issue,
and the option 1 is worked for me,
but you can try the option 2 or option 3, maybe one of those will work for you,
you can only choose one option, do not use more than one option, or it will cause conflict in your pipewire configuration.

Don’t forget to change the internal microphone as default (click checklist v beside keylock icon) if you have other webcam + mic mono like me.

And if all these 3 options are not working for you,
maybe you should just buy USB Logitech webcam + mic C270 mono like me to get it done 🙂

Oh and one thing, in my laptop, i must pin pavucontrol to task manager, because if open pavucontrol, it will show only a second then it will closed automatically,
so when it shows, you must click the menu tab at the top (ex: Input Devices) to stop it to closed automatically,
this is because the added config pipewire.conf below, if we remove it, then the pavucontrol will be back to normal,
yeah i know, this is the cons, but still can be tolerated.

Option 1 (worked for me, if you try by yourself and look it closely, this option is similar with option 3, except that the internal microphone, the original one not the mono, display a horizontal graphic volume, while the option 1 is not, that’s why option 1 is truly mono input for the internal microphone, and its front left – front right channels cannot get balanced together anymore).

sudo vim /etc/pipewire/pipewire.conf

context.objects = [
    # Other objects...

    { factory = adapter
        args = {
            factory.name     = api.alsa.pcm.source
            node.name        = "alsa_input.pci-0000_00_1f.3.analog-stereo"
            node.description = "Built-in Audio Analog Stereo (Mono)"
            media.class      = "Audio/Source"
            audio.channels   = 1
            audio.position   = "MONO"
        }
    }
]

systemctl –user restart wireplumber pipewire pipewire-pulse

And here’s my working pavucontrol

Option 2 (not worked for me, because if i use google meet, the internal microphone front left and front right are still get balanced together, even when the os start with saved config front left 100 and front right 0).

The idea is to make the right side of internal mic volume to zero, and the left side volume to 100 (or min 80% high), or vice versa (left – right),
and then save/store the config in .desktop file, so it can auto restart the stored config when the laptop gets rebooted.

For Arch or EndeavourOS, you can install qasmixer with this :
sudo pacman -S qastools

—–

Yes, of course @ASSahasranamam.
The method mentioned above I consider obsolete. Here I bring you a new method.

MOD to fix internal microphone

Step 1 – Install QasMixer
It has a graphical interface that facilitates the manipulation of AlsaMixer.

This is the command for the installation:

sudo apt install qasmixer

Step 2 – Run QasMixer

This is the command to execute it:

qasmixer

Step 3 – Select in the box “”Mixer device” -> hw”

Step 4 – Press the [R] key and set all settings of the mixer as shown in the following picture

Step 5 – Select “Capture” and press the [S] key

Step 6 – Configure the panels as best suits your hearing
The rule is: L and R panels should not be at the same dB level.
I chose 18.75 dB and 21.75 dB since for me that configuration sounds better.

TIPS: You can test the microphone on Discord or somewhere where you can listen to it live.

Step 7 – Store the AlsaMixer configuration

This is the command:

alsactl --file ~/.config/asound.state store

Step 8 – The creation of a .desktop for the autostart restore command

This is the command to create the .desktop:

nano ~/.config/autostart/alsarestore.desktop

The contents of the .desktop file should be the following:

[Desktop Entry]
Type=Application
Terminal=true
Name=alsarestore
Exec=bash -c "sleep 10 && alsactl --file ~/.config/asound.state restore"

Step 9 – Turn off or restart the computer to see that our configuration still remains.
If everything goes as described. CONGRATULATIONS! you have got your internal microphone working.

TIPS: You can see in the sound settings that the microphone is low if you have followed my settings. This happens because it gets louder when you modify the dB of “Internal Mic Boost“. I do not recommend turning this panel up as in my case it sounds saturated.

Source :
https://github.com/pop-os/pipewire/issues/8
https://forum.garudalinux.org/t/internal-microphone-not-working-on-lenovo-ideapad-330/18348/5
https://wiki.archlinux.org/title/PulseAudio/Troubleshooting#Another_Possible_Cause

Option 3 (not worked for me, because if i use google meet, the internal microphone front left – front right are still get balanced together, even it creates new “UR22 Microphone”, it will not produce sound anymore after the balanced happens, and the horizontal graphic volume will stop at 0).

User r/wellenkopf made a good suggestion, I have another one that uses loopback instead. Based on https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Virtual-devices
Replace the name of your card in node.target by the one that you get when you run pw-dump | grep alsa_input
This goes under context.modules, and there’s no need to run any scripts

âžś ~ pw-dump | grep alsa_input

      { "subject": 0, "key": "default.configured.audio.source", "type": "Spa:String:JSON", "value": { "name": "alsa_input.pci-0000_00_1f.3.3.analog-stereo" } },
      { "subject": 0, "key": "default.audio.source", "type": "Spa:String:JSON", "value": { "name": "alsa_input.pci-0000_00_1f.3.analog-stereo" } }
        "node.name": "alsa_input.usb-046d_C270_HD_WEBCAM_B86B8070-02.mono-fallback",
        "node.name": "alsa_input.pci-0000_00_1f.3.analog-stereo",

âžś ~ sudo vim /usr/share/pipewire/pipewire.conf

context.modules = [
    # plenty of existing { ... } blocks, then paste this:
    # Alternate microphone-only mono source
    {   name = libpipewire-module-loopback
        args = {
            node.description = "UR22 Microphone"
            capture.props = {
                node.name = "capture.UR22_Mic"
                audio.position = [ FL ]
                stream.dont-remix = true
                node.target = "alsa_input.pci-0000_00_1f.3.analog-stereo"
                node.passive = true
            }
            playback.props = {
                node.name = "capture.UR22_Mic"
                media.class = "Audio/Source"
                audio.position = [ MONO ]
            }
        }
    }
] #end of context.modules

âžś ~ systemctl –user restart wireplumber pipewire pipewire-pulse

– from your endeavouros kde plasma,
open pavucontrol (pulseaudio volume control) – input devices – UR22 Microphone

– done, enjoy 🙂

Source : https://www.reddit.com/r/linuxaudio/comments/v2ztic/how_to_reroute_permanently_a_microphone_to_make/

Leave a comment