You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

macOS下Bleak扫描仅识别树莓派旧主机名,如何彻底重置蓝牙?

解决macOS上BleakScanner缓存蓝牙设备旧主机名的问题

彻底重置macOS蓝牙的可行方法

方法1:终端命令重置蓝牙服务与缓存

  1. 打开终端,执行命令停止蓝牙服务:
    sudo launchctl stop com.apple.blued
    
  2. 删除所有蓝牙相关的配置与缓存文件:
    sudo rm -rf /Library/Preferences/com.apple.Bluetooth.plist
    sudo rm -rf ~/Library/Preferences/com.apple.Bluetooth.plist
    sudo rm -rf /Library/Caches/com.apple.Bluetooth
    sudo rm -rf ~/Library/Caches/com.apple.Bluetooth
    
  3. 重启蓝牙服务:
    sudo launchctl start com.apple.blued
    
  4. 重启Mac完成重置。

方法2:蓝牙调试菜单清除缓存

  1. 打开「系统设置」-「蓝牙」,按住Option键点击菜单栏的蓝牙图标。
  2. 在弹出的菜单中选择「调试」-「清除所有设备缓存」。
  3. 关闭再重新打开蓝牙,运行BleakScanner脚本测试。

方法3:修改BleakScanner扫描模式

如果系统重置无效,可强制Bleak使用主动扫描跳过缓存:
修改原脚本为:

import asyncio
from bleak import BleakScanner


async def discover_devices():
    # 启用主动扫描模式,优先获取实时广播数据
    scanner = BleakScanner(scanning_mode="active")
    # 延长扫描时长确保捕获最新广播
    devices = await scanner.discover(timeout=10)

    for device in devices:
        if device.name:
            print(f"Found device: {device.name} (Address: {device.address})")


if __name__ == "__main__":
    asyncio.run(discover_devices())

主动扫描会主动向设备发送请求获取最新信息,而非依赖系统缓存的旧数据。

问题原因说明

macOS蓝牙缓存分散在多个位置,仅删除bluetooth.plist无法清除全部缓存;另外Bleak默认的被动扫描模式会优先读取系统缓存,导致无法获取树莓派更新后的主机名。

内容的提问来源于stack exchange,提问作者Max-194

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:40:18