Gatttool和Bluepy断开连接,在蓝牙CTCTL中没有问题



当前使用OH1心率传感器(tiny.cc/mom03y)

我希望使用Bluepy订阅HR通知。我的通知工作正常,但是OH1设备在Bluepy和Gatttool(远程用户终止)中大约20-30秒后断开连接,但在BluetoothCtl中却没有。

寻找某个原因是为什么使用Bluez 5.50和Bluepy 1.30在Rasbian 4.14上使用Blueepy或Gatttool,Code和Hcidump在BlueToothCtl中保持活跃的原因。

Bluepy


#packet count
packets = 0
class hrCallback(btle.DefaultDelegate):
    def __init__(self):
        btle.DefaultDelegate.__init__(self)
    def handleNotification(self, cHandle, data):
        global packets 
        packets += 1
        print("packet: %s Handle: %s HR (bpm): %s " % (packets, cHandle, data[1]))
#connect to OH1
mac = "a0:9e:1a:4f:ef:8b"
oh1 = btle.Peripheral( mac )
oh1.setDelegate( hrCallback() )
#start hr notification
oh1.writeCharacteristic(38, b"x01x00", True)
#listen for notifications
while True:
    try:
        if oh1.waitForNotifications(1.0):
            continue
    except btle.BTLEDisconnectError:
            pass

hcidump

> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Parameters (0x08|0x000b) ncmd 1
    status 0x00
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Enable (0x08|0x000c) ncmd 1
    status 0x00
> HCI Event: Command Complete (0x0e) plen 4
    LE Set Scan Enable (0x08|0x000c) ncmd 1
    status 0x00
> HCI Event: Command Status (0x0f) plen 4
    LE Create Connection (0x08|0x000d) status 0x00 ncmd 1
> HCI Event: Command Status (0x0f) plen 4
    LE Read Remote Used Features (0x08|0x0016) status 0x00 ncmd 1
> HCI Event: Disconn Complete (0x05) plen 4
    status 0x00 handle 64 reason 0x13
    Reason: Remote User Terminated Connection

您正在使用哪个版本的Bluez?弃用了几种工具(例如Gatttool,Hcitool,Hciconfig),并由BluetoothCtl和BTMGMT取代,Bluez团队的建议是使用新工具。请查看以下链接: -

弃用的Bluez工具

新工具和旧工具之间的区别在于,旧工具能够直接与内核接口,而新工具通过与D-Bus接口进行操作。

因此,建议始终使用bluetoothctl,因为不保留旧工具,这很可能是为什么您会看到问题的原因。

相关内容

  • 没有找到相关文章

最新更新