我遇到了一个问题,即一台机器上的 BLE 主动扫描导致另一台机器上的连接问题。如果有人能解释原因,并提供有关如何解决的任何建议,我会更加痛苦。
我已经将我的代码所做的粗略版本分解为简单的脚本。
在机器 1 上:
sudo stdbuf -oL hcidump -X |tee hci.log &
sudo hcitool lewlclr
sudo hcitool lewladd 68:C9:0B:xx:xx:01
sudo hcitool lewladd 68:C9:0B:xx:xx:02
sudo hcitool lewladd 68:C9:0B:xx:xx:03
sudo hcitool lewladd 68:C9:0B:xx:xx:04
sudo hcitool lewladd 68:C9:0B:xx:xx:05
sudo hcitool lewladd 68:C9:0B:xx:xx:06
while true; do sudo hcitool lecc --whitelist; if [ $? == 1 ] ; then sleep 20; else sleep 1; sudo hcitool ledc 64 ; fi; done
以上将毫无问题地运行
但是,在另一台机器上运行以下命令后,我遇到了连接问题。
sudo hcitool lescan --duplicates
从 hci 日志中,正常的连接看起来像:
< HCI Command: LE Create Connection (0x08|0x000d) plen 25
bdaddr 00:00:00:00:00:00 type 0
interval 4 window 4 initiator_filter 1
own_bdaddr_type 0 min_interval 15 max_interval 15
latency 0 supervision_to 3200 min_ce 1 max_ce 1
> HCI Event: Command Status (0x0f) plen 4
LE Create Connection (0x08|0x000d) status 0x00 ncmd 1
> HCI Event: LE Meta Event (0x3e) plen 19
LE Connection Complete
status 0x00 handle 64, role master
bdaddr 68:C9:0B:xx:xx:xx (Public)
< HCI Command: Disconnect (0x01|0x0006) plen 3
handle 64 reason 0x13
Reason: Remote User Terminated Connection
> HCI Event: Command Status (0x0f) plen 4
Disconnect (0x01|0x0006) status 0x00 ncmd 1
> HCI Event: Disconn Complete (0x05) plen 4
status 0x00 handle 64 reason 0x16
Reason: Connection Terminated by Local Host
连接不良如下:
< HCI Command: LE Create Connection (0x08|0x000d) plen 25
bdaddr 00:00:00:00:00:00 type 0
interval 4 window 4 initiator_filter 1
own_bdaddr_type 0 min_interval 15 max_interval 15
latency 0 supervision_to 3200 min_ce 1 max_ce 1
> HCI Event: Command Status (0x0f) plen 4
LE Create Connection (0x08|0x000d) status 0x00 ncmd 1
> HCI Event: LE Meta Event (0x3e) plen 19
LE Connection Complete
status 0x00 handle 64, role master
bdaddr 68:C9:0B:xx:xx:xx (Public)
> HCI Event: Disconn Complete (0x05) plen 4
status 0x00 handle 64 reason 0x3e
Reason: Connection Failed to be Established
< HCI Command: Disconnect (0x01|0x0006) plen 3
handle 64 reason 0x13
Reason: Remote User Terminated Connection
> HCI Event: Command Status (0x0f) plen 4
Disconnect (0x01|0x0006) status 0x12 ncmd 1
Error: Invalid HCI Command Parameters
注意:最后两个条目(Invalid HCI Command Parameters)是由于脚本的粗糙,并且仅由于连接失败而发生。
值得注意的是,看起来连接已经建立,然后它说不能(无法建立连接)。这对我来说似乎有点令人困惑。
我在不同的机器上试过这个。(台式电脑和 RPi3)