1 蓝牙简介
蓝牙是一种支持设备短距离通信的无线电技术,使用 2.4GHz 频段,数据速率为1Mbps 。采用时分复用方案实现全双工传输。
蓝牙技术将设备分为两种,主设备和从设备。
蓝牙主设备特点:主设备是扫描-和发起连接的设备端,也具有输入窗口。在进行蓝牙匹配操作时,用户通过输入端可输入随机的匹配密码来将两个设备匹配。蓝牙手机、安装有蓝牙模块的 PC 等都是主设备。
蓝牙从设备特点:从设备一般不具备输入端。因此从设备在出厂时,在其蓝牙芯片中,固化有一个4位或6位数字的匹配密码。蓝牙耳机等都是从设备。
蓝牙设备的连接过程:
1. 蓝牙主设备发起呼叫,先是查找,找出周围处于可被查找的蓝牙设备,此时从端设备需要处于可被查找状态——广播状态。
2. 主设备找到从设备后,与从蓝牙设备进行配对,此时需要输入从设备的 PIN 码。
3. 配对完成后,从设备会记录主设备的信任信息,此时主设备即可向从设备发起呼叫,根据应用不同,可能是ACL数据链路呼叫或SCO语音链路呼叫,已配对的设备在下次呼叫时,不再需要重新配对。
4. 已配对的设备,做为从端的蓝牙耳机也可以发起建链请求,但做数据通讯的蓝牙模块一般不发起呼叫。
5. 链路建立成功后,主从两端之间即可进行双向的数据通讯。在通信状态下,主端和从端设备都可以发起断链,断开蓝牙链路。
2 安装BlueZ
2.6 之后的内核都提供了蓝牙支持,通常都已经是默认的设置。Linux 官方的蓝牙协议栈是 BlueZ ,所以需要到官网去下载BlueZ
官网链接: http://www.bluez.org/download/ .
github链接: https://github.com/bluez/bluez .
2.1 下载/解压BlueZ
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.60.tar.xz
tar xvf bluez-5.60.tar.xz
2.2 配置环境
进入到bluez目录下,执行./configure文件
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var
图2.1
最后成功创建出makefile,表示配置成功
config.status: creating Makefile
config.status: creating src/bluetoothd.rst
config.status: creating lib/bluez.pc
config.status: creating mesh/bluetooth-meshd.rst
config.status: creating config.h
config.status: executing depfiles commands
config.status: executing libtool commands
图2.2
注: ERROR:执行./configure文件如果报错,根据提示安装对应软件包
1.error: GLib >= 2.28 is required
sudo apt install libglib2.0-dev
2.error: D-Bus >= 1.6 is required
sudo apt install libdbus-1-dev
3.error: libudev >= 172 is required
sudo apt install libudev-dev
4.error: libical is required
sudo apt install libical-dev
5.error: readline header files are required
sudo apt install libreadline-dev
6.error: rst2man is required
sudo apt install python-docutils
sudo which rst2man
2.3 编译和安装
sudo make
sudo make install
3 配置蓝牙
3.1 查看设备
显示连接到USB总线上的设备信息和驱动信息:8801表示驱动加载成功
lsusb
Bus 001 Device 023: ID a69c:8801 aicsemi AIC Wlan
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
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
3.2 查询蓝牙设备状态
UP RUNNING: 设备状态 UP RUNNING 表示蓝牙启动成功
hciconfig -a
hci0: Type: Primary Bus: USB
BD Address: AE:AE:77:AE:EE:77 ACL MTU: 1021:9 SCO MTU: 255:4
UP RUNNING PSCAN ISCAN INQUIRY
RX bytes:145331 acl:0 sco:0 events:3007 errors:0
TX bytes:4758 acl:0 sco:0 commands:78 errors:0
Features: 0xbf 0xee 0xcd 0xfe 0xd8 0x3f 0x7b 0x87
Packet type: DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV3
Link policy: RSWITCH SNIFF
Link mode: SLAVE ACCEPT
Name: 'ubuntu'
Class: 0x3c0000
Service Classes: Rendering, Capturing, Object Transfer, Audio
Device Class: Miscellaneous,
HCI Version: (0xb) Revision: 0x14
LMP Version: (0xb) Subversion: 0x14
Manufacturer: RivieraWaves S.A.S (96)
注: 如果查询的设备状态为DOWN ,可以用指令”sudo hciconfig hci0 up“手动启动一下
4 连接蓝牙设备
连接设备名称为”GGMM_E3“的蓝牙音响
4.1 扫描周围蓝牙设备
hcitool scan指令不会一直打印扫描到的设备信息,所以先用这条命令来看蓝牙设备的MAC信息
hcitool scan
图4.1
4.2 启动交互式命令
进入bluetoothctl命令行
bluetoothctl
图 4.2
4.3 初始化
power on
agent on
default-agent
图4.3
4.4 开启扫描——配对——连接
连接成功的时候这里的[bluetooth]#命令行变为连接设备名称,这里是[GGMM_E3]
scan on
pair FC:58:FA:B1:EA:CF
connect FC:58:FA:B1:EA:CF
图4.4
4.5 退出bluetoothctl
连接之后就可以关闭扫描或者退出bluetoothctl
exit
选择播放速率: 0.5 1.0 1.25 1.5 2.0
对不起,您的浏览器不支持嵌入式视频