Crmgo Blog

Bluetooth in OpenWrt.

Bluetooth in OpenWrt.

Die Funktionsweise des Bluetooth-Adapters wird am Beispiel der Verbindung eines Mobiltelefons mit einem Router über die Bluetooth-Schnittstelle erläutert. Als Telefon verwende ich ein Nokia 6230i, doch ich bin der Ansicht, dass die genaue Telefonmodellbezeichnung keine Rolle spielt und der Verbindungsprozess für alle Geräte identisch ist. Im Konfigurationsphase sind folgende Punkte zu beachten…

Bluetooth in OpenWrt.

Die Funktionsweise des Bluetooth-Adapters wird am Beispiel der Verbindung eines Mobiltelefons mit einem Router über die Bluetooth-Schnittstelle erläutert. Als Telefon verwende ich ein Nokia 6230i, aber ich denke, dass das Modell des Telefons keine Rolle spielt und der Verbindungsprozess für alle Geräte gleich ist.

Bei der Konfiguration müssen folgende Module ausgewählt werden:
Utilities:
<M> bluez-utils
Kernel modules:
Other modules:
<M> kmod-bluetooth
Libraries:
<M> libusb
Filesystem:
<M> libfuse

System starten und Pakete installieren:

root@OpenWrt:/# opkg install kmod-bluetooth bluez-utils Installing kmod-bluetooth (2.6.36.4-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/kmod-bluetooth_2.6.36.4-1_brcm47xx.ipk. Installing kmod-crc16 (2.6.36.4-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/kmod-crc16_2.6.36.4-1_brcm47xx.ipk. Installing kmod-hid (2.6.36.4-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/kmod-hid_2.6.36.4-1_brcm47xx.ipk. Installing kmod-input-core (2.6.36.4-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/kmod-input-core_2.6.36.4-1_brcm47xx.ipk. Installing kmod-rfkill (2.6.36.4-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/kmod-rfkill_2.6.36.4-1_brcm47xx.ipk. Installing bluez-utils (3.36-7) to root... Downloading ftp://ftp:ftp@192.168.0.9/bluez-utils_3.36-7_brcm47xx.ipk. Installing bluez-libs (3.36-3) to root... Downloading ftp://ftp:ftp@192.168.0.9/bluez-libs_3.36-3_brcm47xx.ipk. Installing libpthread (0.9.32-68) to root... Downloading ftp://ftp:ftp@192.168.0.9/libpthread_0.9.32-68_brcm47xx.ipk. Installing dbus (1.2.4.6permissive-2) to root... Downloading ftp://ftp:ftp@192.168.0.9/dbus_1.2.4.6permissive-2_brcm47xx.ipk. Installing libexpat (2.0.1-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/libexpat_2.0.1-1_brcm47xx.ipk. Installing libdbus (1.2.4.6permissive-2) to root... Downloading ftp://ftp:ftp@192.168.0.9/libdbus_1.2.4.6permissive-2_brcm47xx.ipk. Configuring libpthread. Configuring libdbus. Configuring kmod-input-core. Configuring bluez-libs. Configuring libexpat. Configuring dbus. Configuring kmod-crc16. Configuring kmod-hid. Configuring kmod-rfkill. Configuring kmod-bluetooth. Configuring bluez-utils.

root@OpenWrt:/# opkg install libfuse
Installing libfuse (2.8.5-1) to root...
Downloading ftp://ftp:ftp@192.168.0.9/libfuse_2.8.5-1_brcm47xx.ipk.
Installing kmod-fuse (2.6.36.4-1) to root...
Downloading ftp://ftp:ftp@192.168.0.9/kmod-fuse_2.6.36.4-1_brcm47xx.ipk.
Configuring kmod-fuse.
Configuring libfuse.

root@OpenWrt:/# opkg install libusb
Installing libusb (0.1.12-2) to root...
Downloading ftp://ftp:ftp@192.168.0.9/libusb_0.1.12-2_brcm47xx.ipk.
Configuring libusb.

Um auf das Dateisystem des Mobiltelefons zuzugreifen, werden normalerweise die Anwendungen openobex, obexftp und obexfs verwendet. Zum Zeitpunkt der Erstellung dieses Artikels waren diese Anwendungen nicht Teil von OpenWrt. Daher fügen wir sie manuell hinzu.

Das Hinzufügen neuer Pakete zu OpenWrt ist relativ einfach. Dazu erstellt man ein Verzeichnis mit dem Namen des Pakets im Verzeichnis openwrt/package. In diesem neuen Verzeichnis muss eine Makefile erstellt werden. Das Erstellen einer Makefile ist sehr praktisch, wenn man eine ähnliche Vorlage aus dem Verzeichnis openwrt/package als Grundlage nimmt.

Wenn Sie interessiert sind, können Sie die Anwendungen openobex, obexftp und obexfs selbst in OpenWRT integrieren. Oder Sie verwenden meine Versionen aus dem Abschnitt „Herunterladen“.

Nachdem Sie in openwrt/package neue Verzeichnisse erstellt haben, starten Sie make menuconfig und markieren Sie sie für die spätere Kompilierung.

Installieren wir die neuen Pakete:

root@OpenWrt:/# opkg install openobex Installing openobex (1.3-1) to root... Downloading ftp://ftp:ftp@192.168.0.9/openobex_1.3-1_brcm47xx.ipk. Configuring openobex.

