## page was renamed from Bluetooth-Headset {{{#!Wissen * [1]: [:Pakete installieren: Installation von Programmen] * [2]: [:Terminal: Ein Terminal öffnen] * [3]: [:Programme compilieren: Pakete aus dem Quellcode erstellen] * [4]: [:Editor: Einen Editor öffnen] }}} [[TableOfContents(3)]] = 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 bei mir gut. == Hardware == Das von mir benutzte Headset ist von Logitech und hört auf den Namen "Mobile Pro Headset". Eine Liste von weiteren erfolgreich getesteten Headsets ist [http://bluetooth-alsa.sourceforge.net/ hier] zu finden. Mehr Probleme kann meiner Meinung nach die Wahl des Bluetooth-Adapters machen. Mein erster Versuch mit "BlueFritz! USB 2.0" von AVM verlief erfolglos, da der Adapter das SCO-Mapping "HCI" nicht kann. Dazu aber später mehr. 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] des Paketes: * '''bluez-utils''' Ist das Paket installiert, kann man schon mit seinem Bluetooth-Dongle reden. Der folgende Befehl in einem Terminal [2] verrät etwas über die Fähigkeiten des Adapters. {{{#!Befehl 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: {{{#!Befehl hcitool scan }}} listet alle gefundenen Geräte. 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: {{{#!Text 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. === Soundsystem === 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 sind hier keine Ubuntu Pakete verfügbar, so dass das Paket selbst kompiliert [3] werden muss. Dafür werden allerdings vorher ein paar Pakete benötigt [1]: * '''cvs''' * '''checkinstall''' * '''automake1.7''' * '''gcc-3.4''' <-- standardmässig nicht in Breezy installiert * '''libbluetooth1-dev''' * '''libasound2-dev''' * '''linux-headers-`uname -r`''' [[Anmerkung(Dies sind die sogenannten "Headers" des linux-Kernels. ''`uname -r`'' bezeichnet die richtige Versionsnummer, die mit derjenigen des Paketes '''linux-image-...''' übereinstimmen muß: z.B. '''linux-headers-2.6.12-9'''. Wer die Pakete im Terminal installiert, kann die angegebene Bezeichnung direkt dort hineinkopieren, dann liefert ''`uname -r`'' automatisch die richtige Version.)]] * '''libtool''' Sind alle Pakete installiert [1], geht es mit dem Runterladen und Übersetzen der Quellen weiter. Folgende Befehle in einem Root-Terminal [3] ausführen: {{{#!Befehl cd /usr/src cvs -d:pserver:anonymous@cvs.sf.net:/cvsroot/bluetooth-alsa co btsco cd btsco ./bootstrap ./configure make checkinstall cd kernel make make install }}} Anmerkung: Checkinstall verlangt unter Breezy, dass eine Versionsnummer 3 für btsco vergeben wird. Ich habe da testweise 1.0 eingetragen. {{{#!Befehl 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 landete bei mir in '''/usr/src/btsco/kernel''', wo es allerdings nicht gefunden wird. Daher mit {{{#!Befehl mv /usr/src/btsco/kernel /lib/modules/2.6.12-9-686/ }}} in das richtige Verzeichnis verschieben. Bei anderen Kernelversionen die Verzeichnisse entsprechend ändern. Nach dem Verschieben müssen noch die Abhängigkeiten aktualisiert werden: {{{#!Befehl 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: {{{#!Text #!/bin/sh modprobe snd_bt_sco hciconfig hci0 voice 0x0060 }}} Und noch als ausführbar setzen: {{{#!Befehl sudo chmod +x /etc/hotplug/usb/hci_usb }}} Verbindet man nun den Bluetooth Adapter (wieder) mit dem PC, sollte man per {{{#!Befehl dmesg }}} in etwa diese Ausgabe erhalten: {{{#!Text ... 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: {{{#!Befehl cat /proc/asound/cards }}} Die Ausgabe sollte etwa so aussehen: {{{#!Text 0 [Live ]: EMU10K1 - Sound Blaster Live! Sound Blaster Live! (rev.4) at 0xe000, irq 12 1 [Headset ]: Bluetooth SCO - BT Headset BT Headset 1 }}} Bei mir 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 das Dongel im Rechner steckt oder nicht. Dazu trägt man das Modul der Soundkarte in '''/etc/modules''' ein. Kennt man das Soundkartenmodul nicht, hilft ein {{{#!Befehl lsmod }}} weiter. Bei mir habe ich das Modul in Zeile "snd_pcm" gefunden. Beim Starten von KDE hat mein aRts Soundserver sich darüber beschwert, dass er nichts ausgeben kann (weil das Headset eben noch nicht per Bluetooth verbunden ist). Sobald man ihm im KDE-Kontrollzentrum unter ''"Sound System -> Hardware -> Hardware-Gerätedatei"'' oder per Parameter (-D) hw:1,0 angibt, funktioniert er wieder ohne Probleme. Kleine Legende: hw:x,y mit x = Nummer (ab 0) des Ausgabegerätes, y = Unternummer (ebenfalls ab 0). Bei hw:1,0 also das 2. Gerät mit Unternummer 1. Stürzt aRts regelmäßig mit der Alsa-Einstellung ab, dann versuche es mal mit OSS als Soundsystem. Im Beispiel von oben, hw:1,0 in Alsa, ist bei OSS dann /dev/dsp1 . Alsa hw:2,0 ist in OSS dann /dev/dsp2 ... Nun aber endlich zur ersten Soundausgabe vom Headset. Bei der ersten Verbindung muss sich das Headset im Pairing-Modus befinden. Bei der ersten Verbindung muss man dann eine Pin eingeben. Funktioniert das wie bei mir nicht auf Anhieb, ist dafür meist der "PIN helper" verantwortlich. Das ist ein kleines Programm, das zur PIN-Eingabe beim Pairing ausgeführt wird. Da es eh nur ein einziges mal aufgerufen wird, habe ich es durch ein kleines Script ersetzt, bei dem die PIN "0000" ist: {{{#!Text $ echo '#!/bin/sh' > /tmp/bluepin.sh $ echo 'echo "PIN:0000"' >> /tmp/bluepin.sh $ chmod +x /tmp/bluepin.sh }}} Und in der Konfigurationsdatei '''/etc/bluetooth/hcid.conf''' den Eintrag "pin_helper" entsprechend auf '''/tmp/bluepin.sh''' geändert. Nun kann man eine Verbindung mit dem Headset herstellen. Der Parameter ist die Adresse, die man mit "hcitool scan" (s.o.) erhält. {{{#!Befehl btsco -v 00:0D:44:03:6B:8A }}} Ausgabe ist: {{{#!Text btsco v0.4c 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 {{{#!Befehl sudo /etc/init.d bluez-utils restart }}} In einem zweiten Terminal [2] kann man nun eine Soundausgabe starten: {{{#!Befehl aplay -B 1000000 -D plughw:Headset sound.wav }}} In ["Skype"] stellt man einfach das Audio Device auf '''/dev/dsp1''' um und es kann losgehen. In xmms geht man über ''"O -> Einstellungen (alternativ STRG+p) -> Ausgabe I/O Plugin -> Ausgabe Plugin: z.B. OSS Treiber -> Konfigurieren -> Geräte"'' {{{#!Text Audiogerät: BT SCO PCM (Duplex) Mixer: BT Headset Mixer }}} Mit 2 mal OK bestätigen. Dann play. Klappt jetzt alles (soll heissen: spielt die Hardware mit) sollte auch Musik zu hören sein. Viel Erfolg! ---- ["Kategorie/Hardware"]