====== Bluetooth mit Linux ====== [[wpde>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. {{linux:730px-bluetooth-logo.svg.png?100|Bluetooth-Logo verwendbar, es ist aber ein geschütztes Warenzeichen}} ([[http://www.kuchling.de/wiki/lib/exe/fetch.php/linux/bluetooth-logo.svg?cache=cache|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). [[wpde>Bluetooth|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. * Bluetooth deaktiviert man (z. B. aus Stromspargründen) mit den beiden Zeilen:hciconfig hci0 down rmmod hci_usb * Für [[linux: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). ===== Links ===== * [[http://wiki.ubuntuusers.de/Bluetooth/Einrichtung|Bluetooth/Einrichtung (@ubuntuusers)]] * [[http://www.galileocomputing.de/openbook/ubuntu/ubuntu11_007.htm#mj94c1ad385f778d2af25f8c7499bb58a3|Bluetooth einrichten]] * [[http://www.holtmann.org/papers/bluetooth/uptimes2003.html|Zur Zeit als die Pinguine blaue Zähne bekamen]] * [[http://www.holtmann.org/papers/bluetooth/ffg2004_slides.pdf|Bluetooth und Linux (PDF)]] * [[http://www.andybotting.com/mediawiki/index.php/Connecting_the_T610_to_Linux,_and_other_bluetooth_adventures|T610 an Linux (Beispiel)]] * [[http://www.pro-linux.de/berichte/mobiltelefone.html|Mobiltelefone und Linux]] * [[http://arstechnica.com/journals/linux.ars/2007/12/10/using-a-bluetooth-phone-with-linux|Using a Bluetooth phone with Linux]] ===== 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 [[wpde>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: * L2CAP: "Logical Link Control and Adaptation Protocol" * RFCOMM: serielle Übertragung * OBEX: Object Exchange * BNEP: Netzwerk * HIDP: Eingabegeräte. ===== 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: * Karteireiter "Zugänge": "Neu ..." * Wählen: Zugangsname: (egal) Telefonnummer: *99# Authentifizierung: PAP * IP: dynamische IP * Gateway: Standard-Gateway, unten ankreuzen: Standardgateway auf diesen Gateway setzen. Übrigens spricht kppp im Verbindungsfenster vom "Adresse auf Fremdrechner" (bei mir 10.6.6.6). * [[netzwerke:DNS]]: "automatisch" müsste gehen, ansonsten auf 62.134.11.4 und 195.182.110.132 setzen; "Während Verbindung existierende [[netzwerke:DNS]]-Server deaktivieren" nicht vergessen. * der Rest ist optional * Karteireiter "Modems": "Neu ..." * Modem-Name (egal) z.B. Nokia 6630 * Modemgerät: /dev/rfcomm0 * Flusskontrolle: Hardware * Zeilenende: CR * Geschwindigkeit: 460800 * Vor dem wählen auf Freizeichen warten * Unterkarteireiter "Modem": : * der APN internet oder surfo2 (je nach Tarif) stellt so ein: "Modembefehle" -> Init-Zeichenfolge 2: AT+CGDCONT=1,"IP","surfo2" ==== 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 [[http://maxwerner.de/wvdial.conf|Konfigurationsbeispiele sind hier aufgelistet]] bzw. [[http://www.debianforum.de/forum/viewtopic.php?t=44035|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 [[netzwerke:DNS]]-Server), muss man wvdial als root starten: sudo wvdial 6630 ==== Fehlersuche ==== siehe auch: [[http://developer.kde.org/~kppp/faq.html|KPPP: Most Frequently Asked questions]] kppp (in [[ubuntu:Ubuntu]] 6.06 dapper, nicht in [[ubuntu:Ubuntu]] 7.04 feisty) meldet Fehler ''Couldn't find interface ppp0: No such device'': * entweder reicht es vor dem Vebinden anderen Netzwerkschnittstellen zu deaktivieren * oder (bei mir ging es nur so) in der Datei /etc/ppp/options die Zeile/das Wort ''auth'' suchen und es gegen ''noauth'' austauschen. 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?). * ja? -> [[netzwerke:DNS]]-Problem. * nein? -> die Standardroute stimmt nicht. === Lösung der Probleme === * **Standardroute richtig?** Wenn nicht: ''route add default gw 10.6.6.6'' . 10.6.6.6 sollte durch die richtige IP des Gateways ersetzt werden, diese findet sich im Verbindungsstatistikfenster neben "Adresse auf Fremdrechner" (bei mir 10.6.6.6). * **richtige [[netzwerke:DNS]]-Server eingetragen?** cat /etc/resolv.conf sollte als **erste** Zeilen (gelten nur für o2, andere Provider haben natürlich andere [[netzwerke:DNS]]). nameserver 62.134.11.4 nameserver 195.182.110.132 enthalten. Wenn nicht, dann ändern (**sudo nano /etc/resolv.conf**). ==== Links ==== [[http://www.o2online.de/nw/support/hilfe/surflaptop/manuell/index.html|Einstellungen für o2]] [[http://layr.at/markus/index.php?option=com_content&task=view&id=23&Itemid=28|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. [[computer: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 [[http://www.christoph-langner.de/node/7|Seite von Christoph Langner]] noch ausführlicher (und einfacher) ist die [[http://wiki.ubuntuusers.de/Bluetooth_Headset|Seite von Ubuntuusers für Bluetooth-headsets]]. ==== Headset mit A2DP ==== Wenn beide Geräte [[wpde>A2DP|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: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: - aus Debian [[http://packages.debian.org/cgi-bin/download.pl?arch=i386&file=pool%2Fmain%2Flibs%2Flibsbc%2Flibsbc0_0.0cvs20070327-1_i386.deb&md5sum=c9ca6ad6a4cebf74b3211e66112fc303&arch=i386&type=main|libsbc]] und [[http://packages.debian.org/cgi-bin/download.pl?arch=i386&file=pool%2Fmain%2Fb%2Fbluetooth-alsa%2Fbluetooth-alsa_0.5cvs20070327-1_i386.deb&md5sum=81a3ac0603e47cfd536b3dff687680c2&arch=i386&type=main| bluetooth-alsa]] installieren - ''.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! - ''.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 } - das Abspielprogramm muss auf das richtige Ausgangsplugin konfiguriert werden. [[http://www.videolan.org/vlc/|VLC]] muss in ~/.vlc/vlcrc folgende Zeilen enthalten: FIXME - das Audio-streaming (mit a2dp) starten: sudo a2dpd === Links === [[http://www.wahlau.org/i_now_have_stereo_bluetooth_on_my_desktop|I now have stereo bluetooth on my desktop]] [[http://bluetooth-alsa.sourceforge.net/build.html|Bluetooth-alsa]] [[http://ubuntuforums.org/showthread.php?t=426828|HOWTO: Bluetooth headset for Skype in Feisty]] [[http://redmonk.com/sogrady/2007/10/04/how-to-connect-a-jawbone-headset-to-a-bluetooth-laptop-on-ubuntu-gutsy-and-then-use-skype|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 ([[wpde>A2DP]]) | Übermittlung von Audiodaten in hoher Qualität (gute Headsets und Musikwiedergabe) sehr wichtig. [[http://www.heise.de/mobil/bluetooth/db/?a=suche&sid=&suche_alt=czowOiIiOw%3D%3D&suche%5Bhersteller%5D=all&suche%5Bgeraeteklasse%5D=all&suche%5Bprofil%5D=2&submit.x=51&submit.y=13&submit=suchen|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 [[wpde>Bluetooth#Bluetooth-Profile|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 ===== * bdaddr: Ändert die Bluetooth-Geräteadresse * [[http://www.securiteam.com/tools/5KP0220F5E.html|bluesnarfer]]: versucht persönliche Informationen aus Bluetooth-Geräten auszulesen * btscanner: Bluetooth-scanner * [[http://www.oldskoolphreak.com/tfiles/ghettotooth.txt|ghettotooth]]: ein [[programmiersprachen:Perl]]-Skript für das permanente Scannen nach Geräten * [[http://www.gnokii.org/|gnokii]]: tools für SMS, Telefonbuch, Kalender, Anrufverwaltung * [[http://www.net-security.org/software.php?id=519|Redfang]] findet versteckte (non-discoverable) Geräte durch ausprobieren der letzten 6 Bytes der Bluetooth-Adresse ==== Dateien senden ==== FIXME [[http://blog.laemmy.net/plugin/tag/bluetooth|Senden und empfangen von Dateien via Bluetooth]] * obexpushd: Als Dienst auf dem Rechner installiert und schon können mobile Geräte Dateien schicken, die dann im Home-Ordner abgelegt werden * obexfs * obexftp * [[p3nfs]]: Zugriff auf Dateisysteme von Symbian-Handys ==== Syncronisation ==== * [[http://www.multisync.org/news.php|MultiSync]]: Syncronisationstools (Gnome) für Adressbücher, Kalender, ... * opensync-plugin-irmc * kdebluetooth-irmcsync ==== bluez-Tools ==== * /usr/bin/ciptool - Bluetooth Common ISDN Access Profile (CIP) * /usr/bin/dund - Bluetooth LAP (LAN Access over PPP) daemon * /usr/bin/hcitool - HCI Tool (diverse Informationen u.a. auch Verbindungsqulität) * /usr/bin/l2ping - Ping Bluetoothgeräte über das [[http://www.itwissen.info/?id=31&ano=01-012087|L2CAP-Protokoll]] * /usr/bin/pand - BlueZ Bluetooth PAN daemon (connect to ethernet networks using Bluetooth) * /usr/bin/rfcomm - RFCOMM (Sub-System des Kernels) configuration utility * /usr/bin/sdptool - control and interrogate SDP servers (SDP bietet einen Mechanismus zum Auffinden von Diensten und deren Eigenschaften an) * /usr/sbin/hciattach - attach serial devices via UART HCI to BlueZ stack * /usr/sbin/hciconfig - konfiguriert Bluetooth-Geräte