蓝牙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