Skype 4.3 without PulseAudio, only ALSA. Any options?

You can try using apulse: it is minimalistic pulseaudio emulator made specifically to run Skype 4.3 with ALSA. You need 32-bit build even on 64-bit machine.

I personally had troubles with microphone on Ubuntu 14.04, but for most people it works fine.


To build apulse on Ubuntu (and related distros), you must install following packages: pkg-config build-essential cmake libglib2.0-dev:i386 libasound2-dev:i386 gcc-multilib (probably some other too).

The build process more or less follows the one described in README:

mkdir build && cd build
PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig CFLAGS=-m32 cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release ..
make
sudo make install

I managed to have skype 4.3. running on my (otherwise pure ALSA) system. I'm running openSuSE 13.1, so, I can only describe what I did here. The general idea was to have skype running in a sort of 'pulseaudio jail'.

I installed pulseaudio but did not activate it. The most important thing about NOT activating pulseaudio seems to be a line

autospawn = no

in /etc/pulse/client.conf.

The next preparation step was to modify /etc/pulse/default.pa according to https://wiki.archlinux.org/index.php/Pulseaudio:

# BEGIN CHANGED: https://wiki.archlinux.org/index.php/Pulseaudio
load-module module-alsa-sink device=dmix
load-module module-alsa-source device=dsnoop
# END CHANGED: https://wiki.archlinux.org/index.php/Pulseaudio

#ORIG: #load-module module-alsa-sink
#ORIG: #load-module module-alsa-source device=hw:1,0
#ORIG: ### Automatically load driver modules depending on the hardware available
#ORIG: .ifexists module-udev-detect.so
#ORIG: load-module module-udev-detect
#ORIG: .else
#ORIG: ### Use the static hardware detection module (for systems that lack udev support)
#ORIG: load-module module-detect
#ORIG: .endif

Then I added two lines to my ~/.asoundrc:

pcm.unwantedpulse { type pulse }
ctl.unwantedpulse { type pulse }

A shell script 'myskype' looks like this:

#!/bin/sh
umask 0
cd

# 1. step: start pulseaudio in advance
mkdir .pulse 2> /dev/null
echo 'autospawn = yes' > .pulse/client.conf
aplay -q -D unwantedpulse /usr/share/skype/sounds/ChatOutgoing.wav
# now pulseaudio should be running

# 2. step: important mixer settings - these are hardware dependent and (probably) not really necessary
amixer sset Digital 100% unmute cap
amixer sset Capture 99% unmute cap
# etc etc
pacmd set-source-volume alsa_output.dmix.monitor 0x10000
pacmd set-source-volume alsa_input.dsnoop 0x11000

# 3. step: start skype in background 
/usr/bin/skype & 
skypepid=$!

sleep 9
# to prevent funny programs like firefox from connecting (or even starting)
# pulseaudio, we clean up rather quickly
rm -rf .pulse

# wait for skype to exit
wait $skypepid

# 4. step: stop pulseaudio
pactl exit
sleep 4
pactl exit
exit 0

Now, when I start 'myskype', skype will be started in that 'pulseaudio jail' but everything else is still using ALSA.