需要加載的模組有 bluetooth, btusb, hci_uart, l2cap, rfcomm, sco, bnep, 位於 /lib/modules/`uname-r`/kernel/net/bluetooth 和 /lib/modules/`uname -r`/kernel/driver/bluetooth 裡
$ make ARCH=arm menuconfig [*] Networking support ---> <M> Bluetooth subsystem support ---> --- Bluetooth subsystem support [M] L2CAP protocol support [M] SCO links support (NEW) <M> RFCOMM protocol support [ ] RFCOMM TTY support (NEW) <M> BNEP protocol support (NEW) < > HIDP protocol support (NEW) Bluetooth device drivers ---> <M> HCI USB driver < > HCI SDIO driver <M> HCI UART driver [ ] UART (H4) protocol support (NEW) [ ] BCSP protocol support (NEW) [ ] Atheros AR300x serial support (NEW) [ ] HCILL protocol support (NEW) < > HCI BCM203x USB driver (NEW) < > HCI BPA10x USB driver (NEW) < > HCI BlueFRITZ! USB driver (NEW) < > HCI VHCI (Virtual HCI device) driver (NEW) < > Marvell Bluetooth driver support (NEW) < > Atheros firmware download driver (NEW)
建議:
[root@fedora14 ~]# lsmod Module Size Used by rfcomm 54383 4 sco 13825 2 bnep 11942 2 l2cap 43256 16 rfcomm,bnep btusb 12562 2 bluetooth 73201 9 rfcomm,sco,bnep,l2cap,btusb rfkill 13580 2 bluetooth ...
#!/bin/bash #name: bt_in.sh #author:young #date: 2007-01-16 #decription: insmod for bt modules insmod /lib/modules/`uname -r`/kernel/net/bluetooth/bluetooth.ko insmod /lib/modules/`uname -r`/kernel/net/bluetooth/l2cap.ko insmod /lib/modules/`uname -r`/kernel/net/bluetooth/sco.ko insmod /lib/modules/`uname -r`/kernel/net/bluetooth/bnep/bnep.ko insmod /lib/modules/`uname -r`/kernel/net/bluetooth/rfcomm/rfcomm.ko insmod /lib/modules/`uname -r`/kernel/drivers/bluetooth/btusb.ko insmod /lib/modules/`uname -r`/kernel/drivers/bluetooth/hci_uart.ko lsmod | grep bluetooth
#!/bin/bash #name: bt_rm.sh #author:young #date: 2007-01-16 #description: rmmod bt modules from kernel rmmod hci_uart rmmod btusb rmmod bnep rmmod sco rmmod rfcomm rmmod l2cap rmmod bluetooth lsmod | grep bluetooth
Bluez is the Official Linux Bluetooth protocol stack (http://www.bluez.org/) and you need to install it to do any further action with Bluetooth. This stack is available as standard Debian package with the name bluez-utils so to install it simply type:
debarm:~# apt-get update ... debarm:~# apt-get install bluez ...
hciconfig: 顯示本機藍芽裝置
[root@fedora14 ~]# hciconfig hci0: Type: BR/EDR Bus: USB BD Address: 00:02:72:21:F7:2C ACL MTU: 1021:8 SCO MTU: 64:1 UP RUNNING PSCAN RX bytes:766 acl:0 sco:0 events:34 errors:0 TX bytes:1347 acl:0 sco:0 commands:34 errors:0 [root@fedora14 ~]#
hciconfig -a: 顯示本機藍芽裝置詳細資訊
[root@fedora14 ~]# hciconfig -a hci0: Type: BR/EDR Bus: USB BD Address: 00:02:72:21:F7:2C ACL MTU: 1021:8 SCO MTU: 64:1 UP RUNNING PSCAN RX bytes:766 acl:0 sco:0 events:34 errors:0 TX bytes:1347 acl:0 sco:0 commands:34 errors:0 Features: 0xbf 0xfe 0xcf 0xfe 0xdb 0xff 0x7b 0x87 Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3 Link policy: RSWITCH HOLD SNIFF PARK Link mode: SLAVE ACCEPT Name: 'fedora14-0' Class: 0x480100 Service Classes: Capturing, Telephony Device Class: Computer, Uncategorized HCI Version: 4.0 (0x6) Revision: 0x1000 LMP Version: 4.0 (0x6) Subversion: 0x220e Manufacturer: Broadcom Corporation (15) [root@fedora14 ~]#
hciconfig hci0 up/down: 啟用 / 關閉第一個藍芽裝置 ( hci0 )
[root@fedora14 ~]# hciconfig hci0 down [root@fedora14 ~]# hciconfig hci0: Type: BR/EDR Bus: USB BD Address: 00:02:72:21:F7:2C ACL MTU: 1021:8 SCO MTU: 64:1 DOWN RX bytes:1617 acl:0 sco:0 events:44 errors:0 TX bytes:1364 acl:0 sco:0 commands:39 errors:0 [root@fedora14 ~]# hciconfig hci0 up [root@fedora14 ~]# hciconfig hci0: Type: BR/EDR Bus: USB BD Address: 00:02:72:21:F7:2C ACL MTU: 1021:8 SCO MTU: 64:1 UP RUNNING PSCAN RX bytes:2365 acl:0 sco:0 events:76 errors:0 TX bytes:2458 acl:0 sco:0 commands:70 errors:0 [root@fedora14 ~]#
hcitool dev: 顯示本機所有藍芽裝置address
[root@fedora14 ~]# hcitool dev Devices: hci0 00:02:72:21:F7:2C [root@fedora14 ~]#
hcitool scan: 搜尋周邊欄芽裝置
[root@fedora14 ~]# hcitool scan Scanning ... E0:06:E6:B6:5F:40 JIMMY-THINK 00:08:CA:FA:E8:27 Bluetooth USB Host Controller E0:B9:A5:68:D3:AC JOHNSONWANG-NB 00:1E:37:65:16:AB INGRASYS-1A59C6 00:02:72:C0:03:E8 ANDYWU-XP [root@fedora14 ~]#
1. 先得取此 bluetooth 的 VID/PID
[root@fedora14 ~]# lsusb Bus 002 Device 004: ID 0a5c:21e8 Broadcom Corp. Bus 002 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub Bus 002 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub [root@fedora14 ~]#
在此 0a5c:21e8 Broadcom Corp. 即為我們的 VID/PID(0a5c/21e8)
2. 將此VID/PID加入 btusb 內
改 kernel source, {src}/drivers/bluetooth/btusb.c
static struct usb_device_id btusb_table[] = { /* Generic Bluetooth USB device */ { USB_DEVICE_INFO(0xe0, 0x01, 0x01) }, . . . /* Broadcom BCM20720A0 */ { USB_DEVICE(0x0489, 0xe042) }, { USB_DEVICE(0x0a5c, 0x21e3) }, { USB_DEVICE(0x0a5c, 0x21e6) }, { USB_DEVICE(0x0a5c, 0x21e8) }, { } /* Terminating entry */ };
3. make modules 並複制到系統 modules 目錄內
[root@fedora14 linux-2.6.35.6]# make modules CHK include/linux/version.h CHK include/generated/utsrelease.h CALL scripts/checksyscalls.sh CC [M] drivers/bluetooth/btusb.o Building modules, stage 2. MODPOST 2233 modules WARNING: modpost: Found 7 section mismatch(es). To see full details build your kernel with: 'make CONFIG_DEBUG_SECTION_MISMATCH=y' CC drivers/bluetooth/btusb.mod.o LD [M] drivers/bluetooth/btusb.ko [root@fedora14 linux-2.6.35.6]# cp drivers/bluetooth/btusb.ko /lib/modules/2.6.35.6/kernel/drivers/bluetooth/btusb.ko cp: overwrite `/lib/modules/2.6.35.6/kernel/drivers/bluetooth/btusb.ko'? y [root@fedora14 linux-2.6.35.6]#
4. OK~