参考这篇文章,我已经成功地获得了一个Linux设备(Raspberry Pi A +型)来将我的Bluetooth 4.0 USB软件狗切换到“广告”状态:
sudo hciconfig hci0 leadv 3
要么
sudo hciconfig hci0 leadv 0
我使用运行“ LightBlue Explorer”应用程序的iPod进行了验证。
到目前为止一切都很好。
从另一个具有蓝牙4.0加密狗的Linux盒(另一个Pi)中获取;我还可以使用以下命令查看设备:
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
这将使扫描运行15秒
hcitool lescan
这只会报告每个设备一次
关于(unknown)
:我认为您的外围设备在广告中没有包含蓝牙名称,甚至根本没有。
--passive
告诉您的HCI设备不请求ScanResponse(可能包含名称),因此名称仍然未知,而iOS API会进行主动扫描并接收名称。