Bluetooth gehört heute zur Standardausstattung von aktuellen Handys und Notebooks. Die Technologie fristet neben WLAN jedoch eher ein Schattendasein. Dabei kann Bluetooth gegenüber WLAN zwei deutliche Vorteile ins Rennen schicken:
- es benötigt deutlich weniger Strom,
- es eignet sich nicht nur zum Surfen im Internet.
Dieser Artikel beschäftigt sich mit den Soundfähigkeiten von Bluetooth unter Linux. Er basiert auf dem ausgezeichneten Howto für Ubuntu [1]. Die Anleitung funktioniert aber unter jeder Distribution mit einem halbwegs aktuellen Kernel und Bluetooth-Stack. Die Projektseite von Bluetooth-Alsa mit weiterführenden Infos finden Sie unter [2].
Mono oder Stereo
Bluetooth kennt zwei Profile für die Übermittlung von Audiosignalen: SCO und A2DP. Beim SCO-Profil handelt es sich um eine Zweiwege-Verbindung mit schnellen Reaktionszeiten (tiefe Latenz) zur Übertragung von Gesprächen. Es überträgt Töne in der Regel in Mono-Qualität, mit dem SCO-Profil lassen sich sowohl Töne empfangen als auch senden. Das A2DP-Profil hat dagegen die Aufgabe, Stereosound in hoher Qualität zu übertragen. Hierbei handelt es sich um eine Einwegverbindung mit hoher Latenz (langsame Reaktionszeit). Im Bereich Stereoausgabe befindet sich Linux in einer Spitzenposition, was die Qualität der Wiedergabe und die Geschwindigkeit der Entwicklung betrifft.
Je nachdem, welches Bluetooth-Headset Sie benutzen, unterstützt dieses nur SCO, nur A2DP oder beide Profile. Einohr-Headsets, wie sie bei Mobiltelefonen verbreitet sind, unterstützen in der Regel nur das SCO-Profil, Stereo-Headsets beherrschen oft beide. In den Tests zu diesem Artikel benutze LinuxUser das Stereo-Headset BT620s von Jabra und die Wireless Headphones for PC von Logitech (Abbildung 1). Das Jabra-Gerät unterstützt sowohl SCO als auch A2DP. Den jeweiligen Modus verrät das Blinken der LEDs. Die Logitech-Kopfhörer unterstützen nur A2DP. Beim Logitech-Headset handelt es sich offiziell nicht um ein Bluetooth-Gerät: Logitech verkauft es mit einem USB-Dongle als gewöhnliche Drahtlos-Lösung. Die Ohrhörer sind aber Bluetooth-fähig.
Download und Installation
Der Artikel beschränkt sich im Folgenden auf die Stereowiedergabe über den Daemon a2dpd. Die etwas umständlichere Einrichtung der SCO-Verbindung über ein separates Kernelmodul erklärt der Kasten "Die alte Methode". Diese kann dann interessant sein, wenn Sie das Headset auch zum telefonieren (zum Beispiel über Skype) benutzen möchten.
Für den A2DP-Daemon benötigen Sie die Bibliothek sbc und die Bluetooth-ALSA-Tools btsco. Von beiden Programmen finden Sie CVS-Versionen von Ende November auf der Heft-CD. Da die Entwicklung von Bluetooth-Audio jedoch ziemlich schnell voranschreitet, empfiehlt es sich, die Quellen direkt aus dem Versionskontrollsystem auszuchecken. Die dazu nötigen Befehle listet der Kasten "Code aus dem CVS ziehen" auf.
Code aus dem CVS ziehen
Nach dem Login-Befehl erscheint jeweils eine Passwortaufforderung. Drücken Sie dann einfach die Eingabetaste.
cvs -d:pserver:anonymous@sbc.cvs.sourceforge.net:/cvsroot/sbc login cvs -d:pserver:anonymous@sbc.cvs.sourceforge.net:/cvsroot/sbc co sbc cvs -d:pserver:anonymous@bluetooth-alsa.cvs.sourceforge.net:/cvsroot/bluetooth-alsa login cvs -d:pserver:anonymous@bluetooth-alsa.cvs.sourceforge.net:/cvsroot/bluetooth-alsa co btsco
Nach dem Entpacken beziehungsweise Herunterladen des nötigen Quellcodes wechseln Sie zunächst ins Verzeichnis sbc und geben hier folgende Befehle ein:
./bootstrap ./configure --prefix=/usr make sudo make install
Für die Installation per sudo-Kommando müssen Sie je nach Distribution das Root-Passwort (Suse, Fedora) oder Ihr Benutzerpasswort (Ubuntu) eingeben. Wechseln Sie anschließend ins Verzeichnis btsco und tippen Sie hier die gleichen Befehle, wobei der ./configure-Aufruf zusätzlich die Option --enable-alsaplugin benötigt:
./bootstrap ./configure --prefix=/usr --enable-alsaplugin make sudo make install
Damit ist die Installation abgeschlossen; als nächstes gilt es den A2DP-Daemon zu konfigurieren.
Die alte Methode
Sollte bei Ihnen die Methode über den A2DP-Daemon nicht richtig funktionieren, dann versuchen Sie die alte Methode über das Kernelmodul snd-bt-sco. In der Redaktion gab es jedoch keinen Fall, bei dem diese Version funktioniert hätte und der A2DP-Daemon nicht.
Laden Sie sich den CVS-Code von btsco und sbc herunter. Übersetzen und installieren Sie diesen anschließend wie im Artikel beschrieben. Wechseln Sie danach ins Verzeichnis btsco/kernel und führen Sie hier den Befehl make aus. Der Compiler erstellt dann das Kernel-Modul snd-bt-sco.ko. Dieses kopieren Sie mit administrativen Rechten ins Verzeichnis /lib/modules/Kernelversion
/kernel/drivers/bluetooth. Die Kernelversion gibt der Befehl uname -a aus.
Hat alles geklappt, laden Sie das Modul über den Befehl modprobe snd-bt-sco. Im nächsten Schritt nehmen Sie die Verbindung mit dem Bluetooth-Headset auf. Dazu muss das Headset im Pairing-Modus sein. Geben Sie auf der Konsole folgenden Befehl ein:
btsco -r -v Bt-Adresse
wobei Sie Bt-Adresse durch die Bluetooth-Adresse des Headsets ersetzen müssen. Erhalten Sie die Fehlermeldung:
btsco v0.42 Error: control open (hw:1): No such device Error: Can't find device. Bail
dann wird Ihr Headset vom Modul entweder nicht unterstützt, oder das Kernelmodul ist nicht geladen. Hat alles geklappt, sehen Sie die Meldung:
btsco v0.42 Device is 1:0 Voice setting: 0x0060 RFCOMM channel 1 connected Using interface hci0
In einer zweiten Konsole starten Sie nun die Wiedergabe über den Befehl:
mpg123 --au - datei.mp3 | a2play Bt-Adresse
wobei Sie datei.mp3 durch eine beliebige MP3-Datei ersetzen müssen und Bt-Adresse wiederum für die Bluetooth-Adresse des Headsets steht. Sehen Sie daraufhin die Meldungen:
Listen thread running read 2C00C0 2873 times / sec. read 30ABC0 1197 times / sec. read 3061C0 1198 times / sec. read 2FF0C0 1120 times / sec. read 3052C0 1154 times / sec.
läuft das Playback. Die Methode über das Kernelmodul bringt allerdings erhebliche Nachteile gegenüber dem A2DP-Daemon. So lassen sich über diesen Weg Musikstücke nur umständlich von der Kommandozeile aus abspielen und Playlisten oder ähnliches sind nicht möglich. Auch gilt es bei jedem Kernelupdate ein neues Modul zu installieren. Zudem funktionierte das Playback mangels SCO-Unterstützung auf dem Logitech-Headsets überhaupt nicht.



