python - Raspberry Pi 3 B+ BLE 升级后扫描失败(使用Stretch)

标签 python bluetooth-lowenergy raspberry-pi3 ibeacon

在执行 apt-get 更新/升级后,使用已知有效 Python 示例的 BLE 扫描在全新的 Raspberry Pi 3 B+(金属 jar 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)

最佳答案

所以您的扫描似乎已经处于事件状态(因为它传送了一个广告数据包)? lescan 命令首先设置扫描参数,然后开始扫描。如果已经有正在进行的扫描,HCI 会禁止设置扫描参数命令。

关于python - Raspberry Pi 3 B+ BLE 升级后扫描失败(使用Stretch),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51700050/

相关文章:

bluetooth-lowenergy - 蓝牙5.1精确定位的原理是什么

android - "Bluetooth share has stopped working"执行LeScan时

c++ - 我如何使用树莓派获取ina219传感器数据

python - 设置属性的属性

javascript - Flask flash 和 url_for 与 AJAX

android - 设备正在与 GATT 服务器断开连接

java - 有没有办法用输入来定义引脚?

linux - 使用 Raspbian JESSIE 启动 Pi3 时自动启动 "Chromium"

python - Numpy 安装/构建 Mac Osx

python - Django:有什么方法可以得到 "unique for date range"吗?