bluez-tools bt-adapter -d在下次使用之前需要重置usb加密狗

时间:2016-01-08 10:47:18

标签: ubuntu bluez parallels bluetooth-lowenergy

我正在编写一个BLE应用程序来读取/写入外围特征,并使用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无需重置加密狗?

我在使用Ubuntu 15.10的Mac上使用Parallels 11

2 个答案:

答案 0 :(得分:0)

不用ctrl + c

关闭它

您使用它强制扫描停止,这使适配器处于错误状态。您应该允许扫描自行停止,直到它停止的时间,这是扫描参数中定义的内容。要发现设备,我会使用btmgmt和GATT相关功能gatttoolbtgatt-client

答案 1 :(得分:0)

现在我已经更多地研究了bluez,我知道它将先前发现的设备保存在缓存中,因此在ObjectManager上不会调用InterfacesAdded信号。

我遵循了this示例,该示例在StartDiscovery之前使用g_dbus_object_manager_get_objects来检查bluez是否有缓存设备。