Inhaltsverzeichnis

Bluetooth mit Linux

Bluetooth /ˈbluːtuːθ/ ist ein in den 1990er Jahren ursprünglich von Ericsson entwickelter Industriestandard gemäß IEEE 802.15.1 für die drahtlose (Funk-)Vernetzung von Geräten über kurze Distanz. Bluetooth bietet eine drahtlose Schnittstelle, über die sowohl mobile Kleingeräte wie Mobiltelefone und PDAs als auch Computer und Peripheriegeräte miteinander kommunizieren können. Ein solches Netzwerk wird auch als Wireless Personal Area Network (WPAN) bezeichnet. Hauptzweck von Bluetooth ist das Ersetzen von Kabelverbindungen zwischen Geräten.

Bluetooth-Logo verwendbar, es ist aber ein geschütztes Warenzeichen (Bluetooth-Logo verlustfreie SVG-Version)

Theoretisch kann eine Datenübertragungsrate von 706,25 kBit/s beim Herunterladen (Download) bei gleichzeitigen 57,6 kBit/s beim Heraufladen (Upload) erreicht werden (asymmetrische Datenübertragung). Seit der Version 2.0 + EDR können Daten durch EDR (Enhanced Data Rate) maximal etwa dreimal so schnell übertragen werden, also mit rund 2,1 Mbit/s. Bereits seit Version 1.1 kann ein Bluetooth-Gerät gleichzeitig bis zu sieben Verbindungen aufrechterhalten, wobei sich die beteiligten Geräte die verfügbare Bandbreite teilen müssen (shared medium). Quelle

Unter Ubuntu installiert man die gebrauchten Pakete mit

apt-get install bluez-utils bluez-gnome gnome-bluetooth

optional kann man noch bluemon (ein bluetooth-monitor) dazu nehmen.

:!: Für headsets muss das Paket bluez-btsco ebenfalls installiert werden.

Tipps und Tricks

  • Bluetooth deaktiviert man (z. B. aus Stromspargründen) mit den beiden Zeilen:
    hciconfig hci0 down
    rmmod hci_usb
  • Für KDE gibt es das Paket kdebluetooth, im Konqueror muss man dann nur noch bluetooth:/ in der Adresszeile eingeben.
  • Mit watch hcitool con kann man aktuelle Verbindungen überwachen.
  • Die Zuordnungen von Bluetooth-Geräten und ihren PINs sowie weitere Information werden im Verzeichnis /var/lib/bluetooth abgelegt (geordnet nach der MAC-Adresse der BT-Adaptern).

Funktionstest

Wenn der Befehl hciconfig (wie hier im Beispiel) in der dritten Zeile DOWN anzeigt

hci0:   Type: USB 
        BD Address: 00:00:00:00:00:00 ACL MTU: 0:0  SCO MTU: 0:0
        DOWN 
        RX bytes:0 acl:0 sco:0 events:0 errors:0
        TX bytes:0 acl:0 sco:0 commands:0 errors:0

muss der Bluetooth-Adapter noch aktiviert werden (hciconfig hci0 up).

Geräte in Rechweite suchen

Der Befehl

hcitool scan

sollte eine Ausgabe nach folgenden Schema ergeben.

Scanning ...
        00:80:37:25:55:96       Nokia 6630
        00:E0:03:04:6D:36       Nokia 6210

Die unterstützten Profile kann man mit dem Befehl

sdptool browse 00:80:37:25:55:96

auswerfen lassen, die MAC Adresse (00:80:37…) muss man anpassen.

Dabei bedeuten die Abkürzungen:

Serielle Verbindung (Kopplung)

Die richtigen Einstellungen in der Datei /etc/bluetooth/rfcomm.conf eintragen:

rfcomm0 {
	# Automatically bind the device at startup
	bind yes;

	# Bluetooth address of the device
	device 00:80:37:25:55:96;

	# RFCOMM channel for the connection
	channel	1;

	# Description of the connection
	comment "Nokia 6630";
}

nach dem Neustart von Bluetooth (/etc/init.d/bluetooth restart) sollte der Befehl rfcomm -a eine ähnliche Ausgabe zeigen:

