Python 3.9+连接Windows 10蓝牙TimeBox evo遇WinError 10064问题
解决Windows 10下Python连接TimeBox evo蓝牙设备出现WinError 10064的问题
错误本质
OSError: [WinError 10064] 是目标蓝牙设备主动拒绝了连接请求——哪怕系统显示设备已配对,也不代表Python使用的RFCOMM端口或连接方式符合设备要求。
解决方案
1. 确认设备实际监听的RFCOMM端口
你代码里硬写的port=4大概率不是TimeBox evo实际使用的端口,按以下步骤查找:
- 按
Win+X打开设备管理器 - 展开「蓝牙」分类,找到TimeBox evo设备
- 右键→属性→切换到「服务」选项卡
- 找到标注为「RFCOMM」的服务,查看对应的端口号,替换代码里的
port值
2. 扫描设备的蓝牙服务UUID
部分蓝牙设备需要匹配特定服务UUID才能建立有效连接,用pybluez库扫描设备可用服务:
先安装依赖:
pip install pybluez
运行扫描脚本:
from bluetooth import find_service target_mac = "11:75:58:ce:c7:52" services = find_service(address=target_mac) for svc in services: print(f"服务名称: {svc['name']}") print(f"UUID: {svc['service-id']}") print(f"RFCOMM通道: {svc['port']}\n")
找到和数据传输相关的服务(比如TimeBox evo的专属服务),用对应的port值替换代码里的端口。
3. 确保设备处于可连接状态
- 关闭手机或其他设备上的TimeBox evo控制APP,避免其他程序占用蓝牙连接
- 检查设备端是否需要手动开启「数据传输模式」,部分蓝牙设备配对后默认只允许系统级连接,需手动开放数据接收权限
4. 以管理员身份运行脚本
Windows下蓝牙连接可能需要更高权限:
- 找到Python快捷方式,右键→以管理员身份运行
- 再执行你的连接脚本
5. 改用兼容性更好的蓝牙库
原生socket在Windows蓝牙支持上有局限,推荐用pybluez重构连接逻辑:
from bluetooth import BluetoothSocket, RFCOMM serverMACAddress = "11:75:58:ce:c7:52" port = 你查到的正确端口号 sock = BluetoothSocket(RFCOMM) try: sock.connect((serverMACAddress, port)) print("连接成功") while True: text = input() if text == "quit": break sock.send(text.encode('UTF-8')) except Exception as e: print(f"连接失败: {str(e)}") finally: sock.close()
内容的提问来源于stack exchange,提问作者Pasquale
相关产品推荐
相关产品推荐

