在执行 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/