Bluetooth

Aus wiki.archlinux.de

Dieser Artikel lehnt sich an den Artikel Bluetooth aus der englischen Archlinux-Wiki an, behandelt in erster Linie jedoch den Dateitransfer zwischen Mobiltelefonen und Computern mittels OBEX.

Geräte koppeln

Damit eine Verbindung nicht von jedem einfach so aufgebaut werden kann, müssen Bluetooth-Geräte oft mit einem Passkey gekoppelt werden. Der Vorgang läuft in etwa so ab:

  • Der Client will eine Verbindung zum Server aufbauen (zum Beispiel Computer->Mobiltelefon)
  • Der Client und der Server bitten um die Eingabe des Passkeys
  • Diese werden verglichen - wenn sie gleich sind, so wird das Gerät gekoppelt, ansonsten wird die Verbindung abgebrochen

Das bluez-utils Paket stellt uns wieder ein praktisches Tool namens passkey-agent für die Übermittlung des Passkeys zur Verfügung.

Nutzeranmerkung: Anscheinend ist passkey-agent derzeit nicht in bluez enthalten, es klappt auch mit bluez-simple-agent, siehe englische Anleitung.

 $ passkey-agent
 Bluetooth passkey agent ver 3.32
 Usage:
         passkey-agent [--default] [--path agent-path] <passkey> [address]

Um einen default Key für alle Geräte zu verwenden benutzt man einfach folgenden Befehl:

 $ passkey-agent --default xxx &

Wenn man nur mit einem speziellen Gerät koppeln will kann man auch die jeweilige MAC-Adresse verwenden

 $ passkey-agent --default xxx MAC &

Wenn man ein Mobiltelefon benutzt, so kann man auf zwei Arten koppeln:

  • Entweder man sucht den Computer direkt mit dem Mobiltelefon und koppelt manuell
  • oder man versucht vom Computer aus eine Verbindung zum Mobiltelefon aufzubauen.

Für die erste Möglichkeit muss die Option ISCAN (Inquiry scan) für das Bluetooth-Device aktiviert sein. Überprüfen könnt ihr das mit folgendem Befehl:

 $ hciconfig <dev> | grep ISCAN
        UP RUNNING PSCAN ISCAN

<dev> ersetzt ihr mit dem jeweiligen Bluetooth-Gerät (z.B.: hci0). Sollte ISCAN nicht aktiviert sein, so aktiviert man es manuell mittels hciconfig:

 $ hciconfig <dev> piscan

Dieser Befehl aktiviert PSCAN (Page scan) und ISCAN - das Gerät bleibt aber nur eine bestimmte Zeit sichtbar. (Beide Optionen findet man auch in der /etc/bluetooth/hcid.conf, leider scheint keine der Defaulteinstellungen darin eine unmittelbare Wirkung zu zeigen) Nun kann der Computer von anderen Bluetooth-Geräten gefunden werden und man kann versuchen manuell zu koppeln. Der passkey-agent gibt bei der Anfrage dann folgende Meldung aus:

 Passkey request for device xx:xx:xx:xx:xx:xx

Wenn der Key richtig eingegeben wurde, so ist das Gerät nun gekoppelt (evtl. muss die Kopplung auf einem Mobiltelefon noch gespeichert werden).

Für die zweite Möglichkeit, der Kopplung durch Verbindungsanfrage, benutzt man einfach beispielsweise ein Tool wie obexftp, um sich mit dem Server (Mobiltelefon) mittles OBEX zu verbinden. Wenn beim Mobiltelefon Bluetooth aktiviert ist, sollte das Gerät selbst nach der Kopplung fragen. Nach der Eingabe des Keys wird die Verbindung hergestellt und das Gerät ist gekoppelt.

Ist das Gerät einmal gekoppelt worden, so muss man den passkey-agent nichtmehr extra starten. Dessen Aufgabe übernimmt von nun an der dbus-Daemon.

Ein Gerät in das lokale Dateisystem einbinden

Mit dem auf FUSE basierenden Tool obexfs kann ein Dateisystem über Bluetooth in das lokale Linuxdateisystem gemountet werden. Dazu installiert man es sich einfach mittels

 # pacman -S obexfs

Nun erstellt man sich noch einen beliebigen Mountpoint (sofern man noch keinen zur Verfügung hat):

 # mkdir /mnt/bluetooth

Damit man als User mounten kann muss man Schreibzugriff auf den Mountpoint besitzen. Also führt ihr obexfs entweder als root aus, oder ihr erstellt am Besten eine eigene Gruppe namens "bluetooth", welche Lese- und Schreibrechte auf den Mountpoint besitzen:

 # chown root /mnt/bluetooth
 # chmod 775 /mnt/bluetooth
 # groupadd bluetooth
 # usermod -a -G bluetooth USERNAME

Nun kann man das Dateisystem mounten:

 $ obexfs -b xx:xx:xx:xx:xx:xx /mnt/bluetooth/