Sunday, May 10, 2009

Technical: Getting Skype working with Bluetooth on Ubuntu with AMD64

If you want to use Skype with Bluetooth headsets on recent versions of Ubuntu Jaunty with an AMD64 architecture, this article might be of interest. If those words didn't make any sense, this article is definitely skippable.

When using Skype with a Bluetooth headset, I was getting error messages of the following form:

ALSA lib ../../../src/pcm/pcm.c:2165:(snd_pcm_open_conf) Cannot open shared library /usr/lib32/alsa-lib/libasound_module_pcm_bluetooth.so

Since Skype only exists in 32-bit mode currently, you can only run it in AMD64 using the linux32 command. However, this requires 32-bit versions of all the libraries that Skype would need, including bluez-alsa if you want to use a Bluetooth headset. Ubuntu currently attempts to handle this with their ia32-libs package but the current version of this package is missing its bluez-alsa libraries (as indicated in the error message). This is the bug that has been reported here.

I have a horrible hack to fix this problem, mostly because I can't find where ia32-libs development takes place nor the Ubuntu development process. I downloaded the 32-bit version of bluez-alsa and used alien -t to convert it into a tar.gz file. I then extracted its contents and made an extremely simple Makefile with this content:

install:
cp ./usr/lib/alsa-lib/libasound_module_ctl_bluetooth.so /usr/lib32/alsa-lib/
cp ./usr/lib/alsa-lib/libasound_module_pcm_bluetooth.so /usr/lib32/alsa-lib/

Next, I created a Debian package with checkinstall which you can find here. To my knowledge, these files are missing in Ubuntu Karmic too, so this might help those users as well.

Takeaway message: If you want to try my hack, download my new package (which I admitedly haven't been able to test on any other machines, so any feedback is welcome) and use your favorite package installer (the graphical one is probably the easiest) to install it.

3 comments:

Anonymous said...

Your package worked great for fixing my Kensington headset insofar as getting audio playback to work inside of it, but Skype still has a problem getting audio capture working, even though it has a built-in microphone. I'm still looking around to see how to get capture working so that I can fully use the headset to make Skype calls.

Anonymous said...

Insanely great! I tried for months. Now it just works :-)

Two remarks:
1. To install the 32bit libs much easier, just use getlibs. Download getlibs-all.deb from
http://frozenfox.freehostia.com/cappy/getlibs-all.deb , then use the command:
sudo getlibs -l libasound_module_pcm_bluetooth.so

2. In addition i needed an ~/.asoundrc with the following content:
pcm.headset {
type bluetooth
profile "voice"
}
ctl.headset {
type bluetooth
profile "voice"
}

Uhlersoth said...

Your package works perfectly with my Plantronics 520, and saved me all sorts of time. Thanks!