Debian Bluetooth

Aus Wiki
Zur Navigation springen Zur Suche springen

Allgemeines

Debian Linux bietet mit blue-z einen leistungsfähigen Bluetooth-Stack, der auch als Accesspoint dienen kann. Dabei spannt er ein sog. PAN (Personal Area Network) auf, bei dem der Linux-Server als NAP (Network Accesspoint) dient. Es gibt zahlreiche Handys, Smartphones und PDA's, die das PAN-Protokoll unterstützen und so eine Verbindung mit dem Accesspoint aufnehmen können. Mit diesen Endgeräten kann man dann im Internet surfen, Emails abrufen oder Termine und Kontakte synchronisieren (siehe auch Funambol).

Die Bluetooth-Geräte werden in eigenes IP-Subnetz - z.B. 192.168.1.0 - gelegt. Die IP-Adressen vergibt ein DHCP-Server für dieses Subnet.


Voraussetzung: C-Compiler


Installation

apt-get install bluetooth bluez-utils
apt-get install libdbus-1-dev
apt-get install pkg-config
apt-get install dhcp3-server

Um Bluetooth-Geräte zu koppeln ist noch ein sog. Key-Agent erforderlich. Für KDE und Gnome stehen dafür graphische Tools zur Verfügung. Für einen Server ist allerdings ein Kommandozeilen-Tool erforderlich, das allerdings nur als C-Source_Code mit installiert wurde. Dieses wird im Folgenden compiliert und installiert.

cd /usr/share/doc/bluez-utils/examples
gunzip passkey-agent.c.gz
make
cp passkey-agent /usr/bin/

Mit folgendem Befehl können Informationen zum erkannten Bluetooth-Gerät (z.B. USB-Stick) abgerufen werden:

hciconfig -a

Es sollte die Bluetooth-Hardware-Adresse (BD-Address), der logische Name (diesen zeigen später zu koppelnde Geräte an), der Hersteller des Sticks, und weitere Informationen.


Konfiguration

vi /etc/default/bluetooth

Folgende Änderungen durchführen:

PAND_ENABLED=1
PAND_OPTIONS="--listen --role NAP --devup /etc/bluetooth/pan/dev-up --devdown /etc/bluetooth/pan/dev-down"
vi /etc/bluetooth/hcid.conf

Den Eintrag

lm accept;

erweitern in:

lm accept,master;

Bluetooth Netzwerk-Interfaces bnep0, bnep1,... und die Netzwerkbrücke pan0 definieren, der die die einzelnen Bluetooth Devices bnep0, bnep1, ... hinzugefügt werden:

vi /etc/network/interfaces

Folgende Zeilen ans Ende anfügen:

iface pan0 inet static
      address 192.168.1.1
      netmask 255.255.255.240

      post-up iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE
      post-up iptables -A FORWARD -i pan0 -o eth0 -j ACCEPT
      post-up iptables -A FORWARD -o pan0 -i eth0 -j ACCEPT

iface bnep0 inet static
      address 0.0.0.0
      netmask 255.255.255.240

iface bnep1 inet static
      address 0.0.0.0
      netmask 255.255.255.240

Start/Stop-Script für Netzwerkbrücke:

vi /etc/init.d/bridge_pan0

Folgende Zeilen einfügen (den Eintrag IPADDR auf die IP-Adresse des Servers setzen) :

#! /bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin
BRIDGECONTROL=/usr/sbin/brctl
NAME=pan0
DESC=bridge
IPADDR=IP_des_Server

test -f $BRIDGECONTROL || exit 0
set -e

case "$1" in
  start)
       echo -n "Starting $DESC: "
       echo 1 > /proc/sys/net/ipv4/ip_forward
       $BRIDGECONTROL addbr $NAME >/dev/null 2>/dev/null
       ifconfig $NAME $IPADDR
       ifup $NAME
       /etc/init.d/dhcp3-server start >/dev/null
       echo "$NAME."
       ;;
  stop)
       echo -n "Stopping $DESC: "
       /etc/init.d/dhcp3-server stop >/dev/null
       ifdown $NAME
       $BRIDGECONTROL delbr $NAME
       echo "$NAME."
       ;;
  *)
       N=/etc/init.d/bridge_pan0
       echo "Usage: $N {start|stop}" >&2
       exit 1
       ;;