root@OpenWrt:/# opkg install obexftp
Installing obexftp (0.22-1) to root...
Downloading ftp://ftp:ftp@192.168.0.9/obexftp_0.22-1_brcm47xx.ipk.
Configuring obexftp.

root@OpenWrt:/# opkg install obexfs
Installing obexfs (0.12-1) to root...
Downloading ftp://ftp:ftp@192.168.0.9/obexfs_0.12-1_brcm47xx.ipk.
Configuring obexfs.

Verbinden Sie den Bluetooth-Adapter und prüfen Sie die Ausgabe von dmesg:

root@OpenWrt:/# dmesg Bluetooth: Core ver 2.15 NET: Registered protocol family 31 Bluetooth: HCI device and connection manager initialized Bluetooth: HCI socket layer initialized Bluetooth: L2CAP ver 2.15 Bluetooth: L2CAP socket layer initialized Bluetooth: SCO (Voice Link) ver 0.6 Bluetooth: SCO socket layer initialized Bluetooth: RFCOMM TTY layer initialized Bluetooth: RFCOMM socket layer initialized Bluetooth: RFCOMM ver 1.11 Bluetooth: BNEP (Ethernet Emulation) ver 1.3 Bluetooth: BNEP filters: protocol multicast Bluetooth: HIDP (Human Interface Emulation) ver 1.2 Bluetooth: HCI UART driver ver 2.2 Bluetooth: HCI H4 protocol initialized Bluetooth: HCI BCSP protocol initialized Bluetooth: Generic Bluetooth USB driver ver 0.6 usbcore: registered new interface driver btusb usb 1-1.4.3: new full speed USB device using ohci_hcd and address 5

Für die Arbeit mit dem Bluetooth-Adapter gibt es eigene Dienstprogramme. Lassen Sie uns einige davon betrachten. Das Dienstprogramm hciconfig ähnelt dem Dienstprogramm ifconfig.

Führen wir es aus:

root@OpenWrt:/# hciconfig 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

Das Gerät hci0 wurde erkannt, das sich im Zustand „down“ befindet. Ähnlich wie bei ifconfig führen wir hciconfig hci0 up aus.

root@OpenWrt:/# hciconfig hci0 up root@OpenWrt:/# hciconfig hci0: Type: USB BD Address: 00:0A:3A:5C:88:60 ACL MTU: 192:8 SCO MTU: 64:8 UP RUNNING RX bytes:340 acl:0 sco:0 events:11 errors:0 TX bytes:38 acl:0 sco:0 commands:11 errors:0

Ein weiteres nützliches Dienstprogramm ist hcitool. Schalten Sie Bluetooth auf dem Telefon ein und führen Sie Folgendes aus:

root@OpenWrt:/# hcitool scan Scanning ... 00:13:FD:80:F9:F5 Nokia6230ai

Nun, da wir die Adresse des Telefons kennen, versuchen wir, auf sein Dateisystem zuzugreifen. Wir verwenden das Dienstprogramm obexfs. Beim Aufruf müssen Sie die Adresse des Telefons und das Verzeichnis angeben, in das das Dateisystem des Mobiltelefons eingehängt wird:

root@OpenWrt:/# obexfs -b00:13:FD:80:F9:F5 /mnt/nokia/

Nach der Ausführung dieses Befehls erscheint auf dem Telefon eine Aufforderung zur Verbindung, und Sie müssen einen PIN-Code eingeben. Nachdem Sie den PIN-Code auf dem Telefon eingegeben haben, müssen Sie denselben auch auf der Router-Seite eingeben.... Wie das genau funktioniert, weiß ich nicht :))

Dieses Problem lässt sich sehr einfach umgehen. Schauen Sie sich den Inhalt des folgenden Verzeichnisses an:

root@OpenWrt:/# ls -l /var/lib/bluetooth/00\:0A\:3A\:5C\:88\:60/ -rw-r--r-- 1 root root 27 Jan 1 00:04 classes -rw-r--r-- 1 root root 26 Jan 1 01:40 config -rw-r--r-- 1 root root 38 Jan 1 00:02 did -rw-r--r-- 1 root root 35 Jan 1 00:02 features -rw-r--r-- 1 root root 42 Jan 1 00:10 lastseen -rw-r--r-- 1 root root 42 Jan 1 01:41 lastused -rw------- 1 root root 55 Jan 1 00:11 linkkeys -rw-r--r-- 1 root root 27 Jan 1 00:02 manufacturers -rw-r--r-- 1 root root 37 Jan 1 00:02 names -rw-r--r-- 1 root root 499 Jan 1 00:02 profiles -rw-r--r-- 1 root root 2658 Jan 1 00:02 sdp

In diesem Verzeichnis befinden sich Systemdateien, die für die Bluetooth-Verbindung verantwortlich sind. Fügen Sie hier eine Datei namens „pincodes“ hinzu, in der Sie die Adresse und den entsprechenden PIN-Code angeben. Bei mir sieht sie wie folgt aus: 00:13:FD:80:F9:F5 1

Sobald Sie diese Datei erstellt haben, wird auf der Router-Seite keine PIN-Code-Eingabe mehr verlangt. Versuchen Sie es erneut:

Hinweis: Dieser Beitrag kann KI-unterstützt erstellt und anschließend redaktionell geprüft worden sein. Verantwortlich: Dmytro Lomaka, Kaltenkirchen.