Crmgo Blog

Bluetooth v OpenWrt.

Bluetooth v OpenWrt.

Práci Bluetooth adaptéru si ukážeme na příkladu připojení mobilního telefonu k routeru přes Bluetooth rozhraní. Jako telefon použiji Nokia 6230i, ale domnívám se, že konkrétní model telefonu nemá žádný význam a proces připojení je pro všechny stejný. V fázi konfigurace je třeba označit následující…

Bluetooth v OpenWrt.

Práci Bluetooth adaptéru si ukážeme na příkladu připojení mobilního telefonu k routeru přes Bluetooth rozhraní. Jako telefon použiji Nokia 6230i, ale domnívám se, že model telefonu nemá žádný význam a proces připojení je pro všechny stejný.

Při konfiguraci je třeba zaškrtnout následující moduly:
Utilities:
<M> bluez-utils
Kernel modules:
Other modules:
<M> kmod-bluetooth
Libraries:
<M> libusb
Filesystem:
<M> libfuse

Nahrajte systém a nainstalujte balíčky:

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.

Pro přístup k souborovému systému mobilního telefonu se obvykle používají aplikace openobex, obexftp a obexfs. V době psaní tohoto článku tyto aplikace nebyly součástí OpenWrt. Přidáme je tedy ručně.

Přidávání nových balíčků do OpenWrt je poměrně jednoduché. Je třeba vytvořit adresář s názvem balíčku v adresáři openwrt/package. V novém adresáři je nutné vytvořit soubor Makefile. Vytvoření Makefile je velmi pohodlné, pokud jako základ použijete podobný soubor z adresáře openwrt/package.

Pokud vás to zajímá, můžete si sami přidat aplikace openopbex, obexftp a obexfs do sestavy OpenWrt. Nebo si stáhněte mé verze z sekce „Stáhnout“.

Po vytvoření nových adresářů v openwrt/package spustíme make menuconfig a označíme je pro následné sestavení.

Doinstalujeme nové balíčky:

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.

Připojíme Bluetooth adaptér a podíváme se na výstup 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

Pro práci s Bluetooth adaptérem existují vlastní utility. Podívejme se na některé z nich. Utility hciconfig je podobná utilitě ifconfig.

Spustíme ji:

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

Zjištěno zařízení hci0, které je ve stavu down. Podobně jako u ifconfig provedeme hciconfig hci0 up.

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

Další užitečnou utilitou je hcitool. Zapneme Bluetooth na telefonu a provedeme:

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

Nyní, když známe adresu telefonu, zkusme získat přístup k jeho souborovému systému. Použijeme utilitu obexfs. Při volání je třeba zadat adresu telefonu a adresář, kam bude připojena souborová systém mobilního telefonu:

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

Po provedení tohoto příkazu se na telefonu zobrazí výzva k připojení a bude nutné zadat PIN kód. Po zadání PIN kódu na telefonu je třeba zadat stejný kód i na straně routeru... Jak to udělat, nevím )))

Tento problém lze velmi snadno obejít. Podívejme se na obsah následujícího adresáře:

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

Obsahuje systémové soubory odpovědné za Bluetooth připojení. Přidáme sem soubor pincodes, ve kterém uvedeme adresu a odpovídající PIN kód. U mě vypadá následovně: 00:13:FD:80:F9:F5 1

Po vytvoření tohoto souboru již nebude na straně routeru vyžadován PIN kód. Zkusíme to znovu:

Poznámka: příspěvek mohl vzniknout s pomocí AI a lidskou redakcí. Odpovědný: Dmytro Lomaka, Kaltenkirchen.