升级后使用Raspberry Pi 3 B + BLE扫描失败(使用拉伸)

问题描述 投票:2回答:3

在进行apt-get更新/升级之后,使用已知正在运行的Python示例的BLE扫描在全新的Raspberry Pi 3 B +(metal can CPU)上失败。要使用NOOBS 2.8.2重新创建,请设置Pi并执行apt-get更新和升级,接受所有建议的更改。然后使用this sample code扫描BLE设备。作为诊断的一部分,命令:

hcitool lescan

用于查看是否可以打开hci0设备。这导致了错误:

hcitool lescan Set scan parameters failed: Input/output error

此解决方法成功解决了该错误:

hciconfig hci0 down
hciconfig hci0 up
hcitool lescan

但只有在'hcitool lescan'开始成功运行之后。目前尚不清楚我们是否必须在白名单中实际捕获已扫描的设备才能使扫描成功 (过得太快就赶不上了) 。

这些新系统版本的示例代码失败:

ii  bluez                           5.43-2+rpt2+deb9u2           armhf        Bluetooth tools and daemons
ii  bluez-firmware                  1.2-3+rpt6                   all          Firmware for Bluetooth devices
ii  bluez-hcidump                   5.43-2+rpt2+deb9u2           armhf        Analyses Bluetooth HCI packets
ii  libbluetooth-dev                5.43-2+rpt2+deb9u2           armhf        Development files for using the BlueZ Linux Bluetooth library
ii  libbluetooth3:armhf             5.43-2+rpt2+deb9u2           armhf        Library to use the BlueZ Linux Bluetooth stack
ii  pi-bluetooth                    0.1.8                        all          Raspberry Pi 3 bluetooth
ii  python-bluez                    0.22-1                       armhf        Python wrappers around BlueZ for rapid bluetooth development

但是在这个系统上工作,一个升级回来:

ii  bluez                           5.43-2+rpt2+deb9u2           armhf        Bluetooth tools and daemons
ii  bluez-firmware                  1.2-3+rpt5                   all          Firmware for Bluetooth devices
ii  libbluetooth-dev                5.43-2+rpt2+deb9u2           armhf        Development files for using the BlueZ Linux Bluetooth library
ii  libbluetooth3:armhf             5.43-2+rpt2+deb9u2           armhf        Library to use the BlueZ Linux Bluetooth stack
ii  pi-bluetooth                    0.1.7                        all          Raspberry Pi 3 bluetooth
ii  python-bluez                    0.22-1                       armhf        Python wrappers around BlueZ for rapid bluetooth development

编辑:从btmon命令输出(新的非工作单位):

Bluetooth monitor ver 5.43
= Note: Linux version 4.14.52-v7+ (armv7l)                                                                                         0.695265
= Note: Bluetooth subsystem version 2.22                                                                                           0.695276
= New Index: B8:27:EB:A0:39:EC (Primary,UART,hci0)                                                                          [hci0] 0.695279
= Open Index: B8:27:EB:A0:39:EC                                                                                             [hci0] 0.695281
= Index Info: B8:27:EB:A0:39:EC (Broadcom Corporation)                                                                      [hci0] 0.695284
@ RAW Open: python (privileged) version 2.22                                                                       {0x0003} [hci0] 0.695289
@ RAW Open: hcitool (privileged) version 2.22                                                                      {0x0002} [hci0] 0.695291
@ MGMT Open: bluetoothd (privileged) version 1.14                                                                         {0x0001} 0.695294
@ MGMT Open: btmon (privileged) version 1.14                                                                              {0x0004} 0.695367
> HCI Event: LE Meta Event (0x3e) plen 40                                                                                   [hci0] 2.692582
      LE Advertising Report (0x02)
        Num reports: 1
        Event type: Scannable undirected - ADV_SCAN_IND (0x02)
        Address type: Random (0x01)
        Address: 51:46:AD:CA:4C:2F (Resolvable)
        Data length: 28
        16-bit Service UUIDs (complete): 1 entry
          Google (0xfe9f)
        Service Data (UUID 0xfe9f): 0000000000000000000000000000000000000000
        RSSI: -84 dBm (0xac)

从较旧的工作单位:

Bluetooth monitor ver 5.43
= Note: Linux version 4.14.34-v7+ (armv7l)                                                                                         0.396738
= Note: Bluetooth subsystem version 2.22                                                                                           0.396744
= New Index: B8:27:EB:31:E6:62 (Primary,UART,hci0)                                                                          [hci0] 0.396746
= Open Index: B8:27:EB:31:E6:62                                                                                             [hci0] 0.396748
= Index Info: B8:27:EB:31:E6:62 (Broadcom Corporation)                                                                      [hci0] 0.396749
@ RAW Open: python (privileged) version 2.22                                                                       {0x0002} [hci0] 0.396752
@ MGMT Open: bluetoothd (privileged) version 1.14                                                                         {0x0001} 0.396753
@ MGMT Open: btmon (privileged) version 1.14                                                                              {0x0003} 0.396800
> HCI Event: LE Meta Event (0x3e) plen 42                                                                                   [hci0] 0.534168
      LE Advertising Report (0x02)
        Num reports: 1
        Event type: Non connectable undirected - ADV_NONCONN_IND (0x03)
        Address type: Public (0x00)
        Address: 0C:F3:EE:B3:B8:53 (EM Microelectronic)
        Data length: 30
        Flags: 0x06
          LE General Discoverable Mode
          BR/EDR Not Supported
        Company: Apple, Inc. (76)
          Type: iBeacon (2)
          UUID: a6ffa91b-91f4-f2ad-0f4a-6dcf5444232f
          Version: 0.256
          TX power: -76 dB
        RSSI: -70 dBm (0xba)
python bluetooth-lowenergy raspberry-pi3 ibeacon
3个回答
1
投票

所以你的扫描似乎已经处于活动状态(因为它提供了一个广告包)? lescan命令首先设置扫描参数,然后开始扫描。如果已经存在正在进行的扫描,则HCI禁止设置扫描参数命令。


0
投票

目前我 固定 通过在使用python扫描程序之前调用脚本(找到here)来解决此问题。

我用1s持续时间称这个脚本:

bash lescan.sh 1s /dev/null

0
投票
  1. 使用以下代码创建一个新文件(0755),例如/ home / pi / scripts中的lescan.sh:
#!/bin/sh
sudo hciconfig hci0 down
sudo hciconfig hci0 up
sudo timeout -s INT 1s hcitool lescan
cd /
cd home/pi/proPi/
sudo timeout -s INT 1s python *detectAll.py* (replace with your Phyton script name)
cd /
  1. sudo crontab -e并添加以下内容:@reboot sleep 60 && sh /home/pi/scripts/lescan.sh
© www.soinside.com 2019 - 2024. All rights reserved.