Fixing the Microphone and Skype on a Linux Laptop

Many sound chipsets in laptops have a problem with linux where they will only work if only the left channel is enabled, and not the right channel. And this of course matters for Skype. I ran into this situation recently and it drove me utterly bonkers, because I could not find a permanent solution, but I finally did and will share it with you.

Installing Skype

I'm assuming you are using an Ubuntu or Ubuntu-like such as Mint, if not follow along and change the steps as appropriate for your own distro. The first step is to install the skype package, this is usually as simple as:

sudo apt-get install skype

If you do not have a skype package available in your repository, install the package off the website.

Skype is a 32 bit app, so the next step is to install the 32 bit pulseaudio library:

sudo apt-get install libpulse0:i386

Now you'll want to add an entry to your startup programs for your Desktop Environment to launch Skype on startup.

IMPORTANT: you must add a delay to your Skype launcher, or the icon will not appear in your notification area. Use a command such as the following:

sh -c 'sleep 3; skype'

In the skype login window, mark the checkbox in the lower right to 'login when Skype starts' so that you are logged in on startup.

Testing Skype

Once you are logged in to skype, go into preferences -> sound devices. The sound devices listed should be something like "Pulseaudio server" and not "virtual device". If it says "virtual device" you need to make sure you installed the 32 bit pulseaudio libs as described earlier.

Click "make a test sound", you should hear a sound. Check the "video devices" section to make sure your webcam works and you can see yourself.

Go back to the "sound devices" section and make a test call. When prompted, say something and wait to hear it repeated. If you heard your own voice, then you can stop here and there is nothing else you need to do, If you did not, then read on.

Open pavucontrol and go to the input sources section. Find your internal microphone, click the 'set as fallback device' button and the 'unlock channels' button. Slide the right channel to zero and the left channel to around 70%. You may hear an audible pop when you do this.

Now, without closing pavucontrol go back to Skype and make another test call. You should hear your own voice now.

Unfortunately this fix is not permanent, as soon as you close pavucontrol it will stop working again, I will describe how to make this fix permanent.

Reconfiguring Pulseaudio

We will reconfigure pulseaudio to pass everything straight to alsa and not do anything to the sound chip.

Edit the file /etc/pulse/default.pa, find the load-module alsa-sink etc. lines and change them to the following, removing the hash mark at the beginning to uncomment them, they should look like this:

load-module module-alsa-sink device=dmix
load-module module-alsa-source device=dsnoop

Find the lines that look like this:

### Automatically load driver modules depending on the hardware available
.ifexists module-udev-detect.so
load-module module-udev-detect
.else
### Use the static hardware detection module (for systems that lack udev
support)
load-module module-detect
.endif

And comment them out, by placing a hash mark at the beginning of each line to look like this:

#### Automatically load driver modules depending on the hardware available
#.ifexists module-udev-detect.so
#load-module module-udev-detect
#.else
#### Use the static hardware detection module (for systems that lack udev
#support)
#load-module module-detect
#.endif

Save the file. Make sure that when you upgrade your system the file is not overwritten or the changes will be lost.

Installing the Nightly ALSA PPA

Some laptops need a newer ALSA for the sound to work properly, run these commands:

sudo apt-add-repository ppa:ubuntu-audio-dev/alsa-daily
sudo apt-get update
sudo apt-get install oem-audio-hda-daily-dkms

And then reboot.

NOTE: if you have a custom kernel that is newer than that of your ubuntu base, you will need to tweak dkms module a bit as follows:

First edit /etc/apt/sources.list.d/ubuntu-audio-dev-alsa-daily-trusty.list and change the dist name from "trusty" to something newer like "utopic", then run:

sudo apt-get update
sudo apt-get install oem-audio-hda-daily-dkms

If the module builds and installs, you are good to go, if it says your kernel version does not match, then do the following:

Edit /usr/src/oem-audio-hda-daily-0.201503121632~ubuntu14.04.1/dkms.conf, the version string on the directory may be different but the directory is in /usr/src. Remove the following line:

BUILD_EXCLUSIVE_KERNEL="^3.13.*"

Then run:

sudo dkms install -m oem-audio-hda-daily/0.201503121632~ubuntu14.04.1

The version will probably be different, you can find it in the directory name under /usr/src .

Now reboot.

Reconfiguring the ALSA Mixer

Log out of your X session, switch to a virtual console with ctrl+alt+F1 and stop your display manager. Using a command such as:

invoke-rc.d mdm stop

The service may be gdm, kdm, lightdm, etc. Whichever your display manager is. When you press alt+f8 or alt+f7 there should not be an X session.

Make sure you are in the 'audio' group. As root, edit /etc/group and make sure the audio line looks something like this:

audio:x:29:pulse,your_user

Once this is done, exit and log back in on the virtual console.

Now, launch alsamixer. You may need to run it with sudo if you did not add yourself to the audio group. Set the master volume to a reasonable amount, such as 70% with the up and down keys. Fix the "Internal Mic" section, make sure it's unmuted, if it's muted press M to unmute it. Likewise, unmite the 'Mic Boost' section.

Go back to the "Internal Mic" section. The Q key raises the left channel and the Z key lowers it. The E key raises the right channel, and the C key lowers it. Use these keys to set the left channel to around 70% and the right channel to zero. Do the same thing for the "Mic Boost" section. Then press Escape to exit alsamixer.

Run this command to make your settings permanent:

sudo alsactl store

Now we're going to test the microphone. Run this command to record a sample sound:

arecord foo.wav

Say something and press Ctrl+C to exit the recording. Play back the recording with:

aplay foo.wav

If you can hear yourself, the alsa mixer is configured correctly.

Final Test

Reboot the laptop with:

sudo reboot

Once you are back in your Desktop Environment, make sure sound works and open skype from the icon in the notification area and try another test call. You should hear your own voice now.


Last modified: 2017-1-8 (日) at 1:14 pm