rfcomm0: 00:15:A0:4D:5A:3A channel 1 clean

Falls nicht bzw. alternativ zu „bind yes“ kann man das Gerät auch manuell Binden:

rfcomm connect 0 00:15:A0:4D:5A:3A 1

Das Telefon ist nun unter /dev/rfcomm0 erreichbar und kann über ein Wählprogramm angesprochen werden. Falls ein Programm auf den Zugriff über /dev/modem besteht, legt man einen symbolischen Link (mit sudo ln -s /dev/rfcomm0 /dev/modem )an.

Internet-Einwahl (DUN)

Die Einwahl geht mit vielen Programmen, genannt wird immer wieder wvdial und kppp. KPPP wird man benutzen wenn man KDE benutzt bzw. unter Gnome z.B. zu wenig Arbeitsspeicher kein Problem ist. Andernfalls erledigt das Konsolenbasierte wvdial die Aufgabe ebenso.

mit KPPP

Kppp ist sehr komfortabel und braucht für den Provider o2 (ggf. andere Daten eintragen) und dem Nokia 6630 (spielt hier keine Rolle) folgende Einstellungen:

mit wvdial

Die Datei /etc/wvdial.conf sollte um einen Eintrag für die Interneteinwahl ergänzt werden: Im Beispiel hier für den Provider o2. Vorrausgesetzt wird eine stehende Bluetooth-Verbindung über rfcomm als Gerät /dev/rfcomm0.

[Dialer Defaults]
Phone = 
Username = 
Password = 
New PPPD = yes

[Dialer 6630]
Modem = /dev/rfcomm0
ISDN = off
Modem Type = Analog Modem
Baud = 460800
Init = ATZ
Init2 = AT+CGDCONT=1,"IP","surfo2"
Phone = *99#
Dial Prefix =
Dial Attempts = 1
Dial Command = ATD
Ask Password = off
Password = gprs
Username = eplus
Auto Reconnect = off
Abort on Busy = off
Carrier Check = on
Check Def Route = on
Abort on No Dialtone = on
Stupid Mode = off
Idle Seconds = 0
Auto DNS = on

Andere Konfigurationsbeispiele sind hier aufgelistet bzw. hier eine passende Fehlerhilfe.

Danach kann die Einwahl mit wvdial 6630 gestartet werden. Statt 6630 gibt man den Name des Profils an. :!: Wenn man auch das Standard-gateway automatisch eingestellt haben möchte (und nicht nur die DNS-Server), muss man wvdial als root starten:

sudo wvdial 6630

Fehlersuche

siehe auch: KPPP: Most Frequently Asked questions

kppp (in Ubuntu 6.06 dapper, nicht in Ubuntu 7.04 feisty) meldet Fehler Couldn't find interface ppp0: No such device:

They are saying to remove „auth“ and replace it with „noauth“ in /etc/ppp/options Also, remove it from the kppp config menu.

Wenn die Verbindung geklappt hat und man trotzdem keine Daten empfängt: klappt ein ping auf eine bekannte IP? Beispielweise ping 85.25.136.135 (für diesen Server?).

Lösung der Probleme

nameserver 62.134.11.4
nameserver 195.182.110.132

enthalten. Wenn nicht, dann ändern (sudo nano /etc/resolv.conf).

Links

Einstellungen für o2 Nokia 6630 als UMTS-Modem unter Linux (unter Gentoo)

Headset unter Linux

Headset ohne A2DP

Wenn man sein Headset lediglich für Sprache (z.B. VoIP) einsetzen will, reicht die mäßige Soundqualität (8000khz mono) aus.

Das Modul snd_bt_sco richtet eine Soundkarte (für ALSA) ein, auf die dann jedes Programm zugreifen kann. Dazu muss das Modul vorher mit

sudo modprobe snd_bt_sco

geladen werden. Danach taucht sie in der Liste der Soundkarten auf, was man mit

cat /proc/asound/cards

