跳转到主要内容

`_bleio` 基于 `bleak` 的 Blinka

项目描述

介绍

Documentation Status Discord Build Status

_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扫描时丢失数据。

为了解决这个问题,这个库可以改用通过 hcidumphcitool 工具查看原始 BLE 扫描数据,从而避免通过内核驱动程序。但这需要特殊的设置。

通常,只有 root 有足够的权限来查看原始扫描数据。由于以 root 身份运行很危险,您可以使用 Linux 能力来授予 hcitoolhcidump 原始网络访问权限。这非常强大,不应随意操作。为了限制访问,我们建议您更改文件执行权限,将此能力限制在 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>

然后,您必须注销并重新登录以加入新组。

要设置 hcitoolhcidump 的权限,请执行以下操作

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

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源分布

adafruit-blinka-bleio-4.1.2.tar.gz (45.8 kB 查看哈希值)

上传时间

构建分布

adafruit_blinka_bleio-4.1.2-py3-none-any.whl (25.4 kB 查看哈希值)

上传于 Python 3

由以下支持