You can make a difference in the Apple Support Community!

When you sign up with your Apple Account, you can provide valuable feedback to other community members by upvoting helpful replies and User Tips.

Looks like no one’s replied in a while. To start the conversation again, simply ask a new question.

16-inch MacBook Pro Bluetooth issue

I bought the new 16-inch MacBook Pro when it first came out and was happily using it until a week later my bluetooth stopped discovering devices, in particular my Magic Mouse and iPhone. I tried everything from resetting nvram, smc, resetting the bluetooth module, removing bluetooth.plist, downloaded bluetooth explorer and reset a bunch of settings etc and even went to the extent of completely formatting the computer and installing osx from scratch to no avail. Hardware diagnostics showed no hardware issues as well. The bluetooth device was showing up fine in System Report but it just wasn't discovering anything. I have a work laptop (2017 MacBook Pro) which I use side by side and it was working fine.


Long story short, I was able to replace the device at the Apple store I bought it at since it was within the 14 day return policy window. So I put it down to just being unlucky.


It's been a few weeks since then and I now have the same issue with the replacement laptop. This time though I think I know what triggered it.


I have a CalDigit dock that I use for my work laptop and occasionally have a usb bluetooth device attached to it for some work I do in virtual machines. The issue occurred when I connected my new MacBook to the dock along with the bluetooth dongle. The usb bluetooth dongle worked fine however when I disconnected the thunderbolt dock from the MacBook I noticed the bluetooth icon in the top right hand corner changed to an icon with a zigzag across it, obviously due to bluetooth device being disconnected.


Since disconnecting the external bluetooth device I'm having the same issue as I had previously, my MacBook Bluetooth device won't find any devices and is not recognized by other bluetooth devices like my iPhone/other MacBooks. I've gone through the whole process as before, and have resorted to a clean install of osx to no avail. I've even compared bluetoothd console logs between the working MacBook I have and the now broken one, the only difference is the working MacBook is able to detect devices when they are advertised, whereas the MacBook Pro 16-inch does not.


Digging into this, it seems as though OSX by default switches to any attached USB bluetooth device when it's plugged in and then when disconnected, it reverts back to the onboard device. This works fine on my old MacBook as I've been using the USB dongle for a while now without any issues. I initially thought that there may be a software issue with the internal bluetooth device not switching back properly but I would have thought a clean install would have fixed it so there must be some sort of hardware issue specifically with the new MacBook Pro 16-inch.


I'm pretty frustrated now as I've now gone through two 16-inch MacBook Pro's with bricked bluetooth devices that I'm fairly certain was caused by connecting an external bluetooth dongle via thunderbolt. I'm pretty sure onboard devices shouldn't die just because a third party device was connected/disconnected.


Has anyone come across this yet with the new MacBook Pro 16-inch? I'm going to visit the Apple store tomorrow to see what they can do but I'd prefer if I didn't have to send my laptop away and just find a fix myself if there is one. If not, I thought it'd be good to post my experience here in case anyone else comes across this.

MacBook Pro 16", macOS 10.15

Posted on Dec 14, 2019 2:09 AM

Reply
Question marked as Top-ranking reply

Posted on Jul 6, 2020 5:25 AM

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:



  • 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)

Similar questions

341 replies

Nov 11, 2020 8:15 AM in response to arnoud257

Do the values for bluetoothInternalControllerInfo and bluetoothActiveControllerInfo match on your system, when you invoke 'nvram -p' command?


If they don't, try the following:


sudo nvram bluetoothActiveControllerInfo=VALUE_OF_BLUETOOTH_INTERNAL_CONTROLLER_INFO
sudo reboot


Also, you could also try deleting bluetooth.plist file again and perform factory reset of bluetooth module that was listed earlier this thread.


sudo rm /Library/Preferences/com.apple.Bluetooth.plist

Nov 11, 2020 8:41 AM in response to Loumiakas

On first glance they match, but bluetoothActiveControllerInfo actually has two extra pairs of zeros:


