藍牙dongle即藍牙適配器,一般為USB接口,通過USB連接到PC等設備。連接dongle后,PC即可使用驅動程序控制dongle連接其它藍牙設備。本文主要介紹在Ubuntu系統中安裝BlueZ的方法及藍牙的使用。
01
獲取BlueZ
BlueZ是Linux系統的官方藍牙協議棧,提供對核心藍牙層和協議的支持。
當前的BlueZ由許多獨立的模塊組成:
藍牙內核子系統
L2CAP和SCO音頻內核層
RFCOMM,BNEP,CMTP和HIDP內核實現
HCI?UART,USB,PCMCIA和虛擬設備驅動
通用藍牙以及SDP庫以及守護進程
配置和測試程序
協議解碼及分析工具
BlueZ軟件包可以直接在官網獲取,BlueZ源碼可以在Git倉庫獲取。
BlueZ網站:
http://www.bluez.org/
Git倉庫:
https://git.kernel.org/pub/scm/bluetooth/bluez.git
02
編譯安裝
解壓軟件包
在BlueZ網站下載的軟件包為.tar.xz后綴的壓縮文件,可以通過tar Jxvf命令進行解壓。
tar Jxvf bluez-5.54.tar.xz
????-J?????? --處理xz格式的壓縮文件
????-x?????? --從壓縮包中提取文件
????-v?????? --打印處理信息
????-f?????? --使用壓縮文件作為輸入
解壓后可以查看軟件包目錄下的README文件了解BlueZ軟件包的使用方法。
安裝依賴庫
編譯BlueZ需要以下軟件包:
????-GCC編譯器
????-GLib庫
????-D-Bus庫
????-udev庫(可選)
????-readline(命令行客戶端)
在基于debian的系統中,可以通過以下命令安裝上述庫。
sudo apt-get build-dep bluez
安裝時提示以下信息表示缺少源碼鏈接。
Reading package lists... Done
E: You must put some 'source' URIs in your sources.list
可以在UI界面中打開“Software & Updates”。勾選“Source code”,然后點擊“Close”。
在彈出窗口中點擊“Reload”,重新加載軟件列表。
更新完成后再次執行安裝命令即可。
也可以直接修改/etc/apt/sources.list文件,在文件中添加deb-src開頭的軟件源。
配置安裝目錄
解壓軟件包后進入軟件包目錄,通過configure文件配置安裝目錄。
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var
????--prefix=/usr????????????????將/usr設為默認目錄
????--mandir=/usr/share/man????????設置文檔目錄
????--sysconfdir=/etc? ? ? ? ?設置只讀數據目錄
????--localstatedir=/var??????設置可編輯數據目錄
編譯及安裝
設置完成后通過make和make install命令進行編譯和安裝。
make && sudo make install
安裝過程會創建/usr/libexec/bluetooth目錄,藍牙程序會存放至該目錄中。
安裝完成后系統會直接啟動藍牙進程。
ps aux | grep bluetooth
查看藍牙進程信息。
03
使用dongle
選擇“Setting”,進入“Bluetooth”界面,系統中沒有藍牙設備時,會提示插入適配器以使用藍牙功能。
此時接入藍牙適配器將會自動開始掃描,找到待連接的設備后點擊連接即可。
查看USB設備
lsusb
查看接入的USB設備,打印信息如下:
Bus 002 Device 007: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
查看無線設備
rfkill list
查看可用的無線設備,打印信息如下:
3: hci0: Bluetooth
?????? Soft blocked: no
?????? Hard blocked: no
如果藍牙設備顯示為blocked,則需要先啟用藍牙設備。
3: hci0: Bluetooth
?????? Soft blocked: yes
?????? Hard blocked: no
rfkill unblock [identifier]
啟用藍牙設備,identifier為設備的標識,此處為3。
配置HCI設備
hciconfig為HCI設備配置程序,直接發送hciconfig命令可以查看hci設備的信息。
hciconfig -a
查看HCI設備的詳細信息。
hciconfig hciX up
啟用hciX(hci0, hci1, ...),需要管理員權限。
hciconfig hciX down
關閉hciX(hci0, hci1, ...),需要管理員權限。
參考素材:
BlueZ網站
http://www.bluez.org/about/
ARM平臺上藍牙協議棧Bluez的移植使用和配置
https://blog.csdn.net/gatieme/article/details/48751743
https://blog.csdn.net/colorant/article/details/2590654