我使用以下配置从源代码安装了bluez-5.15:
$ ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc \
--localstatedir=/var --libexecdir=/lib --disable-systemd
然后,我不得不手动将gatttool复制到/usr/local/bin目录中
$ sudo cp attrib/gatttool /usr/local/bin/
我重新启动了Raspberry Pi,并尝试了以下操作以连接到我的BLE设备:
$ sudo hciconfig hci0 up
$ sudo hcitool lescan
LE Scan ...
EA:FB:B5:CE:B0:13 DfuTarg
$ sudo hcitool lewladd EA:FB:B5:CE:B0:13
$ sudo hcitool lecc EA:FB:B5:CE:B0:13
Could not create connection: Input/output error
因此,我尝试与gatttool连接:
$ gatttool -b EA:FB:B5:CE:B0:13 --interactive
[EA:FB:B5:CE:B0:13][LE]> connect
Attempting to connect to EA:FB:B5:CE:B0:13
Error: connect error: Device or resource busy (16)
[EA:FB:B5:CE:B0:13][LE]>
我在这里缺少什么-这是配置问题吗?错误是什么意思?
最佳答案
首先,我与一位同事讨论了我的配置,对于Raspbian(或更具体地说,是Debian),他推荐了以下配置设置:
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var --enable-library --with-systemdsystemunitdir=/lib/systemd/system --with-systemduserunitdir=/usr/lib/systemd
之后,经过进一步检查,这就是我如何成功连接的方法。因此,发生的事情是我尝试连接的设备(基于NRF的BLE设备)要求将LE地址标志设置为“随机”。见下文:
gatttool -t random -b EA:FB:B5:CE:B0:13 -I
然后结果:
[EA:FB:B5:CE:B0:13][LE]> connect
Attempting to connect to EA:FB:B5:CE:B0:13
Connection successful
[EA:FB:B5:CE:B0:13][LE]> characteristics
handle: 0x0002, char properties: 0x0a, char value handle: 0x0003, uuid: 00002a00
-0000-1000-8000-00805f9b34fb
晕!另外,可能需要将安全级别设置为低于高级别:
[EA:FB:B5:CE:B0:13][LE]> sec-level medium