马春杰杰 Exit Reader Mode

MacBook Pro无法打开蓝牙的解决方案汇总

问题发生

最近发现了个奇怪的现象,就是开机之后无法使用蓝牙,具体表现是,Mac的蓝牙列表虽然能看到耳机,但是无法点击连接。

只要一点,就提示连接已拒绝,另外,也无法发现其他的蓝牙设备。

只要点击关闭蓝牙,就无法再打开了。

查看系统信息里的蓝牙控制器,会发现地址那里变成了NULL

一开始我以为是蓝牙硬件出了问题,不过在我备份了全盘之后,发现从引导盘进的系统却是正常的,十分奇怪。

发现原因

今天又测了下,我发现这种问题一般是在我连接了不少的外设之后出现的,例如,我电脑上目前连了两个屏幕、一个USB扩展坞、一个显示器扩展坞、妙控板、键盘、U盘等。

当我在开机的时候把这些外设都拔掉,发现蓝牙竟然神奇的可以用了,因此,基本可以断定问题出现在了这些外设上面,我测试了下,发现问题出现在雷电口上,只要开机的时候把雷电口的外设拔掉就行了。

目前的情况是,开机的时候把外设关闭,等开机之后,再连接外设就可以正常连接使用了,蓝牙也正常了。

另外,如果拔掉外设之后还是不好使,可以按以下步骤试试:

  1. 打开活动监视器
  2. 强制关闭blue*进程
  3. 关机
  4. 把所有外设拔掉
  5. 同时按shift+ctrl+option+电源键,按住6秒不松开
  6. 6秒之后松开,然后按电源键+option+cmd+p+r,这时电脑会自动开机,等机器响4声之后松手,蓝牙就可以正常了~

其他解决方法,如果以上不好使,可以看看下面的方法(可以每个都试试):

  1. 如果隔空投送还能搜索到 MacBook 的话,用手机隔空投送传一个文件到电脑,蓝牙就恢复了
  2. 使用外置的USB蓝牙试试,插入外置蓝牙来激活内置蓝牙
  3. 删除蓝牙配置文件,~/Library/Preferences/com.apple.Bluetooth.plist,重启
  4. 重启下蓝牙服务即可:sudo kill -9 'pgrep bluetoothd'
  5. 使用此脚本:
    #!/usr/bin/env bash
    
    pgrep audio | xargs sudo kill
    pgrep bluetooth | xargs sudo kill
    
    sudo launchctl list | grep -i blue | awk '{ print $3 }' | xargs sudo launchctl stop
    sudo launchctl list | grep -i blue | awk '{ print $3 }' | xargs sudo launchctl start
    sudo launchctl list | grep -i audio | awk '{ print $3 }' | xargs sudo launchctl stop
    sudo launchctl list | grep -i audio | awk '{ print $3 }' | xargs sudo launchctl start
  6. 开机前把雷电口的设备断掉,开机之后再插上
  7. 重置 Mac 的 SMC – 官方 Apple 支持 (中国)
  8. 重置 Mac 上的 NVRAM – 官方 Apple 支持 (中国)
  9. 自检硬件:重启之后按住D键,选择语言和网络之后,会自动自检。代码含义见:“Apple 诊断”参考代码 – 官方 Apple 支持 (中国)M1芯片自检方式见:使用“Apple 诊断”测试您的 Mac – 官方 Apple 支持 (中国)
  10. 进入安全模式,这个可以排除软件问题导致的。如何在 Mac 上使用安全模式 – 官方 Apple 支持 (中国)
  11. 拔掉外设,合上盖子蓝牙自动关闭,打开盖子,蓝牙重新启动,哈哈
  12. 当然,有人是合盖休眠之后蓝牙不能用了,解决方法:
    #安装blueutil,用来通过命令行开关蓝牙
    brew install blueutil
    #安装sleepwatcher,监控电脑休眠和唤醒时触发执行指定脚本
    brew install sleepwatcher
    #启动sleepwatcher服务
    brew services start sleepwatcher
    #通过查看进程可以知道,当触发休眠的时候会执行 ~/.sleep脚本,唤醒的时候执行 ~/.wakeup 脚本
    #/usr/local/sbin/sleepwatcher -V -s ~/.sleep -w ~/.wakeup
    ps aux | grep sleepwatcher
    vim ~/.sleep
      1 /usr/local/bin/blueutil -p 0
      2 echo "[`date "+%Y-%m-%d %H:%M:%S"`] sleep $?" >> ~/.sleepwatcher.log
    vim ~/.wakeup
      1 /usr/local/bin/blueutil -p 1
      2 echo "[`date "+%Y-%m-%d %H:%M:%S"`] wakeup $?" >> ~/.sleepwatcher.log
    chmod +x ~/.sleep
    chmod +x ~/.wakeup
    
    #可以查看 ~/.sleepwatcher.log 来验证是否执行脚本

    有人通过这个步骤成功修复蓝牙的,大家同样可以试试。MacBook合盖休眠后蓝牙不可用的另类解决方法 – 知乎 (zhihu.com)

  13. 回退系统版本10.14.6
  14. 禁用掉Android的文件传输工具

有不少案例:

(Mac的蓝牙无法打开/Mac的蓝牙重启之后失效)

https://discussions.apple.com/thread/8150033

https://discussions.apple.com/thread/8490095

https://discussions.apple.com/thread/8468510

https://discussions.apple.com/thread/8435026

https://discussions.apple.com/thread/8279849

本文最后更新于2022年12月27日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!