bluetoothActiveControllerInfo	%96%00%ac%05%00%00%00%00%00%00%14}%da%17%987
bluetoothInternalControllerInfo	%96%00%ac%05%00%00%00%00%14}%da%17%987


I set bluetoothActiveControllerInfo to the value of bluetoothInternalControllerInfo and rebooted but after reboot it's back to the old value, so I don't think that actually matters. Also did the reset though the debug menu and removal of the .plist file, but no functional internal bluetooth. Thanks for the help though!

Nov 11, 2020 9:01 AM in response to arnoud257

Oh apologies, I did not notice those two extra pairs of 0s! It follows the same pattern as on my system.


I compared the your values to mine, they differ a little bit:

bluetoothActiveControllerInfo	%96%00%ac%05%00%00%00%00%00%00%f8%ff%c2;%18%df
bluetoothInternalControllerInfo	%96%00%ac%05%00%00%00%00%f8%ff%c2;%18%df


If you feel particularly adventurous, you could try mine. But be warned, I have no idea what these values mean, so do it at your own risk!

Nov 11, 2020 10:18 AM in response to Loumiakas

Loumiakas wrote:

Oh apologies, I did not notice those two extra pairs of 0s! It follows the same pattern as on my system.

I compared the your values to mine, they differ a little bit:
bluetoothActiveControllerInfo %96%00%ac%05%00%00%00%00%00%00%f8%ff%c2;%18%df
bluetoothInternalControllerInfo %96%00%ac%05%00%00%00%00%f8%ff%c2;%18%df

If you feel particularly adventurous, you could try mine. But be warned, I have no idea what these values mean, so do it at your own risk!



Actually, being a curious person I have managed to break the inbuilt module again. Last post will not do anything so don't bother... Also, values tend to stay the same, when you break your module, so it is not applicable.


Now, I noticed that performing is apparently not enough:

sudo nvram -c 


Try the following:


Step #1:

