Drahtloser Sound über Bluetooth-Stereo-Headsets

Aus LinuxUser 01/2007

Drahtloser Sound über Bluetooth-Stereo-Headsets

Blauer Sound

Ob zum Telefonieren oder für den drahtlosen Musikgenuss: Ein Bluetooth-Stereoheadset räumt dabei komfortable Bewegungsfreiheit ein.

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.

Abbildung 1: Die Bluetooth-Headsets von Jabra (links) und Logitech (rechts) beherrschen beide Stereosound. Das Jabra-Headset lässt sich zudem auch über das SCO-Profil ansprechen.

Abbildung 1: Die Bluetooth-Headsets von Jabra (oben) und Logitech (unten) beherrschen beide Stereosound. Das Jabra-Headset lässt sich zudem auch über das SCO-Profil ansprechen.

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.

Konfigurationsdateien

Dazu teilen Sie dem Daemon zum einen mit, welches Headset er für das Playback benutzen soll. Zum anderen benötigen Sie eine .asoundrc-Datei, die ein passendes Alsa-Gerät anlegt. Befindet sich in Ihrem Home-Verzeichnis noch keine Datei .asoundrc, legen Sie einfach eine neue Datei mit folgendem Inhalt an:

pcm.a2dpd {
        type a2dpd
}

Existiert die Datei bereits, fügen Sie obige drei Zeilen ans Ende der Datei an. Für die Konfiguration des A2DP-Daemons kopieren Sie die Datei sample.a2dprc unter dem Namen .a2dprc aus dem Verzeichnis btsco/alsa-plugins in Ihr Home-Verzeichnis. Achten Sie bei beiden Dateien auf den Punkt am Beginn des Dateinamens. Öffnen Sie danach die Datei .a2dprc, entfernen Sie in Zeile 48 das Rautezeichen vor dem Eintrag #address=00:08:F4:30:07:64 und ersetzen Sie die angegebenen Bluetooth-Adresse durch die Adresse Ihres Dongles. Wie Sie diese herausfinden, beschreibt der folgende Abschnitt.

Bluetooth-Basics

Um überhaupt über das Headset Musik abspielen zu können, müssen Sie das Headset mit dem PC verbinden. Dazu muss das Headset auf sichtbar geschaltet sein. Beim Jabra-Kopfhörer halten Sie dazu die Abdeckung beider Hörermuscheln für rund fünf Sekunden gedrückt. Den Pairing-Modus erkennen Sie daran, dass beide LEDs abwechslungsweise rot, blau und grün blinken.

Beim Logitech-Headset halten Sie den Knopf in der Mitte des linken Ohrhörers so lange gedrückt, bis die LED anfängt, schnell zu blinken. Geben Sie jetzt auf der Konsole den Befehl hcitool scan ein, sollten Sie als Ausgabe die Bluetooth-Adresse und den Namen des Headsets sehen, zum Beispiel:

marcel@kim:~> hcitool scan
Scanning …
00:13:17:70:44:5A    Jabra BT620s

Tragen Sie nun diese Adresse in die Datei .a2dprc in Ihrem Home-Verzeichnis ein. Findet der Befehl kein Bluetooth-Gerät, funktioniert entweder der Bluetooth-Dongle Ihres Rechners nicht, oder das Headset befindet sich nicht im Pairing-Modus. Ob Linux den eigenen Dongle erkannt hat, verrät der Befehl hcitool dev. Er zeigt die Bluetooth-Adresse des Dongles an.

Let’s rock

Haben Sie die beiden Konfigurationsdateien für die Alsa-Konfiguration und den A2DP-Daemon angelegt, starten Sie den Daemon auf der Konsole über den Befehl a2dpd. Dazu benötigen Sie keine Sysadmin-Rechte. Als Ausgabe sehen Sie am Schluss folgende zwei Zeilen:

avrcp: Accepting incoming connection
avdtp: Accepting incoming connection

Die Fehlermeldung Cannot open /dev/input/uinput: No such file or directory können Sie ignorieren.

Lassen Sie die Konsole geöffnet, starten Sie XMMS und drücken Sie [Strg]+[P], um den Konfigurationsdialog zu öffnen. Wählen Sie als Ausgabe-PluginALSA [libALSA.so] und klicken Sie auf Konfigurieren. Tragen Sie ins Feld Audio-Gerät von Hand a2dpd ein (das Gerät lässt sich nicht aus der Liste auswählen) und klicken Sie zweimal auf OK, um die Einstellungen zu übernehmen.

Starten Sie nun das Playback in XMMS, so erscheint ein Dialog, der Sie zum Pairing des Geräts auffordert. Achten Sie deshalb darauf, dass sich das Headset im Pairing-Modus befindet. Unter Suse Linux meldet sich der Pairing-Dialog des KDE-Bluetooth-Frameworks, unter Ubuntu ein Fenster der Gnome-Bluetooth-Tools. Dazu muss allerdings unter Edgy das Paket bluez-passkey-gnome installiert sein.

Verlief das Pairing erfolgreich, startet der Player die Wiedergabe. Sie sehen dann im Konsolenfenster des a2dpd-Befehls die Meldung:

