bluez-tools bt-adapter -d 需要在下次使用前重置 USB 加密狗
bluez-tools bt-adapter -d requires usb dongle reset before next use
我正在编写一个 BLE 应用程序 read/write 到外围特性,并以 bluez-tools 为例。其中一项要求是发现附近的 BLE 设备,如果此过程适用于每次应用程序启动,那将是首选。
然而,在第一次使用 bt-adapter -d 之后,像这样
$ bt-adapter -d
Searching...
[69:F6:C6:1E:2F:B2]
Name: 69E90E1E
Alias: 69E90E1E
Address: 69:F6:C6:1E:2F:B2
Icon: (null)
Class: 0x0
LegacyPairing: 0
Paired: 0
RSSI: -63
^C
$
然后第二次我没有得到任何结果。
$ bt-adapter -d
Searching...
^C
$
同时 hcitool lescan 成功找到外围设备。
如果我拔下并重新插入我的蓝牙加密狗,我会收到此错误:
$ bt-adapter -d
Searching...
Error: GDBus.Error:org.bluez.Error.NotReady: Resource Not Ready
$
然后在我重置 hci0
$ sudo hciconfig hci0 down
$ sudo hciconfig hci0 up
发现又起作用了。
如何让 bt-adapter -d 正常工作而无需在每次应用程序启动后重置 ble dongle?
我在 mac 和 Ubuntu 15.10
上使用 Parallels 11
不使用 ctrl + c
关闭它
您使用它强制停止扫描,这会使适配器处于不良状态。您应该允许扫描自行停止,停止前的时间等是在扫描参数中定义的内容。对于设备发现,我会使用 btmgmt
和 GATT 相关功能 gatttool
或 btgatt-client
.
现在我对 bluez 进行了更多调查,我了解到它将之前发现的设备保留在缓存中,因此不会在 ObjectManager 上调用 InterfacesAdded 信号。
我遵循了 this 示例,该示例在 StartDiscovery 之前使用 g_dbus_object_manager_get_objects 检查 bluez 是否已缓存设备。
我正在编写一个 BLE 应用程序 read/write 到外围特性,并以 bluez-tools 为例。其中一项要求是发现附近的 BLE 设备,如果此过程适用于每次应用程序启动,那将是首选。
然而,在第一次使用 bt-adapter -d 之后,像这样
$ bt-adapter -d
Searching...
[69:F6:C6:1E:2F:B2]
Name: 69E90E1E
Alias: 69E90E1E
Address: 69:F6:C6:1E:2F:B2
Icon: (null)
Class: 0x0
LegacyPairing: 0
Paired: 0
RSSI: -63
^C
$
然后第二次我没有得到任何结果。
$ bt-adapter -d
Searching...
^C
$
同时 hcitool lescan 成功找到外围设备。
如果我拔下并重新插入我的蓝牙加密狗,我会收到此错误:
$ bt-adapter -d
Searching...
Error: GDBus.Error:org.bluez.Error.NotReady: Resource Not Ready
$
然后在我重置 hci0
$ sudo hciconfig hci0 down
$ sudo hciconfig hci0 up
发现又起作用了。
如何让 bt-adapter -d 正常工作而无需在每次应用程序启动后重置 ble dongle?
我在 mac 和 Ubuntu 15.10
上使用 Parallels 11不使用 ctrl + c
您使用它强制停止扫描,这会使适配器处于不良状态。您应该允许扫描自行停止,停止前的时间等是在扫描参数中定义的内容。对于设备发现,我会使用 btmgmt
和 GATT 相关功能 gatttool
或 btgatt-client
.
现在我对 bluez 进行了更多调查,我了解到它将之前发现的设备保留在缓存中,因此不会在 ObjectManager 上调用 InterfacesAdded 信号。
我遵循了 this 示例,该示例在 StartDiscovery 之前使用 g_dbus_object_manager_get_objects 检查 bluez 是否已缓存设备。