`_bleio` 基于 `bleak` 的 Blinka
项目描述
介绍
_bleio 基于 bleak 和 bluez。
依赖项
此驱动依赖于
它还可能依赖于以下Debian软件包,这些软件包在Raspbian中默认未安装
bluez-hcidump
从PyPI安装
在支持GNU/Linux的系统上,例如树莓派,您可以从PyPI 安装此驱动。为当前用户安装
pip3 install adafruit-blinka-bleio
为系统范围内安装(在某些情况下可能需要这样做)
sudo pip3 install adafruit-blinka-bleio
在当前项目的虚拟环境中安装
mkdir project-name && cd project-name
python3 -m venv .env
source .env/bin/activate
pip3 install adafruit-blinka-bleio
Linux上的重复广告扫描支持
标准的Linux内核bluez驱动程序被设置为抑制来自同一BLE设备发送的多个广告。截至本文撰写时,这不能更改。如果您使用BLE广告发送通过扫描检索的可变数据,去重可能会导致您在通过bleak扫描时丢失数据。
为了解决这个问题,这个库可以改用通过 hcidump 和 hcitool 工具查看原始 BLE 扫描数据,从而避免通过内核驱动程序。但这需要特殊的设置。
通常,只有 root 有足够的权限来查看原始扫描数据。由于以 root 身份运行很危险,您可以使用 Linux 能力来授予 hcitool 和 hcidump 原始网络访问权限。这非常强大,不应随意操作。为了限制访问,我们建议您更改文件执行权限,将此能力限制在 bluetooth 组用户。
如果您不使用广告来传输变化的数据,您不需要添加这些权限。如果 hcitool 没有这些额外权限, 这个库将回退到使用 bleak 进行常规扫描。
如果您 明确 想要选择后端以确保一致的行为,您可以执行以下操作
ble = BLERadio()
ble._adapter.ble_backend = "bleak" # Forces bleak even if hcitool works.
# ble._adapter.ble_backend = "hcitool" # Forces hcitool. Raises exception if unavailable.
要将自己添加到 bluetooth 组,请执行以下操作
sudo usermod -a -G bluetooth <your username>
然后,您必须注销并重新登录以加入新组。
要设置 hcitool 和 hcidump 的权限,请执行以下操作
sudo chown :bluetooth /usr/bin/hcitool /usr/bin/hcidump
sudo chmod o-x /usr/bin/hcitool /usr/bin/hcidump
sudo setcap 'cap_net_raw,cap_net_admin+eip' /usr/bin/hcitool
sudo setcap 'cap_net_raw,cap_net_admin+eip' /usr/bin/hcidump
用法示例
请勿直接使用此库。请使用 CircuitPython BLE:https://github.com/adafruit/Adafruit_CircuitPython_BLE/
贡献
欢迎贡献!请在贡献之前阅读我们的 行为准则,以帮助本项目保持欢迎。
文档
有关构建库文档的信息,请参阅 本指南。
故障排除
Raspberry Pi 3b Rev 1.2
Raspberry Pi 3b 的 BLE 芯片通过 UART 连接到主处理器,没有流量控制。这可能导致 BLE 不可靠。为了提高可靠性,我们可以降低 UART 的速度。为此,编辑 /usr/bin/btuart 并将 921600 替换为 460800。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。