sudo nvram boot-args="-p -r" (this will issue an error, so I don't know if it does anything)
sudo nvram -c
sudo reboot


Step #2:

After this, your module might or might not start up. Open terminal again and issue this command and perform a scan through bluetooth settings window:

bluetoothd 



Step #3:

If that does not work, try plugging any BT2.0 dongle. It does not have to be Broadcom (mine is Cambridge Silicon Radio). Perform a scan, then unplug it and see if your bluetooth starts up.


If not, stop bluetoothd and close bluetooth settings window and keep performing these steps #2 and #3 again. It should eventually start working.


This does not work every time, but eventually it should start working! (did this 4 times now, within 15 minute timeframe). I will try to refine it down and let you know how it goes...

Nov 14, 2020 8:56 AM in response to Loumiakas

objc[1635]: Class PipeInfo is implemented in both /System/Library/PrivateFrameworks/WPDaemon.framework/Versions/A/WPDaemon and /usr/sbin/bluetoothd. One of the two will be used. Which one is undefined.
2020-11-14 19:53:04.781 bluetoothd[1635:22787] [setSystemPreference] syncs returns false
[bluetoothd][netPrefChanged] ###### Sharing Dictionary doesn't exist
2020-11-14 19:53:04.784 bluetoothd[1635:22787] [setSystemPreference] syncs returns false
2020-11-14 19:53:04.787 bluetoothd[1635:22787] Error: [AppleBluetoothHIDDeviceGen2][_setEventService:]Couldn't copy BD_ADDR
2020-11-14 19:53:04.787 bluetoothd[1635:22787] Error: [AppleBluetoothHIDDeviceGen2][_setEventService:]Couldn't copy BD_ADDR
2020-11-14 19:53:04.789 bluetoothd[1635:22787] [setSystemPreference] syncs returns false
2020-11-14 19:53:04.791 bluetoothd[1635:22787] [setSystemPreference] syncs returns false
2020-11-14 19:53:04.792 bluetoothd[1635:22787] [setSystemPreference] syncs returns false
2020-11-14 19:53:04.925 bluetoothd[1635:22787] [setSystemPreference] syncs returns false
2020-11-14 19:53:04.939 bluetoothd[1635:22787] SystemPowerNotifier: IORegisterForSystemPower for port 38659
2020-11-14 19:53:04.944 bluetoothd[1635:22787] [setSystemPreference] syncs returns false
2020-11-14 19:53:04.945 bluetoothd[1635:22787] [setSystemPreference] syncs returns false

Nov 24, 2020 1:34 PM in response to uguraydogdu

Hi, glad I've found this thread here as I have the exact same issue. I'm waiting on my BT2.0 dongle (tried 2 other without success) and in the meantime, I tried the latest trend here. I have the exact same result as seen here. Is there anything else I can try to unlock the internal BT dongle and have it working again?


objc[1084]: Class PipeInfo is implemented in both /System/Library/PrivateFrameworks/WPDaemon.framework/Versions/A/WPDaemon and /usr/sbin/bluetoothd. One of the two will be used. Which one is undefined.
[bluetoothd][netPrefChanged] ###### Sharing Dictionary doesn't exist
2020-11-24 16:26:52.609 bluetoothd[1084:22841] Error: [AppleBluetoothHIDDeviceGen2][_setEventService:]Couldn't copy BD_ADDR
2020-11-24 16:26:52.610 bluetoothd[1084:22841] Error: [AppleBluetoothHIDDeviceGen2][_setEventService:]Couldn't copy BD_ADDR
2020-11-24 16:26:52.613 bluetoothd[1084:22841] [setSystemPreference] syncs returns false
2020-11-24 16:26:52.613 bluetoothd[1084:22841] [setSystemPreference] syncs returns false
2020-11-24 16:26:52.746 bluetoothd[1084:22841] [setSystemPreference] syncs returns false
2020-11-24 16:26:52.746 bluetoothd[1084:22841] [setSystemPreference] syncs returns false
2020-11-24 16:26:52.747 bluetoothd[1084:22841] [setSystemPreference] syncs returns false
2020-11-24 16:27:19.656 bluetoothd[1084:22841] [setSystemPreference] syncs returns false
2020-11-24 16:27:19.656 bluetoothd[1084:22841] [setSystemPreference] syncs returns false
2020-11-24 16:27:19.711 bluetoothd[1084:22841] [setSystemPreference] syncs returns false
2020-11-24 16:27:19.712 bluetoothd[1084:22841] [setSystemPreference] syncs returns false
2020-11-24 16:27:19.712 bluetoothd[1084:22841] [setSystemPreference] syncs returns false

Nov 25, 2020 11:34 AM in response to Grendoy

To be honest, It's hard to say. I've managed to break/fix my bluetooth about 10-15 times, but it looks like that this issue appears to be sporatic and the 'fix' that I've posted above should work, but it might take couple of tries. Steps that worked 100% of time are as follows (after 5 - 10 minutes of performing them):


Step 1:

Start off by removing all dongles, clearing nvram and reboot:

sudo nvram -c 
sudo reboot


Step 2:

After Macbook reboots, login to your account and open bluetooth settings window. You should have indication that a scan is in progress. More than likely you will see no devices. Open terminal and kill bluetooth daemon (it will restart automatically after you run kill command):

ps -ef | grep /usr/sbin/bluetoothd | awk -F' ' '{print $2}' | sudo xargs kill -9 2> /dev/null


Step 3:

Go back to the bluetooth settings window, and press 'Back' followed 'Forward' buttons to restart the bluetooth scan. If nothing is found, plugin bluetooth dongle (preferably any BT2.0, but I suspect it would work with the dongle that 'bricked' your Macbook). You will see that the devices are found, now unplug it again and repeat the scan by pressing back/forward buttons. Keep repeating Steps 2 and 3, until internal bluetooth starts working...


Note that if your internal bluetooth device does not start working after 5 minutes or even external bluetooth device stop working, restart your macbook and keep repeating Steps 2 and 3...


Again, based on my observation, this issue fixes itself eventually with these steps, but you have to 'confuse' bluetooth daemon until that happens..


Nov 25, 2020 1:45 PM in response to Loumiakas

Thanks for the detailed steps here. Unfortunately, I've tried for over 15 mins with the dongle that "bricked" the system without any success. Again, I'm still waiting on another dongle to test (third time's a charm I hope!) and hopefully, will be able to unbrick it. If not, I'll have to go to the Apple Store I guess...


That is a real DOS that we have here. I could see people walking in the Apple store with this dongle, bricking MBP one after the other... /sarcasm.

Nov 30, 2020 7:20 PM in response to Grendoy

I don't know if it changes anything, this issue is on a 2016 MBP (my Gf's one). I have another bluetooth issue on my 2019 MPB and I haven't tried anything in here on this one - it's getting serviced tomorrow at the Apple Store. Depending on the fix the 2019 one get, I'll try to do the same on the gf's 2016 one and see if it fixes it. Hopefully they won't change the whole board...


I'll report back if anything interesting arise

Dec 17, 2020 1:55 PM in response to christospappas

If anyone has any recommendations on a good Broadcom USB 2.0 that can be found in the US it would be greatly appreciated. I've purchased both the mushroom type one and the startech one, with neither one doing the trick. Unless the trick is to purchase the Apple dongle? I've been using Aukey USBC to USB converters. I'm feeling stuck and don't really want to get this thing repaired. I feel like I've tried everything in this forum so far.

Jan 2, 2021 5:18 PM in response to overtheborder

I have the same problem as everyone else. The adapter that bricked my internal bluetooth is Hideez that uses CSR 4.0


https://www.amazon.com/gp/product/B0792NSF7M/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1


I'd rather fix this myself rather than backup, get a new logic board, restore. I too would like referral to a 2.0 adapter that fixes this problem reliably and can be purchased in the USA. Thanks.

Jan 3, 2021 3:01 AM in response to AntiHawk

Hey,


I've been trying this a few times with my 2.0 bluetooth dongle (I can scan devices with it) but I don't get any rainbow loader.. it only shows "connecting..." and then a warning sign and "Unconnected device".

I really don't know what to do and I need my MBP on a daily basis.. I can't really afford to bring it back to Apple.. Do you have any idea how I could fix this ?

I'm on Big Sur.. maybe they changed something since your tuto?


Thanks

Jan 3, 2021 6:48 AM in response to raphaeldid

Hi all,


Just got my 2019 MBP back from an authorized repair shop. Almost 1 month wait for the **** laptop! They ended up changing the logical board AND the touch ID (which seem to be the reason why it took so long - there is a shortage of Touch ID devices for my model it seem).


All in all, I'm pretty confident this is something that could be avoided by Apple. This is the kind of behaviour that puts a dent on the brand as it shows that wanting to move in that direction (every component soldered on the board) might be cost effective but brings a lot of issues when having hardware problems - we're talking about a bluetooth adapter here....


As for the other folks, don't want to sound negative here but I've tried all steps posted here, multiple times without any success. I had to buy 3 different adapters without the results we all know and it seem to be a hit or miss more than anything else. In the end, I had to send the laptop back to Apple for them to change the whole internals.


Best of luck!

Jan 13, 2021 6:12 PM in response to orangebeer

the Hideez adapter killed my internal Bluetooth. I bought this 2.0 adapter for $3 https://www.ebay.com/itm/Wireless-Adapter-USB-2-0-1-0-For-Keyboard-Mouse-For-Bluetooth-V2-0-EDR-Receiver-/143337681457?_trksid=p2349624.m46890.l49292 and I tried the magic steps but it didn’t fix the problem. I took it to Apple and they have sent it away. I will update when I get it back. I’d really like them to fix the problem so I can use the adapter to switch between computers.

16-inch MacBook Pro Bluetooth issue

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.