esac
exit 0

Anlegen der Bluetooth Interface dev-up und dev-down Scripte:

mkdir /etc/bluetooth/pan
vi /etc/bluetooth/pan/dev-up

Folgende Zeilen einfügen:

#!/bin/sh
ifup $1
brctl addif pan0 $1
vi /etc/bluetooth/pan/dev-down

Folgende Zeilen einfügen:

#!/bin/sh
brctl delif pan0 $1
ifdown $1


Scripte ausführbar machen:

chmod +x /etc/init.d/bridge_pan0
chmod +x /etc/bluetooth/pan/dev-up
chmod +x /etc/bluetooth/pan/dev-down


DHCP-Server:

vi /etc/dhcp3/dhcpd.conf

Folgende Zeilen einfügen:

Bulbgraph.png Hinweis:
  • option domain-name-servers auf den DNS-Server des Internet Routers setzen (hier 192.168.0.1) und option domain-name anpassen.
  • Hier wird das Subnet 192.168.1.0 für die Bluetooth Geräte verwendet. Falls dieses Subnet bereits anderweitig verwendet wird, entsprechend anpassen - z.B. 192.168.2.0. Dann alle folgenden Einträge, die mit 192.168.1 beginnen durch 192.168.2. ersetzen.
subnet 192.168.1.0 netmask 255.255.255.0 {
  interface pan0;
  range 192.168.1.10 192.168.1.25;
  option domain-name-servers 192.168.0.1;
  option domain-name "bluetooth.domain.org";
  option routers 192.168.1.1;
  option broadcast-address 192.168.1.255;
  default-lease-time 600;
  max-lease-time 7200;
}

Netzwerkbrücke und Bluetooth-Stack neu starten:

/etc/init.d/bridge_pan0 start
/etc/init.d/bluetooth restart

Autostart der Netzwerkbrücke beim booten:

update-rc.d bridge_pan0 defaults


Endgeräte Koppeln

Damit Bluetooth-Geräte Zugriff auf den Accesspoint erhalten, müssen diese erst gekoppelt (Pairing) werden. Zu diesem Zweck dient oben compilierter passkey-agent. Der Code blue_key (numerisch, 4-8 stellig) muß am Server und Endgerät identisch sein.

passkey-agent --default blue_key

Am Endgerät eine suche nach Bluetooth geräten durchführen und mit dem Server koppeln. Das Endgerät verlangt nach einem Code. Hier den Code blue_key eingeben. Der Verbindung einen aussagekräftigen Namen geben - z.B. Server


Engerät konfigurieren

Die Konfiguration der Endgeräte variiert sehr stark, sodass diese hier nicht allgemeingültig erläutert werden kann. Hier eine kurze Anleitung für neuere Sony Ericcson Handys:

  1. Menü Einstellungen/Verbindungen aufrufen
  2. Interneteinstellungen anwählen
  3. Lokale Verb. zulassen: ein
  4. Verbinden mit:
  5. Option/Neues Konto
  6. GPRS-Verbindung
  7. Name: z.B. Bluetooth
  8. APN: unbedingt leer lassen, damit Bluetooth verwendet wird!
  9. Speichern


Funktionstest

Die Bedienung der Endgeräte variiert sehr stark. Deshalb evtl. in der Bedienungsanleitung des Gerätes nachsehen. Bluetooth-Verbindung mit dem gekoppelten Server aufbauen. Internet Browser öffnen. Verifizieren, dass als Verbindung die eben angelegte Bluetooth-Verbindung verwendet wird. Eine Seite wie z.B. www.google.de öffnen. Die Seite sollte sich fehlerfrei öffnen.