可以用hcitool而不是gatttool连接到BLE设备吗?

时间:2016-10-25 19:41:54

标签: linux qt bluetooth raspberry-pi bluez

我正尝试在QT应用程序中从我的PC和Raspberry Pi3连接到蓝牙低功耗设备,但在尝试连接时出现此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和Raspberry上的一些结果。 PC上的bluez版本是5.37,覆盆子5.23。

有什么想法吗? :(

1 个答案:

答案 0 :(得分: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