DEBUG: a2dp_transfer_raw: Bandwith: 27250 (212 kbps) 32

Analog zu XMMS lässt sich die Soundausgabe auch in Amarok oder Kaffeine benutzen. In Amarok wählen Sie dazu Einstellungen | Amarok einrichten | Audio-Ausgabe und stellen das Ausgabemodul auf Alsa. Nach einem Klick auf Anwenden tragen Sie in den Feldern Mono und Stereo jeweils das Gerät a2dpd ein (Abbildung 2).

Abbildung 2: Um Musik über den A2DP-Daemon abspielen zu können, müssen Sie in Amarok als Alsa-Gerät "a2dpd" einrichten.

Abbildung 2: Um Musik über den A2DP-Daemon abspielen zu können, müssen Sie in Amarok als Alsa-Gerät “a2dpd” einrichten.

In Kaffeine wählen Sie Einstellungen | Xine-Parameter | Audio, wechseln auf den Reiter Experten Optionen und scrollen bis zum Eintrag device.alsa_front_device Gerät für die Stereoausgabe. Tragen Sie hier anstelle von default das Gerät a2dpd ein.

Pro und Kontra

Einer der großen Vorteile der Bluetooth-Lösung gegenüber konventionellen drahtlosen Kopfhörern besteht darin, dass sich per Bluetooth-Headset auch Befehle an den Linux-Rechner senden lassen. So können Sie zum Beispiel den Player stoppen, zum nächsten Song springen oder ein Lied zurück wechseln.

Welche Befehle der A2DP-Daemon auf welchen Tastendruck hin sendet, legen Sie in der Datei .a2dprc fest. Im Abschnitt # AVRCP Commands to run sind hier sämtliche Befehle für XMMS eingetragen. Bevorzugen Sie Amarok, ersetzen Sie zum Beispiel cmdplay=xmms --play durch cmdplay=amarok -p. Hinter cmdprev= setzen Sie amarok --previous ein und so weiter. Welche Befehle der Daemon überträgt, sehen Sie ebenfalls im a2dpd-Fenster.

In der gleichen Datei legen Sie auch die Bandweite der Übertragung fest. In der Grundeinstellung arbeitet a2dpd mit maximal 256 kbit/s. Möchten Sie die Bandbreite erhöhen, ändern Sie den Wert für sbcbitpool von 32 auf 64. In den Tests kam es damit aber zu einigen Aussetzern. Mit einem Wert von 16 reduzieren Sie die Bandbreite auf maximal 128 kbit/s. Mit dieser Bitrate lässt die Tonqualität allerdings deutlich nach.

Da der Bluetooth-Kopfhörer automatisch mit dem A2DP-Server Kontakt aufnimmt, lässt sich mit ein wenig Bastelei auch eine Lösung realisieren, die den Stream von einem Rechner auf einen zweiten überträgt, um zum Beispiel in einem großen Gebäude den gesamten Bereich abzudecken.

Nicht ganz zufrieden waren wir mit der Soundqualität der Bluetooth-Lösung. Per A2DP-Profil tönt die Wiedergabe zwar um Welten besser als über die auf Sprache ausgerichtete SCO-Verbindung. Dennoch trübt ein leises Rauschen das sonst sehr positive Bild.

Je nach CVS-Version traten auch Latenzprobleme auf. So stoppte der Daemon in einer frühen Version vom 7. November 2006 das Playback, nachdem sich das Headset außerhalb der Reichweite befand, und spielte die verpassten Töne danach mit doppelter oder dreifacher Geschwindigkeit ab, um den Livestream quasi wieder einzuholen. Nach einem Patch von Fréderic Dalleau, der Bluetooth-Alsa zurzeit zusammen mit Brad Migley weiterenwickelt, war dieses Problem zwar gelöst, in einer CVS-Version vom 15. November traten allerdings wiederum Latenzprobleme auf.

Diesmal schwankte die Geschwindigkeit nach kurzen Aussetzern während des Playbacks. Wer sich an die Schallplattenzeit erinnert, kann sich vorstellen, wie das tönt. Aufgrund der trägen Reaktionszeit der A2DP-Verbindung reagiert der Player jeweils rund eine Sekunde später. Dies stellt jedoch kein wirkliches Problem dar. Für das Videoplayback eignet sich die Lösung zurzeit nur bedingt: Bei einigen Filmen waren lediglich die Stimmen zu hören, der Sound verzerrt oder überhaupt nicht.

Fazit

Stereosound über Bluetooth sorgt bereits jetzt für drahtloses Vergnügen unter Linux. Dabei darf man die Stellung von Linux auf diesem Gebiet nicht unterschätzen: Aktuelle Mac-OS-X-Versionen beherrschen zum Beispiel lediglich das SCO-Profil, den A2DP-Sound plant Apple erst für die Version “Leopard” seines Betriebssystems.

Auch Windows XP liefert keine Bordmittel, um über Bluetooth Stereosound abzuspielen: Selbst bei Vista muss das A2DP-Profil von externen Herstellern nachgerüstet werden. Allgemein unterstützen das Profil lediglich einige brandneue Mobiltelefone – und Linux.

LinuxUser 01/2007 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben