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/