BLE gatttool无法连接,尽管设备可以通过hcitool lescan被发现

11

我正在使用一个USB蓝牙适配器运行Raspberry Pi。当我使用hcitool时,我可以发现SmartTag设备。但是当我使用gatttool时,无法连接。它显示 "Host is down (112)"。以下是我的命令:

$ sudo hcitool lescan
LE Scan ...
BC:6A:29:AB:DE:2B (unknown)
BC:6A:29:AB:DE:2B SensorTag

在我的Raspberry Pi上检查蓝牙适配器,我得到了以下结果:

$ hcitool dev
Devices:
        hci0    5C:F3:70:60:E6:1B

那么,当我像这样使用gatttool时,我会得到:

$ sudo gatttool -i hci0 -b BC:6A:29:AB:DE:2B -I
[   ][BC:6A:29:AB:DE:2B][LE]>

当我输入“connect”时,我得到了这个结果:

[   ][BC:6A:29:AB:DE:2B][LE]> connect
Connecting... connect error: Host is down (112)
[   ][BC:6A:29:AB:DE:2B][LE]>
我在网上找到一些信息,说"主机已经关闭"意味着蓝牙传感器不在可发现模式下。但就SmartTag而言,这是不正确的,因为我按下了传感器上TI所说的一个按钮(侧面按钮)使其可发现,同时,hcitool lescan也使用同一个按钮来查找设备。此外,还有一个可以从手机上运行的Android应用程序,在按下同一个按钮时可以正常扫描、连接和读取SmartTag传感器。
有人知道问题可能是什么吗? 提前致谢。
1个回答

14

我遇到了同样的问题,这种方法对我有用:

拔掉USB模块并重新启动RPi:

sudo shutdown -r now
编辑: 为了成功安装下列库,你可能需要编辑 /etc/apt/sources.list

nano /etc/apt/sources.list

deb http://archive.raspbian.org/raspbian wheezy main contrib non-free
deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free
否则,您可能会遇到以下错误。
checking for GLIB... no
configure: error: GLib >= 2.28 is required

别忘了更新,这样更改才能生效。

sudo apt-get update

移除Bluez安装并进行更新:

sudo apt-get --purge remove bluez
sudo apt-get update

您可以编辑/etc/apt/sources.list文件,以确保能够安装所需的库:

请确保您已经安装了所需的库:

sudo apt-get install libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev

下载并解压最新的Bluez版本(目前是5.21):

sudo wget https://www.kernel.org/pub/linux/bluetooth/bluez-5.21.tar.xz
sudo tar xvf bluez-5.21.tar.xz

进入Bluez文件夹,进行配置和安装(sudo make这行命令需要一些时间来处理):

cd bluez-5.21
sudo ./configure --disable-systemd
sudo make
sudo make install

关闭树莓派电源,以便您可以插入蓝牙适配器,然后再次打开电源。

sudo shutdown -h now

您可能需要给USB dongle供电:

sudo hciconfig hci0 up

然后你可以再次尝试LESCAN:

sudo hcitool lescan

假设它正常工作,您将能够连接到:

sudo hcitool lecc BC:6A:29:AB:DE:2B
sudo gatttool -b BC:6A:29:AB:DE:2B --interactive

[   ][BC:6A:29:AB:DE:2B][LE]> connect
[CON][BC:6A:29:AB:DE:2B][LE]>

如果显示连接的“[CON]”行需要很长时间,请尝试按下传感器标签上的侧面按钮,使其再次可见。


这是来自以下两个链接信息的混合:

http://mike.saunby.net/2013/04/raspberry-pi-and-ti-cc2541-sensortag.html https://learn.adafruit.com/pibeacon-ibeacon-with-a-raspberry-pi/setting-up-the-pi


7
谢谢您的优秀回答。在我的树莓派上执行“make install”和重启之后,缺少了“gatttool”,所以我不得不执行“sudo cp attrib/gatttool /usr/bin/”,现在可以连接了! - Nikolay Spassov
2
点赞,谢谢。在发表此评论时,bluez-5.30已经存在。只有 'apt-get ...' 和 'make install' 需要sudo。'gatttool ...','wget ...','tar ...','configure ...' 和 'make' 不需要root权限。 - niry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接