问题发生
最近发现了个奇怪的现象,就是开机之后无法使用蓝牙,具体表现是,Mac的蓝牙列表虽然能看到耳机,但是无法点击连接。
只要一点,就提示连接已拒绝,另外,也无法发现其他的蓝牙设备。
只要点击关闭蓝牙,就无法再打开了。
查看系统信息里的蓝牙控制器,会发现地址那里变成了NULL
。
一开始我以为是蓝牙硬件出了问题,不过在我备份了全盘之后,发现从引导盘进的系统却是正常的,十分奇怪。
发现原因
今天又测了下,我发现这种问题一般是在我连接了不少的外设之后出现的,例如,我电脑上目前连了两个屏幕、一个USB
扩展坞、一个显示器扩展坞、妙控板、键盘、U盘等。
当我在开机的时候把这些外设都拔掉,发现蓝牙竟然神奇的可以用了,因此,基本可以断定问题出现在了这些外设上面,我测试了下,发现问题出现在雷电口上,只要开机的时候把雷电口的外设拔掉就行了。
目前的情况是,开机的时候把外设关闭,等开机之后,再连接外设就可以正常连接使用了,蓝牙也正常了。
另外,如果拔掉外设之后还是不好使,可以按以下步骤试试:
- 打开活动监视器
- 强制关闭
blue*
进程 - 关机
- 把所有外设拔掉
- 同时按
shift+ctrl+option+电源键
,按住6
秒不松开 6
秒之后松开,然后按电源键+option+cmd+p+r
,这时电脑会自动开机,等机器响4
声之后松手,蓝牙就可以正常了~
其他解决方法,如果以上不好使,可以看看下面的方法(可以每个都试试):
- 如果隔空投送还能搜索到
MacBook
的话,用手机隔空投送传一个文件到电脑,蓝牙就恢复了 - 使用外置的
USB
蓝牙试试,插入外置蓝牙来激活内置蓝牙 - 删除蓝牙配置文件,
~/Library/Preferences/com.apple.Bluetooth.plist
,重启 - 重启下蓝牙服务即可:
sudo kill -9 'pgrep bluetoothd'
- 使用此脚本:
123456789#!/usr/bin/env bashpgrep audio | xargs sudo killpgrep bluetooth | xargs sudo killsudo launchctl list | grep -i blue | awk '{ print $3 }' | xargs sudo launchctl stopsudo launchctl list | grep -i blue | awk '{ print $3 }' | xargs sudo launchctl startsudo launchctl list | grep -i audio | awk '{ print $3 }' | xargs sudo launchctl stopsudo launchctl list | grep -i audio | awk '{ print $3 }' | xargs sudo launchctl start - 开机前把雷电口的设备断掉,开机之后再插上
- 重置 Mac 的 SMC – 官方 Apple 支持 (中国)
- 重置 Mac 上的 NVRAM – 官方 Apple 支持 (中国)
- 自检硬件:重启之后按住
D
键,选择语言和网络之后,会自动自检。代码含义见:“Apple 诊断”参考代码 – 官方 Apple 支持 (中国),M1
芯片自检方式见:使用“Apple 诊断”测试您的 Mac – 官方 Apple 支持 (中国) - 进入安全模式,这个可以排除软件问题导致的。如何在 Mac 上使用安全模式 – 官方 Apple 支持 (中国)
- 拔掉外设,合上盖子蓝牙自动关闭,打开盖子,蓝牙重新启动,哈哈
- 当然,有人是合盖休眠之后蓝牙不能用了,解决方法:
12345678910111213141516171819#安装blueutil,用来通过命令行开关蓝牙brew install blueutil#安装sleepwatcher,监控电脑休眠和唤醒时触发执行指定脚本brew install sleepwatcher#启动sleepwatcher服务brew services start sleepwatcher#通过查看进程可以知道,当触发休眠的时候会执行 ~/.sleep脚本,唤醒的时候执行 ~/.wakeup 脚本#/usr/local/sbin/sleepwatcher -V -s ~/.sleep -w ~/.wakeupps aux | grep sleepwatchervim ~/.sleep1 /usr/local/bin/blueutil -p 02 echo "[`date "+%Y-%m-%d %H:%M:%S"`] sleep $?" >> ~/.sleepwatcher.logvim ~/.wakeup1 /usr/local/bin/blueutil -p 12 echo "[`date "+%Y-%m-%d %H:%M:%S"`] wakeup $?" >> ~/.sleepwatcher.logchmod +x ~/.sleepchmod +x ~/.wakeup#可以查看 ~/.sleepwatcher.log 来验证是否执行脚本
有人通过这个步骤成功修复蓝牙的,大家同样可以试试。MacBook合盖休眠后蓝牙不可用的另类解决方法 – 知乎 (zhihu.com) - 回退系统版本
10.14.6
- 禁用掉
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