ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

Bluetooth Headset

Fehlendes Makro

Das Makro „Getestet“ konnte nicht gefunden werden.

 *  [1]: [:Pakete installieren: Installation von Programmen]
 *  [2]: [:Paketquellen freischalten: Bearbeiten von Paketquellen]
 *  [3]: [:Terminal: Ein Terminal öffnen]
 *  [4]: [:Editor: Einen Editor öffnen]
 *  [5]: [:Programme compilieren: Pakete aus dem Quellcode erstellen] (Nur bei Breezy nötig)
 *  [6]: [:Metapakete#Architektur: Restricted-Modules, Linux-Headers: welche Version?]
 

Bluetooth Headset einrichten

Allgemein

Gerade für Anwendungen wie ["Skype"] ist ein kabelloses Headset sehr komfortabel. Zur Übertragung der Audiodaten ist der aktuelle Stand der Technik Bluetooth. Dieser universelle Funk-Standard ermöglicht es z.B. auch, dass Handys dieses Headset als Freisprecheinrichtung nutzen können.

Da diese ganze Technik relativ neu und nicht so weit verbreitet ist, verläuft die Einrichtung nicht ganz unproblematisch. Die benötigte Software befindet sich auch noch im Alpha-Stadium, trotzdem funktioniert sie im allgemeinen gut.

Hardware

Im Prinzip sollten alle Bluetooth Headsets unterstützt werden. Eine Liste von erfolgreich getesteten Headsets ist auf der bluetooth-alsa Homepage zu finden.

Mehr Probleme kann die Wahl des Bluetooth-Adapters machen. Empfehlenswert sind Adapter mit einem Chipsatz von CSR (Cambridge Silicon Radio), wie z.B. der Adapter "MDU-0005USB" von Level One.

Software

Ist die entsprechende Hardware vorhanden, kann die Einrichtung der Software losgehen. Als erstes wird das Ubuntu-System für Bluetooth vorbereitet, woraufhin man schon mal dem Headset "Hallo" sagen kann.

In einem zweiten Schritt wird dann das Soundsystem angepasst und konfiguriert.

Bluetooth Vorbereitungen

Die Einrichtung von Bluetooth ist auch schon im Artikel ["Bluetooth/Einrichtung"] beschrieben und beschränkt sich eigentlich auf die Installation [1] der Pakete:

  • bluez-utils

  • bluez-btsco (universe, [2]) (Ist nur bei Dapper in den Quellen vorhanden)

Sind die Paket installiert, kann man schon mit seinem Bluetooth-Dongle reden.

Der folgende Befehl in einem Terminal [3] verrät etwas über die Fähigkeiten des Adapters:

sudo hciconfig hci0 revision

Bei der Ausgabe sollte auch unbedingt die Zeile "SCO mapping: HCI" stehen. Ist dies nicht der Fall, raten die Autoren der Bluetooth-Audio Software zu einem anderen Adapter.

Jetzt kann man sich auf die Suche nach Bluetooth-Geräten machen. Der Befehl

hcitool scan

listet alle gefundenen Geräte auf. Eventuell muss man dabei den Pairing-Modus einschalten, was bei Headsets oft durch langes drücken des Einschalt-Knopfes funktioniert. Die Ausgabe sieht dann so ähnlich aus:

Scanning ...
        00:0D:44:03:6B:8A       Logitech HS01-V16

Vor dem Namen des Gerätes befindet sich die Bluetooth Adresse, die später für den Sound-Treiber benötigt wird.

btsco Paket erstellen (nur für Breezy nötig)

Dieser Abschnitt des Artikels ist nicht trivial. Es geht um das Compilieren und Installieren der entsprechenden Kernelmodule. Leider gibt es keinen anderen Weg diese zu Erzeugen. Linux-Anfänger sollten eventuell Hilfe im Forum suchen.

Die Sound Ein- und Ausgabe basiert auf dem Bluetooth-alsa Projekt. Ziel dieses Abschnittes ist es, für das Headset ein eigenes Sounddevice bereitzustellen. Leider das entsprechenden Programm-Paket erst ab Ubuntu Dapper Drake verfügbar, so dass das Paket selbst kompiliert [5] werden muss.

Dafür werden allerdings vorher ein paar Pakete benötigt [1]:

  • build-essential

  • cvs

  • checkinstall (universe, [2])

  • automake1.7

  • gcc-3.4

  • libbluetooth1-dev

  • libasound2-dev

  • linux-headers-386 [6]

  • libtool

Sind alle Pakete installiert, geht es mit dem Runter laden und Übersetzen der Quellen weiter. Folgende Befehle dazu bitte in einem Terminal [3] ausführen:

sudo -i
cd /usr/src
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
cd btsco
./bootstrap
./configure
make
checkinstall
cd kernel
make
make install
Checkinstall verlangt unter Breezy, dass eine Versionsnummer - Punkt 3 - für btsco vergeben wird. Hier wurde testweise 1.0 eingetragen.
This package will be built according to these values:

0 -  Maintainer: [ deinname@localhost.localdomain ]
1 -  Summary: [ Package created with checkinstall 1.5.3 ]
2 -  Name:    [ btsco ]
3 -  Version: [ 1.0 ]      <--- hier  (zuvor [ btsco])
4 -  Release: [ 1 ]
5 -  License: [ GPL ]
6 -  Group:   [ checkinstall ]
7 -  Architecture: [ i386 ]
8 -  Source location: [ btsco ]
9 -  Alternate source location: [  ]

Das fertige Modul landet dann normalerweise in /usr/src/btsco/kernel, wo es allerdings nicht gefunden wird. Daher muß man mit

mv /usr/src/btsco/kernel /lib/modules/2.6.12-9-686/

den Inhalt in das richtige Verzeichnis verschieben. Bei anderen Kernelversionen muß das Zielverzeichnis entsprechend angepasst werden.

Nach dem Verschieben müssen noch die Abhängigkeiten aktualisiert werden:

depmod -e

Für das Laden des Moduls und eine kleine Initialisierung habe ich in ein Skript geschrieben, dass automatisch beim Einstecken des Bluetooth-Adapters ausgeführt wird. Dazu die Datei /etc/hotplug/usb/hci_usb mit einem Editor [4] mit Root-Rechten anlegen. Der Inhalt ist folgender:

#!/bin/sh
modprobe snd_bt_sco
hciconfig hci0 voice 0x0060

Und noch als ausführbar setzen:

sudo chmod +x /etc/hotplug/usb/hci_usb

Kernel Modul snd-bt-sco laden (nur bei Dapper)

Damit der Kernel den Bluetooth-Stick auch als Soundkarte nutzen kann, muss ein Kernelmodul geladen werden. Damit dies automatisch beim Booten geschieht, muss das Modul zur Datei /etc/modules hinzugefügt werden. Es muss nur die Zeile

snd_bt_sco

mit einem Editor [4] angefügt werden. Um das Kernel-Modul nun auch ohne einen Rechner-Neustart zu laden, führt man einmalig den Befehl

sudo modprobe snd-bt-sco

aus. Verbindet man anschliessend den Bluetooth Adapter (wieder) mit dem PC, sollte man mit dem Befehl

dmesg | grep snd-bt-sco

in etwa diese Ausgabe erhalten:

...
Bluetooth: L2CAP ver 2.7
Bluetooth: L2CAP socket layer initialized
Bluetooth: RFCOMM ver 1.5
Bluetooth: RFCOMM socket layer initialized
Bluetooth: RFCOMM TTY layer initialized
usb 1-1.2: new full speed USB device using ohci_hcd and address 6
snd-bt-sco revision 1.8 $
snd-bt-sco: snd-bt-scod thread starting

Und ein neues Sound-Device sollte existieren:

cat /proc/asound/cards

Die Ausgabe sollte etwa so aussehen:

0 [Live           ]: EMU10K1 - Sound Blaster Live!
                     Sound Blaster Live! (rev.4) at 0xe000, irq 12
1 [Headset        ]: Bluetooth SCO - BT Headset
                     BT Headset 1

Oftmals hat es sich bewährt, dass die eingebaute Soundkarte die ID 0 hat. Sonst verschieben sich nämlich die IDs, je nach dem ob beim Booten der Bluetooth Dongle im Rechner steckt oder nicht. Dazu trägt man das Modul der Soundkarte vor snd_bt_sco in die /etc/modules ein.

Kennt man das Soundkartenmodul nicht, hilft ein

lsmod | grep snd

weiter. Die Module, die für den Sound zuständig sind, nennen sich immer snd_xyz. Also zum Beispiel snd_intel8x0 für den Intel i810 Chipsatz.

Zum Headset verbinden

Nun muss man dem System sagen, das Headset zu nutzen. Bei der ersten Verbindung muss sich das Headset im Pairing-Modus befinden und man wird aufgefordert eine eine Pin-Nummer einzugeben. Meist ist das bei Headsets die 0000, klappt dies nicht sollte man einen Blick in das Handbuch des Headsets werfen.

btsco -v xx:xx:xx:xx:xx:xx

Wobei die xx-Werte gegen die Bluetooth-Adresse des Headsets (siehe oben) ausgetauscht werden muss. Die Ausgabe sieht dann so aus:

btsco v0.42
Device is 1:0
Voice setting: 0x0060
RFCOMM channel 1 connected

Sollte hier ein Fehler, wie z.B. Failed to connect to SDP server on xx:xx:xx:xx:xx:xx: Permission denied kommen, dann hilft es den bluez-Dienst neu zu starten

sudo /etc/init.d/bluez-utils restart

und dann den Verbindungsversuch neu zu starten.

Sounds ausgeben

In einem zweiten Terminal [3] kann man jetzt eine Soundausgabe starten

aplay -B 1000000 -D plughw:Headset /usr/share/sounds/alsa/Noise.wav

Das Headset bzw. der Bluetooth Audio Adapter sollte nun auch in anderen Anwendungen zur Verfügung stehen. Wählt man diesen aus und hat die Verbindung aktiviert, so sollte man Sounds über das Headset beklommen.

Problemlösungen

Es kommt vor, dass die Zuordnung Bluetooth Mac Nummer und Authorisations-Schlüssel verloren geht. Mit dem Ergebnis, dass man sich nicht mehr zum Headset verbinden kann. Versucht man es mit

btsco -v <mac_addr>

sieht man als Ausgabe etwas in dieser Art

btsco v0.4
Device is 1:0
Error: Failed to connect to SDP server: Permission denied
Assuming channel 2

Voice setting: 0x0060
Can't connect RFCOMM channel: Too many levels of symbolic links

Man kann dies recht einfach lösen, indem man das Pairing des Bluetooth Headsets mit dem Adapter wiederholt. Dazu muss man in das Verzeichnis /var/lib/bluetooth wechseln. Dort sind die Gerätedaten in nach den MAC Adressen benannten Verzeichnissen abgelegt. Hier muss dann das Verzeichnis mit dem Namen der MAC Nummer der Headset gelöscht werden.

Beim nächsten Verbindungsversuch, wird man wie oben beschrieben nach dem Bluetooth Schlüssel des Gerätes gefragt und man kann das Headset wieder benutzen.


["Kategorie/Hardware"]

Diese Revision wurde am 21. September 2006 19:43 von Chrissss erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Hardware