首页 > 解决方案 > 如何设置bluepy可以在没有sudo的情况下扫描的环境?

问题描述

我写了一些 Python3 脚本,用于扫描设备。如果它们与“名称”匹配,我将连接到它们并做一些事情。该脚本构建在bluepy模块之上。

一个我不喜欢的想法是,我需要将设备扫描运行为sudo(如sudo python3 getDev.py)。任何想法如何使用户能够在没有 root 权限的情况下进行扫描?

猜猜我需要将本地用户添加到组等。欢迎任何想法

标签: pythonlinuxbluetooth-lowenergy

解决方案


在 linux 上,蓝牙协议栈需要特殊权限才能与之交互。

这些特权是通过称为能力的属性实现的,有关详细信息,请参阅man 7 能力

分配能力的工具是程序setcap

在 bluepy 的情况下,它是bluepy-helper与蓝牙协议栈交互的二进制文件,所以找到它安装包 bluepy 的位置并运行:

sudo setcap 'cap_net_raw,cap_net_admin+eip' ${PY_SITE_PACKAGES_DIR}/bluepy/bluepy-helper

另请参阅此处


推荐阅读