Update to r44152:

Initial shuffle through Bluetooth chapter to improve flow.
Some sections renamed.
Flow is now using USB first followed by the various protocols
and utilities.
This commit is contained in:
Bjoern Heidotting 2016-02-03 19:44:50 +00:00
parent 82ee9c0772
commit eef7bcc5ba
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=48146

View file

@ -5,7 +5,7 @@
$FreeBSD$
$FreeBSDde:$
basiert auf: r44143
basiert auf: r44152
-->
<chapter xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
@ -2399,9 +2399,6 @@ freebsdap 00:11:95:c3:0d:ac 1 54M 22:1 100 EPS</screen>
<primary>Bluetooth</primary>
</indexterm>
<sect2>
<title>Übersicht</title>
<para>Bluetooth ermöglicht die Bildung von persönlichen
Netzwerken über drahtlose Verbindungen bei einer maximalen
Reichweite von 10 Metern und operiert im unlizensierten
@ -2422,10 +2419,12 @@ freebsdap 00:11:95:c3:0d:ac 1 54M 22:1 100 EPS</screen>
Die Bluetooth-PC-Card 3CRWB60-A von 3Com verwendet den
&man.ng.bt3c.4;-Treiber. Serielle sowie auf UART basierende
Bluetooth-Geräte werden von &man.sio.4;, &man.ng.h4.4;
sowie &man.hcseriald.8; unterstützt. Dieses Kapitel
beschreibt die Verwendung von
<acronym>USB</acronym>-Bluetooth-Adaptern.</para>
</sect2>
sowie &man.hcseriald.8; unterstützt.</para>
<para>Dieses Kapitel beschreibt die Verwendung von
<acronym>USB</acronym>-Bluetooth-Adaptern in &os;. Weiterhin
werden verschiedene Bluetooth-Protokolle und Programme
vorgestellt.</para>
<sect2>
<title>Die Bluetooth-Unterstützung aktivieren</title>
@ -2471,8 +2470,7 @@ Number of SCO packets: 8</screen>
</sect2>
<sect2>
<title>Das Host Controller Interface
(<acronym>HCI</acronym>)</title>
<title>Suche nach anderen Bluetooth-Geräten</title>
<indexterm>
<primary>HCI</primary>
@ -2573,8 +2571,182 @@ Reason: Connection terminated by local host [0x16]</screen>
</sect2>
<sect2>
<title>Das Logical Link Control and Adaptation Protocol
(<acronym>L2CAP</acronym>)</title>
<title>Erstmaliger Verbindungsaufbau zwischen zwei
Bluetooth-Geräten (<foreignphrase>Pairing</foreignphrase>)
</title>
<indexterm>
<primary>Pairing</primary>
</indexterm>
<para>In der Voreinstellung nutzt Bluetooth keine
Authentifizierung, daher kann sich jedes Bluetoothgerät mit
jedem anderen Gerät verbinden. Ein Bluetoothgerät, wie
beispielsweise ein Mobiltelefon, kann jedoch für einen
bestimmten Dienst, etwa eine Einwählverbindung, eine
Authentifizierung anfordern. Bluetooth verwendet zu diesem
Zweck <emphasis><acronym>PIN</acronym>-Codes</emphasis>. Ein
<acronym>PIN</acronym>-Code ist ein maximal 16 Zeichen langer
ASCII-String. Damit eine Verbindung zustande kommt, muss auf
beiden Geräten der gleiche <acronym>PIN</acronym>-Code
verwendet werden. Nachdem der Code eingegeben wurde, erzeugen
beide Geräte einen <emphasis>link key</emphasis>,
der auf den Geräten gespeichert wird. Beim nächsten
Verbindungsaufbau wird der zuvor erzeugte Link Key verwendet.
Diesen Vorgang bezeichnet man als
<foreignphrase>Pairing</foreignphrase>. Geht der Link Key auf
einem Gerät verloren, muss das Pairing wiederholt
werden.</para>
<para>Der &man.hcsecd.8;-Daemon verarbeitet
Bluetooth-Authentifzierungsanforderungen und wird über die
Datei <filename>/etc/bluetooth/hcsecd.conf</filename>
konfiguriert. Der folgende Ausschnitt dieser Datei zeigt die
Konfiguration für ein Mobiltelefon, das den
<acronym>PIN</acronym>-Code <quote>1234</quote>
verwendet:</para>
<programlisting>device {
bdaddr 00:80:37:29:19:a4;
name "Pav's T39";
key nokey;
pin "1234";
}</programlisting>
<para>Von der Länge abgesehen, unterliegen
<acronym>PIN</acronym>-Codes keinen Einschränkungen. Einige
Geräte, beispielsweise Bluetooth-Headsets, haben einen festen
<acronym>PIN</acronym>-Code eingebaut. Die Option
<option>-d</option> sorgt dafür, dass der
&man.hcsecd.8;-Daemon im Vordergrund läuft. Dadurch kann
der Ablauf einfach verfolgt werden. Stellen Sie das entfernte
Gerät auf <foreignphrase>receive pairing</foreignphrase>
und initiieren Sie die Bluetoothverbindung auf dem entfernten
Gerät. Sie erhalten die Meldung, dass Pairing akzeptiert
wurde und der <acronym>PIN</acronym>-Code benötigt wird.
Geben Sie den gleichen <acronym>PIN</acronym>-Code ein, den
Sie in <filename>hcsecd.conf</filename> festgelegt haben. Der
Computer und das entfernte Gerät sind nun miteinander
verbunden. Alternativ können Sie das Pairing auch auf dem
entfernten Gerät initiieren.</para>
<para>&man.hcsecd.8; kann durch das Einfügen
der folgenden Zeile in <filename>/etc/rc.conf</filename>
beim Systemstart automatisch aktiviert werden:</para>
<programlisting>hcsecd_enable="YES"</programlisting>
<para>Es folgt nun eine beispielhafte Ausgabe
des &man.hcsecd.8;-Daemons:</para>
<programlisting>hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist
hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists
hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4</programlisting>
</sect2>
<sect2>
<title>Einwahlverbindungen und Netzwerkverbindungen mit
<acronym>PPP</acronym>-Profilen einrichten</title>
<para>Das
<foreignphrase>Dial-Up Networking</foreignphrase>-Profil
(<acronym>DUN</acronym>) wird vor allem für Modems und
Mobiltelefone verwendet. Dieses Profil ermöglicht folgende
Szenarien:</para>
<itemizedlist>
<listitem>
<para>Die Verwendung eines Mobiltelefons oder eines
Modems durch einen Computer als drahtloses Modem, um sich
über einen Einwahlprovider mit dem Internet zu verbinden
oder andere Einwahldienste zu benutzen.</para>
</listitem>
<listitem>
<para>Die Verwendung eines Mobiltelefons oder eines
Modems durch einen Computers, um auf Datenabfragen zu
reagieren.</para>
</listitem>
</itemizedlist>
<para>Der Zugriff auf ein Netzwerk über ein
<acronym>PPP</acronym>-Profil kann in folgenden Situationen
verwendet werden:</para>
<itemizedlist>
<listitem>
<para>Den <acronym>LAN</acronym>-Zugriff für ein einzelnes
Bluetooth-Gerät.</para>
</listitem>
<listitem>
<para>Den <acronym>LAN</acronym>-Zugriff für mehrere
Bluetooth-Geräte.</para>
</listitem>
<listitem>
<para>Eine PC-zu-PC-Verbindung unter Verwendung
einer <acronym>PPP</acronym>-Verbindung über eine emulierte
serielle Verbindung.</para>
</listitem>
</itemizedlist>
<para>Diese Profile werden unter &os; durch &man.ppp.8; sowie
&man.rfcomm.pppd.8; implementiert - einem Wrapper, der
<acronym>RFCOMM</acronym> Bluetooth-Verbindungen unter
<acronym>PPP</acronym> nutzbar macht. Bevor ein Profil
verwendet werden kann, muss ein neuer
<acronym>PPP</acronym>-Abschnitt in
<filename>/etc/ppp/ppp.conf</filename> erzeugt werden.
Beispielkonfigurationen zu diesem Thema finden Sie in
&man.rfcomm.pppd.8;.</para>
<para>Das folgende Beispiel verwendet &man.rfcomm.pppd.8;, um
eine <acronym>RFCOMM</acronym>-Verbindung zu einem entfernten
Gerät mit der<literal>BD_ADDR 00:80:37:29:19:a4</literal> auf
dem <acronym>RFCOMM</acronym>-Kanal <literal>DUN</literal>
aufzubauen. Die aktuelle
<acronym>RFCOMM</acronym>-Kanalnummer erhalten Sie vom
entfernten Gerät über <acronym>SDP</acronym>. Es ist auch
möglich, manuell einen <acronym>RFCOMM</acronym>-Kanal
festzulegen. In diesem Fall führt &man.rfcomm.pppd.8; keine
<acronym>SDP</acronym>-Abfrage durch. Verwenden Sie
&man.sdpcontrol.8;, um die <acronym>RFCOMM-Kanäle</acronym>
des entfernten Geräts herauszufinden.</para>
<screen>&prompt.root; <userinput>rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialup</userinput></screen>
<para>Der &man.sdpd.8;-Server muss laufen, damit ein Netzzugriff
mit dem <acronym>PPP</acronym> <acronym>LAN</acronym>-Profil
möglich ist. Außerdem muss für den
<acronym>LAN</acronym>-Client ein neuer Eintrag in
<filename>/etc/ppp/ppp.conf</filename> erzeugt werden.
Beispielkonfigurationen zu diesem Thema finden Sie in
&man.rfcomm.pppd.8;. Danach starten Sie den
<acronym>RFCOMM</acronym> <acronym>PPP</acronym>-Server
über eine gültige <acronym>RFCOMM</acronym>-Kanalnummer.
Der <acronym>RFCOMM</acronym> <acronym>PPP</acronym>-Server
bindet dadurch den Bluetooth-<acronym>LAN</acronym>-Dienst an
den lokalen <acronym>SDP</acronym>-Daemon. Das folgende
Beispiel zeigt, wie man den <acronym>RFCOMM</acronym>
<acronym>PPP</acronym>-Server startet.</para>
<screen>&prompt.root; <userinput>rfcomm_pppd -s -C 7 -l rfcomm-server</userinput></screen>
</sect2>
<sect2>
<title>Bluetooth-Protokolle</title>
<para>Dieser Abschnitt beschreibt die verschiedenen
Bluetooth-Werkzeuge, ihre Funktionen sowie weitere
Programme.</para>
<sect3>
<title>Das Logical Link Control and Adaptation Protocol
(<acronym>L2CAP</acronym>)</title>
<indexterm>
<primary>L2CAP</primary>
@ -2655,10 +2827,11 @@ c2afe900 c2b53380 1 127 0 Yes OPEN
Active RFCOMM sockets
PCB Recv-Q Send-Q Local address Foreign address Chan DLCI State
c2e8bc80 0 250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3 6 OPEN</screen>
</sect2>
</sect3>
<sect2>
<title>Das <acronym>RFCOMM</acronym>-Protokoll</title>
<sect3>
<title>Radio Frequency Communication
(<acronym>RFCOMM</acronym>)</title>
<indexterm>
<primary>RFCOMM</primary>
@ -2692,86 +2865,9 @@ c2e8bc80 0 250 00:02:72:00:d4:1a 00:07:e0:00:0b:ca 3 6 OPEN</scree
<para>Unter &os; ist das <acronym>RFCOMM</acronym>-Protokoll
im Bluetooth Socket-Layer implementiert.</para>
</sect2>
</sect3>
<sect2>
<title>Erstmaliger Verbindungsaufbau zwischen zwei
Bluetooth-Geräten (<foreignphrase>Pairing</foreignphrase>)
</title>
<indexterm>
<primary>Pairing</primary>
</indexterm>
<para>In der Voreinstellung nutzt Bluetooth keine
Authentifizierung, daher kann sich jedes Bluetoothgerät mit
jedem anderen Gerät verbinden. Ein Bluetoothgerät, wie
beispielsweise ein Mobiltelefon, kann jedoch für einen
bestimmten Dienst, etwa eine Einwählverbindung, eine
Authentifizierung anfordern. Bluetooth verwendet zu diesem
Zweck <emphasis><acronym>PIN</acronym>-Codes</emphasis>. Ein
<acronym>PIN</acronym>-Code ist ein maximal 16 Zeichen langer
ASCII-String. Damit eine Verbindung zustande kommt, muss auf
beiden Geräten der gleiche <acronym>PIN</acronym>-Code
verwendet werden. Nachdem der Code eingegeben wurde, erzeugen
beide Geräte einen <emphasis>link key</emphasis>,
der auf den Geräten gespeichert wird. Beim nächsten
Verbindungsaufbau wird der zuvor erzeugte Link Key verwendet.
Diesen Vorgang bezeichnet man als
<foreignphrase>Pairing</foreignphrase>. Geht der Link Key auf
einem Gerät verloren, muss das Pairing wiederholt
werden.</para>
<para>Der &man.hcsecd.8;-Daemon verarbeitet
Bluetooth-Authentifzierungsanforderungen und wird über die
Datei <filename>/etc/bluetooth/hcsecd.conf</filename>
konfiguriert. Der folgende Ausschnitt dieser Datei zeigt die
Konfiguration für ein Mobiltelefon, das den
<acronym>PIN</acronym>-Code <quote>1234</quote>
verwendet:</para>
<programlisting>device {
bdaddr 00:80:37:29:19:a4;
name "Pav's T39";
key nokey;
pin "1234";
}</programlisting>
<para>Von der Länge abgesehen, unterliegen
<acronym>PIN</acronym>-Codes keinen Einschränkungen. Einige
Geräte, beispielsweise Bluetooth-Headsets, haben einen festen
<acronym>PIN</acronym>-Code eingebaut. Die Option
<option>-d</option> sorgt dafür, dass der
&man.hcsecd.8;-Daemon im Vordergrund läuft. Dadurch kann
der Ablauf einfach verfolgt werden. Stellen Sie das entfernte
Gerät auf <foreignphrase>receive pairing</foreignphrase>
und initiieren Sie die Bluetoothverbindung auf dem entfernten
Gerät. Sie erhalten die Meldung, dass Pairing akzeptiert
wurde und der <acronym>PIN</acronym>-Code benötigt wird.
Geben Sie den gleichen <acronym>PIN</acronym>-Code ein, den
Sie in <filename>hcsecd.conf</filename> festgelegt haben. Der
Computer und das entfernte Gerät sind nun miteinander
verbunden. Alternativ können Sie das Pairing auch auf dem
entfernten Gerät initiieren.</para>
<para>&man.hcsecd.8; kann durch das Einfügen
der folgenden Zeile in <filename>/etc/rc.conf</filename>
beim Systemstart automatisch aktiviert werden:</para>
<programlisting>hcsecd_enable="YES"</programlisting>
<para>Es folgt nun eine beispielhafte Ausgabe
des &man.hcsecd.8;-Daemons:</para>
<programlisting>hcsecd[16484]: Got Link_Key_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', link key doesn't exist
hcsecd[16484]: Sending Link_Key_Negative_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Got PIN_Code_Request event from 'ubt0hci', remote bdaddr 0:80:37:29:19:a4
hcsecd[16484]: Found matching entry, remote bdaddr 0:80:37:29:19:a4, name 'Pav's T39', PIN code exists
hcsecd[16484]: Sending PIN_Code_Reply to 'ubt0hci' for remote bdaddr 0:80:37:29:19:a4</programlisting>
</sect2>
<sect2>
<sect3>
<title>Das Service Discovery Protocol
(<acronym>SDP</acronym>)</title>
@ -2877,99 +2973,9 @@ Bluetooth Profile Descriptor List:
Kontrollkanal abfragen:</para>
<screen>&prompt.root; <userinput>sdpcontrol -l browse</userinput></screen>
</sect2>
</sect3>
<sect2>
<title>Einwahlverbindungen und Netzwerkverbindungen mit
<acronym>PPP</acronym>-Profilen einrichten</title>
<para>Das
<foreignphrase>Dial-Up Networking</foreignphrase>-Profil
(<acronym>DUN</acronym>) wird vor allem für Modems und
Mobiltelefone verwendet. Dieses Profil ermöglicht folgende
Szenarien:</para>
<itemizedlist>
<listitem>
<para>Die Verwendung eines Mobiltelefons oder eines
Modems durch einen Computer als drahtloses Modem, um sich
über einen Einwahlprovider mit dem Internet zu verbinden
oder andere Einwahldienste zu benutzen.</para>
</listitem>
<listitem>
<para>Die Verwendung eines Mobiltelefons oder eines
Modems durch einen Computers, um auf Datenabfragen zu
reagieren.</para>
</listitem>
</itemizedlist>
<para>Der Zugriff auf ein Netzwerk über ein
<acronym>PPP</acronym>-Profil kann in folgenden Situationen
verwendet werden:</para>
<itemizedlist>
<listitem>
<para>Den <acronym>LAN</acronym>-Zugriff für ein einzelnes
Bluetooth-Gerät.</para>
</listitem>
<listitem>
<para>Den <acronym>LAN</acronym>-Zugriff für mehrere
Bluetooth-Geräte.</para>
</listitem>
<listitem>
<para>Eine PC-zu-PC-Verbindung unter Verwendung
einer <acronym>PPP</acronym>-Verbindung über eine emulierte
serielle Verbindung.</para>
</listitem>
</itemizedlist>
<para>Diese Profile werden unter &os; durch &man.ppp.8; sowie
&man.rfcomm.pppd.8; implementiert - einem Wrapper, der
<acronym>RFCOMM</acronym> Bluetooth-Verbindungen unter
<acronym>PPP</acronym> nutzbar macht. Bevor ein Profil
verwendet werden kann, muss ein neuer
<acronym>PPP</acronym>-Abschnitt in
<filename>/etc/ppp/ppp.conf</filename> erzeugt werden.
Beispielkonfigurationen zu diesem Thema finden Sie in
&man.rfcomm.pppd.8;.</para>
<para>Das folgende Beispiel verwendet &man.rfcomm.pppd.8;, um
eine <acronym>RFCOMM</acronym>-Verbindung zu einem entfernten
Gerät mit der<literal>BD_ADDR 00:80:37:29:19:a4</literal> auf
dem <acronym>RFCOMM</acronym>-Kanal <literal>DUN</literal>
aufzubauen. Die aktuelle
<acronym>RFCOMM</acronym>-Kanalnummer erhalten Sie vom
entfernten Gerät über <acronym>SDP</acronym>. Es ist auch
möglich, manuell einen <acronym>RFCOMM</acronym>-Kanal
festzulegen. In diesem Fall führt &man.rfcomm.pppd.8; keine
<acronym>SDP</acronym>-Abfrage durch. Verwenden Sie
&man.sdpcontrol.8;, um die <acronym>RFCOMM-Kanäle</acronym>
des entfernten Geräts herauszufinden.</para>
<screen>&prompt.root; <userinput>rfcomm_pppd -a 00:80:37:29:19:a4 -c -C dun -l rfcomm-dialup</userinput></screen>
<para>Der &man.sdpd.8;-Server muss laufen, damit ein Netzzugriff
mit dem <acronym>PPP</acronym> <acronym>LAN</acronym>-Profil
möglich ist. Außerdem muss für den
<acronym>LAN</acronym>-Client ein neuer Eintrag in
<filename>/etc/ppp/ppp.conf</filename> erzeugt werden.
Beispielkonfigurationen zu diesem Thema finden Sie in
&man.rfcomm.pppd.8;. Danach starten Sie den
<acronym>RFCOMM</acronym> <acronym>PPP</acronym>-Server
über eine gültige <acronym>RFCOMM</acronym>-Kanalnummer.
Der <acronym>RFCOMM</acronym> <acronym>PPP</acronym>-Server
bindet dadurch den Bluetooth-<acronym>LAN</acronym>-Dienst an
den lokalen <acronym>SDP</acronym>-Daemon. Das folgende
Beispiel zeigt, wie man den <acronym>RFCOMM</acronym>
<acronym>PPP</acronym>-Server startet.</para>
<screen>&prompt.root; <userinput>rfcomm_pppd -s -C 7 -l rfcomm-server</userinput></screen>
</sect2>
<sect2>
<sect3>
<title>Das Profil <acronym>OBEX</acronym>-Push
(<acronym>OPUSH</acronym>)</title>
@ -3029,10 +3035,10 @@ Success, response: OK, Success (0x20)</screen>
wie der <acronym>OBEX</acronym>-Server gestartet wird:</para>
<screen>&prompt.root; <userinput>obexapp -s -C 10</userinput></screen>
</sect2>
</sect3>
<sect2>
<title>Das Profil Serial-Port</title>
<sect3>
<title>Das Serial-Port Profil (<acronym>SPP</acronym>)</title>
<para>Das <foreignphrase>Serial Port Profile</foreignphrase>
(<acronym>SSP</acronym>) ermöglicht es Bluetooth-Geräten eine
@ -3059,15 +3065,12 @@ rfcomm_sppd[94692]: Starting on /dev/ttyp6...</screen>
serieller Port verwenden werden.</para>
<screen>&prompt.root; <userinput>cu -l ttyp6</userinput></screen>
</sect3>
</sect2>
<sect2>
<title>Problembehandlung</title>
<sect3>
<title>Ein entferntes Gerät kann keine Verbindung
aufbauen</title>
<para>Einige ältere Bluetooth-Geräte unterstützen
keinen Rollentausch. Wenn &os; eine neue Verbindung
akzeptiert, wird versucht, die Rolle zu tauschen, um zum
@ -3080,19 +3083,14 @@ rfcomm_sppd[94692]: Starting on /dev/ttyp6...</screen>
deaktiviert:</para>
<screen>&prompt.root; <userinput>hccontrol -n ubt0hci write_node_role_switch 0</userinput></screen>
</sect3>
<sect3>
<title>Bluetooth-Pakete anzeigen</title>
<para>Verwenden Sie <application>hcidump</application>,
das Sie als Paket oder über den Port
<package>comms/hcidump</package> installieren können.
das als Paket Port <package>comms/hcidump</package>
verfügbar ist, um Bluetooth-Pakete anzuzeigen.
Dieses Programm hat Ähnlichkeiten mit &man.tcpdump.1; und
kann zur Anzeige der Bluetooth-Pakete in einem Terminal,
oder zur Speicherung von Paketen in einer Datei (Dump)
verwendet werden.</para>
</sect3>
</sect2>
</sect1>