Linux Mint 20下pip安装PyBluez失败,求蓝牙设备连接状态检测方案
解决方案
一、PyBluez安装失败修复
你遇到的编译报错是因为仅安装了BlueZ运行时组件,缺少编译PyBluez所需的开发头文件,按以下步骤操作即可:
- 先安装系统依赖包:
sudo apt update sudo apt install libbluetooth-dev python3-dev build-essential
- 激活你的Python虚拟环境后重新执行安装命令:
pip install PyBluez
二、无需PyBluez的蓝牙连接状态检测方案
你的核心需求仅为检测设备连接状态,完全可以不用安装PyBluez,使用BlueZ自带工具即可实现,而且兼容性比已废弃的hcitool更好:
方案1:使用bluetoothctl检测(通用场景)
import subprocess def check_bt_connected(mac_addr): res = subprocess.run( ["bluetoothctl", "info", mac_addr.upper()], capture_output=True, text=True ) return "Connected: yes" in res.stdout # 调用示例 if check_bt_connected("XX:XX:XX:XX:XX:XX"): print("蓝牙设备已连接") else: print("蓝牙设备未连接")
方案2:检测rfcomm绑定设备(串口蓝牙场景)
你已经用rfcomm绑定了设备端口,直接尝试打开端口即可判断连接状态:
def check_rfcomm_connected(dev_path="/dev/rfcomm0"): try: # 尝试打开设备,连接正常时不会报错 with open(dev_path, "rb", buffering=0): return True except OSError: return False
说明:hcitool是BlueZ已经废弃的工具,且
rfcomm bind仅做端口映射,不会主动触发连接,所以用hcitool con查不到绑定设备属于正常现象。
内容的提问来源于stack exchange,提问作者StudentofGermany
相关产品推荐
相关产品推荐

