python - Raspberry Pi 3 B+ BLE 升级后扫描失败(使用 Stretch)
问题描述
在执行 apt-get 更新/升级后,使用已知工作 Python 示例的 BLE 扫描在全新的 Raspberry Pi 3 B+(金属罐 CPU)上失败。要重新创建,使用 NOOBS 2.8.2,设置 Pi 并执行 apt-get update and upgrade,接受所有建议的更改。然后使用此示例代码扫描 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 将禁止设置扫描参数命令。
推荐阅读
- ios - 正则表达式以@开头,以空格结尾
- java - JUnit 5 模拟 YearMonth.now 但为 YearMonth.from 调用真实方法
- envoyproxy - Envoy 如何支持随机采样但稳定的跟踪?
- colors - 创建带有彩色字形(表情符号)的字体
- wpf - 为什么 UpdateSourceTrigger=Propertychanged 在 IntegerUpdown 中无法正常工作?
- laravel - Laravel+Vue webpack 从特定路径加载块
- python - 如何让我的 pygame konami 代码更简单?
- javascript - 如果将新值添加到 Angular 的输入中,如何刷新下拉列表?
- c# - 命中 API -RestSharp 时无法连接到远程服务器
- sql - 使用 out 参数调用 plsql 过程 = null