解决 MacBook Pro 2020 内建蓝牙搜不到设备的问题

某一 MacBook Pro 出现奇怪的问题,蓝牙设置界面全空白,加载图标任凭它如何疯狂旋转,等待许久却依旧无结果,还是空白一片… MacBook 2020 13-inch 出现了蓝牙搜不到任何设备的问题。这是怎么肥四?我慌了,连忙去问张三和李四,一顿操作猛如虎,却毫无结果,这就奇怪了。然后,我也佛了…

光速传送门

如果你插入外置 USB 蓝牙接收器,拔出后 MacBook 蓝牙不能搜索到任何设备,尝试各种操作未果

那你可以试试这个外国大佬的骚操作,这让我的 MacBook 蓝牙成功复活(差点准备去换主板了… 其实并不是硬件坏了

你可以选择跳过我的折腾经历,直接看 解决方法 内容部分

问题发现 & 尝试解决未果

最开始,我以为仅仅是单纯的系统问题,这 macOS 近几年随大流,bug 写得是贼好且越来越多,隔壁 Win10 也前来观摩(咳咳,划掉

  1. 格盘重置,问题依旧 🧐

这就奇怪了,莫非是老版本 macOS 没有修复这个问题?(当时我用 macOS 10.15.7 Catalina 版本,最新版为 Bug Sur)

  1. 于是,我又格盘升级到了 Big Sur(当时的最新系统),问题依旧 🤔

漫长的下载,漫长的等待,心中越来越偏向“硬件问题”方面思考… 🤔🤔

不会吧?🙃 这硬件应该不会那么容易就坏吧,我又没对他做过什么…

  1. 最后搜到了 https://discussions.apple.com/thread/250944058

这个在 Apple 官网论坛有 23 页讨论的帖子

看到这位倒霉 MacBook 用户的经历,我才突然意识到究竟是什么导致了这样的问题。

问题原因

插入外置 USB 蓝牙接收器,拔出后,电脑无法从 使用 外置 USB 蓝牙接收器 切换到 内置(内建)蓝牙

“Cannot switch ‘external usb bluetooth dongle’ to ‘internal bluetooth’.”

绿联USB蓝牙接收器 4.0

猜想:

可能是 EFI 中固件的 BUG

(所以无论我怎么格系统盘恢复系统,也无济于事)

这里直接引用 @fabian259 的回复:

1
2
3
4
5
So in summary it's several factors that came together here to create this bug:

a) A likely firmware bug in the EFI in Catalina.
b) A pretty unsafe default for switching Bluetooth controllers - which most users likely don't want anyway.
c) Maybe: A CSR USB controller using the exact same chip as the internal one. (if I am able to unbreak my device, I will try to re-break with a Broadcom 4.0 device, too)

当时我遇到这个问题:

1
2
3
4
5
日期:2021年6月16日

macOS 版本:10.15.7 (19H1217)

机型:MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)

Apple 论坛里这个帖子发表的时间已经是 “Dec 14, 2019 2:09 AM”

过了一年多了都,Apple 却依然没有修复这个问题… (尝试升级最新系统,问题依旧)

Apple 你就那么不重视吗?

解决方法

注:以下操作源于 Apple 官网论坛的主题帖:https://discussions.apple.com/thread/250944058

01. 准备工作

首先,你需要的东西有:

  • 一台蓝牙搜不到任何设备的 MacBook
  • 古董 USB 蓝牙 2.0 接收器,需支持 macOS 系统

请注意,你没听错。你需要额外买一个 USB 蓝牙接收器,注意是 BT 2.0 版本的,不是 BT 4.0、BT 5.0

如何判断买的 BT2.0 macOS 是否能用?

  1. 插入 BT2.0 后,蓝牙能搜到设备,功能正常
  2. 系统报告 中显示如图:BT 2.0 03.jpg

我的购买经历

BT2.0 需要确保支持 macOS 系统,建议买 CSR 主控芯片的接收器(买到支持 macOS 的概率应该会大些)

附图:BT 2.0 01.jpg | BT 2.0 02.jpg

因为是过时的老古董,可以在闲鱼买,十多块钱的白菜价

(如果需要,你出邮费,我也可以给你寄过去)

02. 骚操作

