使用者工具

網站工具


os:linux:linux下使用_bluetooth_usb_dongle

差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

os:linux:linux下使用_bluetooth_usb_dongle [2013/06/07 08:26] (目前版本)
行 1: 行 1:
 +====== 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 裡
 +<​code>​
 +$ 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)
 +</​code>​
 +     
 +建議:
 +  - 可以寫 bt_ins.sh 與 bt_rm.sh 兩個腳本,​ 進行藍牙模組的添加與刪除
 +  - 模組是有相依性的,​ 請注意順序<​code>​
 +[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
 +...
 +</​code>​
 +  - 因 bluetooth.ko 須 rfkill.ko, 所必要時先 insmod rfkill.ko
 +
 +<code bash>
 +#!/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
 +</​code>​
 +<code bash>
 +#!/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
 +</​code>​
 +
 +===== 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:
 +<​code>​
 +debarm:~# apt-get update
 +...
 +debarm:~# apt-get install bluez
 +...
 +</​code>​
 +
 +===== 3. 常用指命 =====
 +
 +  * hciconfig: 顯示本機藍芽裝置
 +  * hciconfig -a: 顯示本機藍芽裝置詳細資訊
 +  * hciconfig hci0 up/down: 啟用 / 關閉第一個藍芽裝置 ( hci0 )
 +  * hcitool dev: 顯示本機所有藍芽裝置address
 +  * hcitool scan: 搜尋周邊欄芽裝置
 +
 +**hciconfig:​ 顯示本機藍芽裝置**
 +<​code>​
 +[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 ~]#
 +</​code>​
 +
 +**hciconfig -a: 顯示本機藍芽裝置詳細資訊**
 +<​code>​
 +[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 ~]#
 +</​code>​
 +
 +**hciconfig hci0 up/down: 啟用 / 關閉第一個藍芽裝置 ( hci0 )**
 +<​code>​
 +[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 ~]#
 +</​code>​
 +
 +**hcitool dev: 顯示本機所有藍芽裝置address**
 +<​code>​
 +[root@fedora14 ~]# hcitool dev
 +Devices:
 +        hci0    00:​02:​72:​21:​F7:​2C
 +[root@fedora14 ~]#
 +</​code>​
 +
 +**hcitool scan: 搜尋周邊欄芽裝置**
 +<​code>​
 +[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 ~]#
 +</​code>​
 +===== PS. 新的 bluetooth(系統不認得的) =====
 +
 +**1. 先得取此 bluetooth 的 VID/PID**
 +<​code>​
 +[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 ~]#
 +</​code>​
 +在此 0a5c:21e8 Broadcom Corp. 即為我們的 VID/​PID(0a5c/​21e8)
 +
 +**2. 將此VID/​PID加入 btusb 內**
 +
 +改 kernel source, {src}/​drivers/​bluetooth/​btusb.c
 +<code 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 */
 +};
 +</​code>​
 +
 +**3. make modules 並複制到系統 modules 目錄內**
 +<​code>​
 +[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]#​
 +</​code>​
 +
 +**4. OK~**
os/linux/linux下使用_bluetooth_usb_dongle.txt · 上一次變更: 2013/06/07 08:26 (外部編輯)