1. bluepy库安装
源码:GitHub - IanHarvey/bluepy: Python interface to Bluetooth LE on Linux
文档:bluepy - a Bluetooth LE interface for Python — bluepy 0.9.11 documentation
安装时报了libglib相关的错误信息,所以先安装libglib。
sudo apt-get install python3-pip libglib2.0-dev
再安装bluepy
sudo pip3 install bluepy
2. linux上确定BLE(蓝牙低功耗模式)是否可用
查看蓝牙服务状态
sudo systemctl status bluetooth
扫描附近的蓝牙服务
bluetoothctl scan on
检查 Linux 中 BLE 的可用性
hciconfig hci0 lestates
如果运行结果为Read LE supported states on hci0 returned status 1,那么Congratulations!BLE不存在,并且这不是可以通过调整软件来修复的。需要购买蓝牙低功耗适配器并将其插入您的机器。
如果看到的是状态列表,那么这显然意味着 BLE 已经可以使用了。
3. hcitool dev没有蓝牙设备
echo "blacklist ath3k" | sudo tee /etc/modprobe.d/ath3k.conf
echo "blacklist btusb" | sudo tee -a /etc/modprobe.d/ath3k.conf
然后再重启等待30s后,
sudo modprobe ath3k
sudo modprobe btusb
对于我当时的情况是适用的(上面几行命令出自于这里hcitool dev无设备)
4. 运行代码报错
Error while scanning for devices: Failed to execute management command 'le on' (code: 20, error: Permission Denied)
1. sudo执行
2. 设置bluepy-helper
查找bluepy-helper在的路径,得到的结果则为<PATH>
find /usr/local/lib -name bluepy-helper
再执行以下命令。
sudo setcap cap_net_raw+e <PATH>/bluepy-helper
sudo setcap cap_net_admin+eip <PATH>/bluepy-helper
为了debug方便,可以sudo vi <PATH>/btle.py,将Debugging修改为True,这样会显示更多log信息。(sudo是因为库文件一般都是readonly)
5 更多问题
或许可以在Issues · IanHarvey/bluepy · GitHub找到答案