使用者工具

網站工具


os:linux:linux下使用_bluetooth_usb_dongle

Linux 下使用 Bluetooth USB Dongle

1 加載藍牙模組

需要加載的模組有 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)

建議:

  1. 可以寫 bt_ins.sh 與 bt_rm.sh 兩個腳本, 進行藍牙模組的添加與刪除
  2. 模組是有相依性的, 請注意順序
    [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
    ...
  3. 因 bluetooth.ko 須 rfkill.ko, 所必要時先 insmod rfkill.ko
#!/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

2. Install Bluez

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
...

3. 常用指命

  • hciconfig: 顯示本機藍芽裝置
  • hciconfig -a: 顯示本機藍芽裝置詳細資訊
  • hciconfig hci0 up/down: 啟用 / 關閉第一個藍芽裝置 ( hci0 )
  • hcitool dev: 顯示本機所有藍芽裝置address
  • hcitool scan: 搜尋周邊欄芽裝置

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 ~]#

PS. 新的 bluetooth(系統不認得的)

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~

os/linux/linux下使用_bluetooth_usb_dongle.txt · 上一次變更: 2019/11/16 08:12 (外部編輯)