Bluetooth einrichten
Version vom 23.06.2009
Ansatz zum Pairing ist kompliziert
Abschnitt zu Audio via Bluetooth fehlt
Abschnitt zu Audio via Bluetooth fehlt
Einleitung
Grundsätzlich lässt sich unter Debian natürlich auch die von anderen Distributionen (z.B. Ubuntu) bekannte Bluetooth-Umgebung einrichten. Wer kein blinkendes, blaues Logo auf dem Monitor benötigt, wenn sich ein Bluetoothgerät verbinden möchte, für den ist dieses kleine Howto genau das richtige. Es verzichtet gezielt auf Dienste und Hintergrundprogramme, die nicht benötigt werden und spart so CPU-Zeit und auf modernen Notebooks Akkulaufzeit.Kernel kompilieren
Im Standardkernel von Debian sind die entsprechenden Module wahrscheinlich bereits einkonfiguriert, falls nicht (oder falls eine eigene Kernelkonfiguration vorliegt), sind einige Einstellungen notwendig. Dazu muss unter Networking -> Bluetooth subsystem support die Bluetoothunterstützung aktiviert werden. Die meisten werden zusätzlich den USB-Treiber benötigen, der sich im Untermenü Bluetooth device drivers finden lässt. Kompiliert wird mittels:Seeschlange:/usr/src/linux# make modules && make modules_installIst udev installiert sein (das sollte auf den meisten Systemen der Fall sein), so reicht es den Bluetoothstick abzuziehen und wieder anzustecken, ansonsten müssen die nötigen Kernelmodule erstmal selbst eingebunden werden:
Seeschlange:/usr/src/linux# modprobe btusb && modprobe bluetooth && modprobe rfcomm && modprobe l2cap
Packages installieren
Das ist dank Debians Paketverwaltung schnell getan und kann mittelsSeeschlange:~# apt-get install bluetooth obexpushd obexftperledigt werden. Das erste Paket zieht die benötigten Dienste und Konfigurationsdateien mit sich, das zweite kann benutzt werden, um später vom Handy eine Datei an den Computer zu senden und das letzte Paket bietet die Möglichkeit, vom Computer aus das Handy zu durchsuchen, als wäre es ein FTP-Server. Das erste Paket wird generell benötigt, die anderen beiden sind Geschmackssache - ich verwende sie gerne.
Bluetooth testen
Nach der Installation sollte ein normaler Benutzer (ggf. der Gruppe "netdev" hinzufügen) in der Lage sein (fast!) alle folgenden Schritte durchzuführen. Das ist von Vorteil! Ob der Bluetoothstick überhaupt erkannt wurde, lässt sich mittels des hcitools feststellen. Die Ausgabe sollte etwa so aussehen:michael@Seeschlange:~$ hcitool dev
Devices:
hci0 XX:XX:XX:XX:XX:XX
michael@Seeschlange:~$ hcitool scan
Scanning ...
YY:YY:YY:YY:YY:YY SamsungMit dem ersten Aufruf wird überprüft, ob die Bluetooth-Module richtig arbeiten, mit dem zweiten wird nach sichtbaren Bluetoothgeräten in der Umgebung gesucht.
Dateien empfangen (obexpushd)
Dateien kann man vom Handy ganz einfach an den Computer senden, wenn obexpushd gestartet wurde. Dabei handelt es sich um ein Programm, das mit simplen Skripten viele Aufgaben durchführen kann (so prüft der FoFoPC, ob überhaupt genug Speicherplatz für eine Datei bereitsteht, bevor sie empfangen wird, wertet ihren Inhalt aus und führt dann eine kontextbezogene Aktion durch). Aber auch ohne Skript ist obexpushd sehr praktisch - ein Beispiel:michael@Seeschlange:~$ mkdir /tmp/Bluetoothdateien -p michael@Seeschlange:~$ cd /tmp/Bluetoothdateien michael@Seeschlange:/tmp/Bluetoothdateien$ obexpushd -n obexpushd 0.7 Copyright (C) 2006-2007 Hendrik Sattler This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. Listening on bluetooth [00:00:00:00:00:00]:9 Connection from "bluetooth/[YY:YY:YY:YY:YY:YY]:9" 0.1: Creating file "Foto-0001.jpg" ^C michael@Seeschlange:/tmp/Bluetoothdateien$Zuerst wird ein neues Verzeichnis erstellt und dorthin gewechselt, da obexpushd empfangene Dateien grundsätzlich im aktuellen Verzeichnis speichert. Der Parameter gibt an, dass obexpushd sich nicht in den Hintergrund verkriechen soll (das ist aber Geschmackssache).
Pairing
Ohne die Installation von einigen DBus-Paketen gestaltet sich das Bluetoothpairing relativ umständlich. Allerdings lassen sich sicherlich auch Skripte schreiben, die einem die Arbeit abnehmen. Die simpelste Lösung sieht so aus, funktioniert allerdings nur als Superuser:Seeschlange:~# hcitool dev
Devices:
hci0 XX:XX:XX:XX:XX:XX
Seeschlange:~# hcitool scan
Scanning ...
YY:YY:YY:YY:YY:YY Samsung
Seeschlange:~# echo "YY:YY:YY:YY:YY:YY 1234" >> "/var/lib/bluetooth/XX:XX:XX:XX:XX:XX/pincodes"
Seeschlange:~# Die ersten beide Aufrufe sollen hierbei nur verdeutlichen, woher die Geräteadressen stammen. Für jeden Bluetoothadapter existiert also eine Datei, in der die Adressen der Bluetoothgeräte und deren PIN-Code gelistet sind. Diese kann natürlich auch in einem beliebigen Editor modifiziert werden, um Geräte wieder zu entfernen oder einen PIN zu ändern.
Geräte nach Dateien durchsuchen
Möchte man nicht nur Dateien vom Handy an den Computer senden, sondern vom Computer Dateien runterladen oder hochladen, so kann obexpushd diesen Aufgaben nicht genügen (soll es auch gar nicht). Hier kommt obexftp ins Spiel, allerdings rate ich zur Nutzung von auf das in Java geschriebene obexftp-frontend. Voraussetzung ist natürlich, dass das zuvor beschriebene Pairing durchgeführt wurde. Mit folgendem Aufruf kann überprüft werden, ob die Kommunikation zwischen beiden Teilnehmern korrekt funktioniert:michael@Seeschlange:~$ obexftp -b -l Scanning ... Using YY:YY:YY:YY:YY:YY Samsung Browsing YY:YY:YY:YY:YY:YY ... Channel: 6 Connecting...done Receiving "(null)"... <?xml version="1.0"?> <!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd"> <folder-listing version="1.0"> <folder name="Bilder"/> <folder name="Musik"/> <folder name="Andere Dateien"/> <folder name="Töne"/> <folder name="Videos"/> </folder-listing>done Disconnecting...done michael@Seeschlange:~$Das verzögernde Scannen der Geräte lässt sich abschalten, wenn man obexftp die Adresse des Bluetoothgerätes auf der Kommandozeile direkt mitteilt:
michael@Seeschlange:~$ obexftp -B 6 -b YY:YY:YY:YY:YY:YY -l Browsing YY:YY:YY:YY:YY:YY ... Channel: 6 Connecting...done Receiving "(null)"... <?xml version="1.0"?> <!DOCTYPE folder-listing SYSTEM "obex-folder-listing.dtd"> <folder-listing version="1.0"> <folder name="Bilder"/> <folder name="Musik"/> <folder name="Andere Dateien"/> <folder name="Töne"/> <folder name="Videos"/> </folder-listing>done Disconnecting...doneDas Herunterladen bzw. Ablegen von Dateien erfolgt ebenfalls durch entsprechende Parameter, allerdings ist obexftp-frontend wirklich eine empfehlenswerte Alternative, die einem die meiste Arbeit abnimmt. Einen Fallstrick gibt es: obexftp-frontend erwartet eine Java-6-Umgebung, diese wird vom u.A. vom Paket sun-java6-jre bereitgestellt.
Interna