壹.Linux對於藍牙的支持
在Linux 2.6內核已經實現如下協議。串口形式藍牙設備驅動(HCI UART driver)
USB藍牙棒驅動(HCI USB driver)
內核也實現了L2CAP,RFCOMM串口接口,以及SCO鏈路支持.
另外內核也直接支持BNEP(Bluetooth Network Encapsulation Protocol ),即把藍牙網絡當成壹個無線局域網操作。
Linux也帶了藍牙輸入設備的相關支持。
需要打開 HIDP 和HID2HCI兩個選項都要打開.
DUND 把藍牙網絡當成壹個撥號網絡來處理。
2.藍牙協議棧
在實現了L2CAP後,也需要壹個藍牙協議棧處理。它起什麽作用呢? 我的理解是內核封裝到RFCOMM的層次,即只負責的藍牙的包的封裝與收發。至於包收上來,在藍牙的四個階段,如何應用的狀態影響,以及如何響應正確的包,這壹些事情由藍牙協議棧來完成的。
在Linux實現藍牙功能有多個互相競爭的藍牙協議棧,但是影響最大是bluez.幾乎已經成為Linux下的標準協議棧的代名詞。
還有壹個協議棧是Affix ?不過用的人比較少
在應用程序級,它主要由兩部分組成,壹個是bluez的應用程序庫,主要負責與內核的bluez通信,和bluez-util工具。即完成藍牙四階段處理的壹些命令行工具。
3.藍牙的概念。
配對由壹方發起即可,如果本設備需要被其它設備搜索,需要有被發現功能。
二.Linux關於藍牙命令
-------------------------------------------------
在Linux使用藍牙最方便是使用bluez-util自帶向個命令來測試。
我們這裏采用市面最容易找到的藍牙棒來做物理層設備與手機進行通訊測試。把藍牙棒插LINUX下的USB口後,在dmesg我們會看到提示
表示USB藍牙棒已經被識別了。如果
操作系統自帶HCI工具主要來自bluez-util.
/usr/sbin/hciattach?:?attach serial devices via UART HCI to BlueZ stack
/usr/sbin/hcid :Bluetooth Host Controller Interface Daemon
/usr/sbin/hciemu :HCI emulator
/usr/sbin/hciconfig?:?configure Bluetooth devices
/usr/sbin/hcidump? :?Parse HCI data
/usr/bin/hcitool? :?configure Bluetooth connections
/usr/bin/sdptool :?control and interrogate SDP servers
hciconfig類似於 hciconfig.類似的操作可以參見官網(這裏不方便留鏈接,自己去搜索下就可以了)
檢測USB設備,lsusb
2.查看hci設備,hciconfig
激活設備
hciconfig hci0 up
3.修改藍牙配置文件
藍牙采用/etc/bluetooth/
hcid.conf ?rfcomm.conf
其中hcid.conf有關配對信息。其中security user;表示每次配對詢問用戶對方PIN,而auto則直接采用passkey中的PIN碼。
4.重啟藍牙服務
如果修改了藍牙配置後,需要重啟藍牙服務
service bluetooth stop
service bluetooth start
5.掃描設備
6.增加自動配對設置
修改 /etc/bluetooth/rfcomm.conf
增加掃描藍牙地址
7.創建設備結點(只合適於第壹次)
rfcomm create dev #它將創建於/dev/rfcomm0 設備結點
它等同於如下命令系列
mknod /dev/rfcomm0 c 216 1
chmod 666 /dev/rfcomm0
rfcomm bind /dev/rfcomm0 00:21:19:A4:E0:F1-1
8.增加SDP消息信息
為了減少麻煩,把所有支持的藍牙服務都加上.
sdptool add --channel=1 DID SP DUN LAN FAX OPUSH FTP HS HF SAP NAP GN PANU HID CIP CTP A2SRC A2SNK SYNCML NOKID PCSUITE SR1
9.增加藍牙串口綁定
rfcomm bind /dev/rfcomm0 00:21:19:A4:E0:F1 1
#rfcomm bind /dev/rfcomm0 藍牙設備地址 ?通道,這個命令可選
10.解除藍牙綁定
格式:rfcomm unbind /dev/rfcomm0 藍牙設備地址 ? 通道
11.聯接藍牙設備
hcitool cc 00:21:19:A4:E0:F1
三.關於藍牙配置文件
-------------------------------------------
藍牙的配置文件主要是 /etc/bluetooth目錄下的hcid.conf和rfcomm.conf.
這裏的security 是表示配對的認證模式,user表示由用戶輸入密碼。這個需要在後面用
pin_helper 指明用哪壹個程序輸入密碼,這程序可以是圖形界面程序,或者是字符界面程序。
常見的pin_helper有
/usr/bin/bluez-pin : bluez自帶的pin輸入界面
kbluepin
passkey 配置項指明請求聯接的設備的pin碼。當采用auto模式時,將采用這個密碼來聯接.