überprüfen kann. Dauerhaft kann man das Modul in der /etc/modules eintragen (einfach snd_bt_sco in einer eigenen Zeile eintragen und abspeichern).

Nachdem man mit hcitool scan die MAC-Adresse des entsprechende Gerätes herausbekommen hat, verbindet man sich zum Headset mit

btsco -v MAC

Die Qualität dürfte für Sprache reichen, für mehr muss man A2DP einrichten (siehe unten). Ausführlichere Informationen bietet die Seite von Christoph Langner noch ausführlicher (und einfacher) ist die Seite von Ubuntuusers für Bluetooth-headsets.

Headset mit A2DP

Wenn beide Geräte A2DP (Advanced Audio Distribution Profile) beherrschen kann Audio in hoher Qualität angehört werden. Dazu muss man in seiner Linux-Distribution A2DP-Unterstützung aktivieren.

Ab Ubuntu 7.10 (gutsy), bzw. bei ähnlich aktuellen Distributionen, dürfte die Einrichtung mit dem Paket bluetooth-alsa (aus „universe“) sehr viel einfacher sein.

Auf 7.04 (feisty) ist leider ein etwas umständlicherer Weg nötig:

  1. aus Debian libsbc und bluetooth-alsa installieren
  2. .a2dprc anlegen (gedit ~/.a2dprc) und mit diesem Inhalt füllen:
    [a2dpd]
    rate=44100
    sbcbitpool=53
    flags=0
    enablereversestereo=1
    enableautoconnect=1
    timeout=2000
    cmdplay=xmms --play
    cmdpause=xmms --pause
    cmdprev=xmms --rew
    cmdnext=xmms --fwd
    cmdnew=xmms --play
    cmdstop=xmms --stop
    enableavrcp=1
    enablerereadconfig=1
    enabledebug=1
    flags=0
    enablestdin=1
    enableredirectalsa=0
    address=XX:XX:XX:XX:XX:XX
    alsaoutput=
     

    :!: unter address muss die korrekte MAC-Adresse eingetragen werden!

  3. .asoundrc (gedit ~/.asoundrc) und mit diesem Inhalt füllen:
      pcm.headset {
      @args [BDADDR TIMEOUT]
      @args.BDADDR {
        type string
        default "00:13:1B:00:1F:02"
      }
      @args.TIMEOUT {
        type integer
        default 6000
      
    }
      type sco
      bdaddr $BDADDR
      timeout $TIMEOUT
    }
    
    ctl.headset {
      type sco
    }
    
    pcm.a2dpd {
      type a2dpd
    } 
  4. das Abspielprogramm muss auf das richtige Ausgangsplugin konfiguriert werden. VLC muss in ~/.vlc/vlcrc folgende Zeilen enthalten: FIXME
  5. das Audio-streaming (mit a2dp) starten:
     sudo a2dpd 

Links

I now have stereo bluetooth on my desktop Bluetooth-alsa HOWTO: Bluetooth headset for Skype in Feisty How to Connect a Jawbone Headset to a Bluetooth Laptop on Ubuntu Gutsy (And Then Use Skype)

Bluetooth-Profile

Profile sind einzelne Fähigkeiten die ein Gerät versteht:

Name (Kürzel) Funktion
Advanced Audio Distribution Profile (A2DP) Übermittlung von Audiodaten in hoher Qualität (gute Headsets und Musikwiedergabe) sehr wichtig. Geräte mit A2DP
Dial-up networking (DUN) Internet-Einwahlverbindung
File Transfer Profile (FTP) Dateiübertragung
Headset Profile (HSP) Sprachausgabe per Headset
Human Interface Device Profile (HID) Eingabe
Serial Port Profile (SPP) Serielle Datenübertragung
Synchronisation Profile (SYNCH) Datenabgleich

Eine komplette Liste befindet sich hier.

Bluetooth-Netze bilden

Für das Erstellen von (Pico-) Netzen über Bluetooth bietet sich das Paket grml-btnet (aus dem universe) an.

Tools

Dateien senden

FIXME Senden und empfangen von Dateien via Bluetooth

Syncronisation

bluez-Tools