买到 BT2.0 后耐心执行以下步骤:

  1. 此刻你已经拔掉 USB 蓝牙 4.0 接收器(确保没有插入外置蓝牙)

  2. 你的 MacBook 已经不能搜索到任何设备(只是右上角的圈一直转)

  1. 按住 Option + Shift 键,点击状态栏的 “蓝牙图标”,然后点击 “还原蓝牙模块”(查看图片

  2. 终端执行命令 sudo rm /Library/Preferences/com.apple.Bluetooth.plist

  3. 关机,执行 “SMC 重置”(传送门:苹果官网 - 如何重置 Mac 的 SMC

    [SMC 重置非常重要,需确保有效执行,不然后面的操作都是徒劳]

    因为我打开了 filevault(文件保险箱),我重置 SMC 的操作流程是这样:

    1. 按下开机键

    2. 输入开机密码,看到启动进度条

    3. 这时,立刻按下 Option + Control + 右 Shift 键,保持 7 秒

    4. 按住上面的三个键不放,同时按下 电源键 7 秒

    5. 屏幕会关闭,风扇停转,松开三个键,但继续按住 电源键 7 秒不放

      (如果风扇没有转起来,没有开机,那就需要重新执行 “SMC 重置”)

    6. Mac 正常开机,这时确保没有连接任何 USB 蓝牙接收器

  4. 【休息一下】

  5. SMC 重置后

  6. 插入 USB 蓝牙 2.0 接收器

  7. 尝试连接一个设备,但是点击 “取消”

  1. 立刻拔掉 USB 蓝牙 2.0 接收器,然后迅速重新点击 “连接”

  1. 连接失败(正常现象)

  1. 回到 步骤8,再次做相同的操作

  2. 还是连接失败(正常现象)

  3. 再执行一次 步骤5 的 “SMC 重置”

  4. 开机之后,不插 USB 蓝牙也能搜索到设备

  5. 内建蓝牙就修好了

  6. 以后就不要再插入 USB 蓝牙接收器

  7. 为防止误插 USB 蓝牙接收器,再次中枪,执行以下命令来打预防针(禁止切换成使用外置 USB 蓝牙)

1
sudo nvram bluetoothHostControllerSwitchBehavior=never

结束 🥳

不太清楚这是什么原理,

真是 amazing 啊!

最后就是救活了蓝牙。


2021-7-14 更新内容

  • SMC 重置 是关键,之前本文重置 SMC 的步骤有误(按键写错了),已修正。

  • BT2.0 需确保支持 macOS,建议买 CSR 主控芯片的。

  • SMC 重置 如果没有成功,需多次尝试,试着按下按键后,保持的时间长一些。搞不定可以尝试看看网上的视频。


这是什么骚操作,感谢 @AntiHawk

在帖子里面:https://discussions.apple.com/thread/250944058

@AntiHawk 还提供了视频演示:YouTube 传送门

这里是这个骚操作的原话:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1. For demo purposes I have already broken my internal BT with CSR 4.0 BT dongle
2. Disconnect CSR 4.0 BT dongle if it is still connected
3. option+shift+bt icon - debug - reset the bluetooth module
4. Run “sudo rm /Library/Preferences/com.apple.Bluetooth.plist”
5. Shutdown your Mac and do SMC reset
1. My procedure is following as I have filevault enabled
1. Start your Mac
2. Wait until filevault login appears
3. Press option+cmd+RIGHT SHIFT for 7 seconds [这里原文写错了,应该是 control 键,而不是 cmd]
4. While keep holding keys in step 3. also press power button for 7 seconds
1. Fans should briefly spin up and Mac shut power off, keep holding power button for whole 7 seconds
5. If fans did not spin up try SMC reset again
6. Start your Mac to macOS normally without connecting any dongles
7. See Ya soon…
8. After SMC reset
9. Insert BT 2.0 USB dongle
10. Initiate pairing but cancel it from macOS
11. Remove BT 2.0 USB dongle and immediately after try pairing again
12. Failed
13. Trying again
14. Connect your BT 2.0 USB dongle
15. Initiate pairing but cancel it from macOS
16. Cancel pairing then remove BT 2.0 and try pairing again
17. Failed
18. Do step 5. again
19. Check if internal bluetooth is working already
20. Internal BT works again if it does not try steps 9-11 again
21. Done

(By @AntiHawk)

原因调查

@fabian259

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
fabian259
User level:Level 1
(9 points)
NotebooksSpeciality level out of ten: 0
Jul 6, 2020 5:25 AM in response to AntiHawk

Here is a summary of the whole thread:

TL;DR:

It's apparently possible to unfix the problem with a BT 2.0 dongle
For those that are scared to break it again (after logic board replacement OR BT 2.0 fix), they can run a NVRAM command to never switch BT controllers again (need to re-run after NVRAM reset):

sudo nvram bluetoothHostControllerSwitchBehavior="never"

Might be best to put that in a startup script and only change if needed.

It seems to have to do with Power Management and seemingly a EFI firmware bug introduced in Catalina as it's not possible to break Mojave in the same way.

So in summary it's several factors that came together here to create this bug:

a) A likely firmware bug in the EFI in Catalina.
b) A pretty unsafe default for switching Bluetooth controllers - which most users likely don't want anyway.
c) Maybe: A CSR USB controller using the exact same chip as the internal one. (if I am able to unbreak my device, I will try to re-break with a Broadcom 4.0 device, too)

