mon*_*nny 0 linux hci bluetooth-lowenergy
参考这篇文章,我已经成功地获得了一个Linux设备(Raspberry Pi A +型)来将我的Bluetooth 4.0 USB软件狗切换到“广告”状态:
sudo hciconfig hci0 leadv 3
Run Code Online (Sandbox Code Playgroud)
要么
sudo hciconfig hci0 leadv 0
Run Code Online (Sandbox Code Playgroud)
我使用运行“ LightBlue Explorer”应用程序的iPod进行了验证。
到目前为止一切都很好。
从另一个具有蓝牙4.0加密狗的Linux盒(另一个Pi)中获取;我还可以使用以下命令查看设备:
sudo hcitool lescan --passive
Run Code Online (Sandbox Code Playgroud)
返回如下内容:
LE Scan ...
xx:xx:xx:xx:xx:xx (unknown)
yy:yy:yy:yy:yy:yy (unknown)
xx:xx:xx;xx:xx:xx (unknown)
Run Code Online (Sandbox Code Playgroud)
但是该命令会不断循环刷新设备列表。
所以我的主要问题是:是否可以运行该命令的变体,侦听(说)5秒;返回发现要播发的设备列表并退出?
我想构建一个简单的脚本(理想情况下为Python程序),该脚本将定期唤醒,(被动地)监听流量几秒钟,然后返回源设备列表。
另外:我不确定为什么该命令为找到的设备显示“未知”。(而LightBlue确实会标识名称)。
hcitool中没有为此的论点,但是这里有一些选择
timeout 15s hcitool lescan 这将使扫描运行15秒 hcitool lescan 这只会报告每个设备一次关于(unknown):我认为您的外围设备在广告中没有包含蓝牙名称,甚至根本没有。
--passive 告诉您的HCI设备不请求ScanResponse(可能包含名称),因此名称仍然未知,而iOS API会进行主动扫描并接收名称。
小智 5
我在 Raspberry Pi 3 上运行时遇到了同样的问题。但是,如果我多次运行该命令,则会出现错误
Set scan parameters failed: Input/output error
Run Code Online (Sandbox Code Playgroud)
为了避免这个错误,我不得不像这样向 hcitool 发送 INT 信号:
timeout -s INT 10s hcitool lescan
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7482 次 |
| 最近记录: |