Bluetooth: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
Zur Navigation springen Zur Suche springen
K (Dies war eine Sackgassenseite)
Zeile 2: Zeile 2:
  
 
==Installation==
 
==Installation==
Als erstes benötigt ihr die [http://www.bluez.org/ bluez-utils], welche den Bluetooth-[[Daemon]] und einige Hilfsprogramme enthält:
 
 
  $ pacman -S bluez
 
 
Nun muss der bluetooth-Daemon gestartet werden. Aus verschiedenen Gründen muss der dbus-Daemon laufen, und das noch bevor der bluetooth-Daemon aktiviert wird.
 
 
  $ /etc/rc.d/dbus start
 
  $ /etc/rc.d/bluetooth start
 
 
Um zu sehen, ob das Bluetooth-Gerät richtig erkannt wurde, benutzt man den Befehl hcitool aus den bluez-utils:
 
 
  $ hcitool dev
 
  Devices:
 
          hci0    xx:xx:xx:xx:xx:xx
 
 
Ausgegeben werden alle verfügbaren Geräte mit ihren zugehörigen MAC-Adressen. Um detaillierte Informationen über ein Gerät zu erhalten, kann man das Tool hciconfig verwenden.
 
 
  $ hciconfig -a hci0
 
  hci0:  Type: USB
 
          BD Address: xx:xx:xx:xx:xx:xx ACL MTU: 384:8 SCO MTU: 64:8
 
          UP RUNNING PSCAN
 
          RX bytes:6245132 acl:18111 sco:0 events:6806 errors:0
 
          TX bytes:102529 acl:6568 sco:0 commands:128 errors:0
 
          Features: 0xff 0xff 0x8f 0xfe 0x9b 0xf9 0x00 0x80
 
          Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3
 
          Link policy: RSWITCH HOLD SNIFF PARK
 
          Link mode: SLAVE ACCEPT
 
          Name: 'xxx'
 
          Class: 0x08010c
 
          Service Classes: Capturing
 
          Device Class: Computer, Laptop
 
          HCI Ver: 2.0 (0x3) HCI Rev: 0x7a6 LMP Ver: 2.0 (0x3) LMP Subver: 0x7a6
 
          Manufacturer: Cambridge Silicon Radio (10)
 
  
 
==Geräte koppeln==
 
==Geräte koppeln==

Version vom 7. November 2011, 19:41 Uhr

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 Wikipedia.png OBEX.

Installation

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.

Beispiel für Methode mit automatischer Kopplung

Bei diesem Beispiel wurde ein Motorola RAZR V8 verwendet.

 $ obexftp -b xx:xx:xx:xx:xx:xx -l
 Browsing xx:xx:xx:xx:xx:xx ...
 Connecting...done
 Receiving "/"... Sending ""... done
 --- <content> ---
 Disconnecting...done

Dieser Befehl baut eine OBEX-Datenverbindung mit der unter der Option -b angegebenen MAC-Adresse auf und gibt den Inhalt des Rootverzeichnisses des Mobiltelefons aus. Wenn das Mobiltelefon noch nicht gekoppelt wurde, so wird nach dem Passkey gefragt, der zuvor mittels passkey-agent angegeben wurde (hier muss passkey-agent unbedingt noch laufen!). Ist das Gerät dann gekoppelt, so wird am Mobiltelefon nachgefragt, ob eine Verbindung aufgebaut werden darf - akzeptiert man dies, so fährt obexftp nach der Connecting-Phase mit dem Transfer fort und beendet nach dessen Abschluss die Verbindung.

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/