Long version:

I have been bitten by the Bluetooth bug, too that breaks the internal Bluetooth module on Mac Book Pro 16inch if you accidentally plug in an USB CSR 4.0 Bluetooth dongle.

It seems to not happen on Mojave - so it's also related to a driver bug in Catalina regarding power management.
It happens in the first place because the nvram default behavior is to switch over to external Bluetooth by default.

The symptom is:

The Bluetooth chip gets too little power and hence fails to connect to devices and if it does connection is spotty. While on MacBook Pro 16inch it completely fails, other Macs can have bad Bluetooth behavior that is "spotty".

The solution of AppleRepair so far has been to completely replace the logic board, which fixes it till the next Dongle is plugged in and obviously is quite costly for a pure software bug.

Several observations:

The current theory is that the internal firmware mixes up the external CSR chip for it's own and saves the power requirement of the external chip (which is less as its powered by BT) and then uses this for the internal chip.

a) It is highly debatable to make the switch over to external dongle the default for all users if the functionality is usually only wanted by a handful of developers that develop Bluetooth LE applications. In fact it also breaks it for iOS developers and everyone that wants to use a Dongle to use with a VM:

https://developer.apple.com/library/archive/technotes/tn2295/_index.html#//apple_ref/doc/uid/DTS40012211-CH1-UNDERSTAND_SWITCH__BEHAVIOR

Fortunately that is easily remedied with a nvram command to change the behavior. It would be great if Apple changed this in the next minor Catalina release by default to not switch over to external Bluetooth automatically, but make it an option to select the Controller (like you can do with Bluetooth Explorer). The setting could be stored and automatically be applied after every reboot to what the user configured. That would prevent the bug in probably most user cases until a proper fix can be found.

b) It is unclear if a pure software fix could fix this as per the reports the issue remains once it has happened even if you boot into Windows / Bootcamp. However it is seemingly possible (per the above accepted answer) to unfix that issue with an older CSR Bluetooth 2.0 dongle. This probably helps, because it has a different power requirement as it predates Bluetooth LE and hence the MacBook FW gives the internal Bluetooth chip more power again.

c) Someone tried to port the Bluetooth drivers from Catalina to Mojave and it did not work.This points to the fact that it likely is an EFI / soft FW update that broke this in Catalina and not a pure software bug.

Overall it seems Apple would have several ways to fix / work around this:

Fix the EFI to fix the PM bug. (that gives hope that it can be fixed 100% and also restored affected devices without logic board replacement)
If that fix takes a while to do, at least change the default and put out a changelog for those few that need to use an external Bluetooth dongle to replace the internal one.
Create a program that does whatever the diagnostics on the Apple Wifi in the repair shop does to reset the firmware to sane values.
Create a device to emulate the USB behavior of a 2.0 Bluetooth device to fix broken devices [unlikely as that is].

In theory VirtualHere + ZeroTier could be used to share a BT 2.0 dongle from one machine on the internet to another one and unbreak something remotely. (not sure if that would work in practice though as emulation is not perfect. Though I know that Bluetooth over Internet works well as that is ironically how I broke my BT in the first place as I needed a dongle for bluetooth-over-internet)

(from https://discussions.apple.com/thread/250944058?answerId=252816593022#252816593022)

后记

我为什么会把 USB 蓝牙插到本来就有蓝牙的笔记本上?并不像其他人那样,由于开发的需要,多 bt 方便。

昏暗的光线将 USB 蓝牙和鼠标 2.4g 信号接收器混淆,乱摸乱插,蓝牙一不小心就插进了 mbp,Orz…
九块九救活了蓝牙,省去了换主板的钱

相关链接

油管: Guide to restore Macbook Pro 16” Internal Bluetooth (step 5.1.3. fixed in description below)

Apple Community: 16-inch MacBook Pro Bluetooth issue

V2EX: MBP16 寸蓝牙损坏修复记录

V2EX: 血(钱)的教训,附预防方法;Macbook Pro 16 内置蓝牙模块损坏分析

V2EX: Macbook Pro 16 蓝牙模块损坏?

Reddit: PSA: For anyone buying a new 16” macbook

知乎: macbookpro16寸蓝牙问题

over.

垃圾苹果

本站文章除注明外均采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议进行许可 ヾ(゚ー゚ヾ)
分享到