linux - 低功耗蓝牙 : Passive Scan - but do not loop forever?

标签 linux hci bluetooth-lowenergy

引用此 post我已经成功地获得了一个 Linux 设备(Raspberry Pi Model A+)来将我的蓝牙 4.0 USB 加密狗切换到“广告”状态:

sudo hciconfig hci0 leadv 3

sudo hciconfig hci0 leadv 0

我使用运行 'LightBlue Explorer' 的 Ipod 验证了这一点应用。

到目前为止一切都很好。

来自另一个 Linux 盒子(另一个 Pi),它也有一个蓝牙 4.0 加密狗;我还可以使用此命令查看设备:

sudo hcitool lescan --passive

它返回这样的东西:

LE Scan ...
xx:xx:xx:xx:xx:xx (unknown)
yy:yy:yy:yy:yy:yy (unknown)
xx:xx:xx;xx:xx:xx (unknown)

但是命令循环不断地刷新设备列表。

所以我的主要问题是:是否有可以运行的命令变体,听(比如说)5 秒;返回它发现正在广播的设备列表并退出?

我想构建一个简单的脚本(最好是 Python 程序),它会定期唤醒、(被动地)监听广告流量几秒钟,然后返回源设备列表。

另外:我不确定为什么命令对它找到的设备显示“未知”。 (而 LightBlue 确实标识了名称)。

最佳答案

hcitool 中对此没有任何争论,但是这里有一些选项

  • timeout 15s hcitool lescan 这将运行扫描 15s
  • hcitool lescan 这将只报告每个设备一次

关于(未知):我假设您的外设在广告中没有包含蓝牙名称,甚至根本没有。

--passive 告诉您的 HCI 设备不要请求 ScanResponse(可能包含名称),因此名称仍然未知,而 iOS API 会进行主动扫描并接收名称。

关于linux - 低功耗蓝牙 : Passive Scan - but do not loop forever?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34189774/

相关文章:

linux - 指定的 X 服务器连接无效

c - 使用 libpcsclite 开发错误编译(未定义)

C++ Linux 服务 - 如何使用 init.d + 自动重启?

Mysql O_DSYNC 困惑

android - 在 Android HCI 日志中发现的 BLE GATT 服务的不完整列表在 getServices() 中返回

java - Android BLE 重新订阅特性

user-interface - 有哪些很好的例子表明 "I am not the user"?

android - 三星S8 Android 8.0的蓝牙HCI日志在哪里

bluetooth-lowenergy - BLE 规范是否允许在广告数据和扫描响应中使用制造商广告类型?

java - BluetoothGatt.writeCharacteristic 一半时间返回 false