可以使用hcitool连接到BLE设备但无法使用gatttool连接?

4

我正试图在我的电脑和树莓派3上,在QT应用中连接到一个低功耗蓝牙设备,但是当我尝试连接时,遇到了这个QT错误:

qt.bluetooth.bluez: Unknown l2cp socket error:  QBluetoothSocket::UnknownSocketError "Transport endpoint is not connected"
qt.bluetooth.bluez: void QBluetoothSocketPrivate::_q_readNotify() 14 error: -1 "Resource temporarily unavailable"
qt.bluetooth.bluez: Unknown l2cp socket error:  QBluetoothSocket::UnknownSocketError "Resource temporarily unavailable"

我认为问题不在QT上,而是蓝牙模块bluez出了问题。我发现Linux可以通过以下方式找到该设备:

sudo hcitool lescan

它可以通过以下方式进行连接:

sudo hcitool lecc <address>

好的,问题是,一旦我尝试使用gatttool(这必须是QT正在尝试做的事情的等效品),我会得到以下内容:

pi@user:~$ sudo gatttool -I 
[                 ][LE]> connect <address>
Attempting to connect to <address>
Error: connect error: Transport endpoint is not connected (107)
[<address>][LE]> 

在PC和树莓派上的结果是相同的。PC上的bluez版本为5.37,树莓派上的版本为5.23。

有什么想法? :(


这个链接会对你有所帮助:https://dev59.com/oWUo5IYBdhLWcg3w7jEq。根据帖子,你需要使用gatttool -b <address> -I。 - aksonlyaks
有点晚了,但还是回复一下……每次更新bluez/蓝牙内核时,都会破坏其他东西。我相信当你使用gatttool时,内核会参与连接并执行许多其他操作,但当你使用hcitool时,它只执行一个hci命令。 - mw.
1个回答

0
使用Gatttool:
尝试使用类型为random,如果没有问题,最有可能它会起作用。
sudo gatttool -I -t random

您可以在单个命令中绑定到蓝牙地址。

sudo gatttool -I -t random -b <mac address>

使用Hcitool:

sudo hcitool lecc --random <mac address>

你可以在执行时,在另一个终端中查看详细的HCI嗅探日志。
sudo hcidump -X

谢谢建议。但是你有连接BLE设备的hcitool的理想步骤吗?这样我就可以简单地按照这些步骤进行操作,如果出现问题,我需要进行调试,但步骤是理想的,所以不应该在步骤上感到困惑。 - chaitanya sonagara

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