在进行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)
所以你的扫描似乎已经处于活动状态(因为它提供了一个广告包)? lescan命令首先设置扫描参数,然后开始扫描。如果已经存在正在进行的扫描,则HCI禁止设置扫描参数命令。
#!/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 /
sudo crontab -e
并添加以下内容:@reboot sleep 60 && sh /home/pi/scripts/lescan.sh