You’re working, listening to music. Or you are about to join a video call using Skype, Teams, Zoom… Or even worse, you are in the middle of that call. And suddenly, your Bluetooth connected headphones disconnect randomly. You try to re-connect, but it’s not working. You check your headphones batteries and they’re full. You switch off/on Bluetooth on your Mac, but you still can’t connect. There is no error message, no feedback whatsoever. Typical Apple: they assume things will just work, so when they don’t, you’re screwed because they didn’t consider that possibility. So no need to inform you, let alone help you, right? If you’ve ever found yourself in that situation, I hope these tips will help you.
Reset the Bluetooth module
First, try this. It’s the most repeated answer when googling the issue, but to be honest it’s quite lame and random because it seems to work sometimes, and you won’t know if it worked before trying a few times. As I said, no help from Apple, no error/feedback messages so that forces you to really test and try and experiment. LAME. Anywhoo, let’s try it!
- While holding the Shift + Option (Alt) keys on your Mac’s keyboard, click the Bluetooth symbol in the top-right corner of the macOS menu bar.
- You’ll see a Debug item in the menu, go ahead and click it.
- Then, click Reset the Bluetooth module.
- Some people also suggest you need to restart your Mac (Windows style).
As I said, this sounds extremely lame, especially if you need to restart your machine for your Bluetooth to work again. If you ask me, restarting your machine SHOULD already reset everything, right? Anyway, try with and without restarting and see if that works for you.
The reason I gave you this “solution” first is that it only requires a few clicks (and maybe restarting your machine). If it doesn’t work for you, try the next tip.
During my quest for a definitive solution that does not involve restarting my machine, I discovered a tool called blueutil. It’s basically a CLI for Bluetooth on OSX. To install it, follow these instructions:
# install brew install blueutil # update brew update brew upgrade blueutil # uninstall brew remove blueutil
# install port install blueutil # update port selfupdate port upgrade blueutil # uninstall port uninstall blueutil
Only for the brave…
git clone https://github.com/toy/blueutil.git cd blueutil # build make # install/update git pull make install # uninstall make uninstall
Once installed, run this command:
blueutil -p 0 && sleep 1 && blueutil -p 1
Now, that worked for me! It basically does the same than the previous tip, but without restarting. I have created an alias for that command called fixbt, so whenever the Bluetooth module decides it’s time to f*ck with me just before an important call, I quickly run it and all goes back to normal. If it doesn’t work for you, let me know!
Note to Apple
Dear Apple. Please fix this issue, thousands of people have suffered it for years, and there is no reliable, official solution, despite the many updates we’ve installed. Also, please, in general, provide feedback to users. Errors happen, it’s ok. What’s not ok is to be confused when they happen, without knowing the reason and possible solutions. Thank you.
This was not an issue initially when I got my Mac Mini although it has had plenty of issues with my monitor.
I know there has been plenty of complaints about Bluetooth issues ever since the M1 Mac’s have come out.
Of course with everything soldered to main board your looking at a major issue if the Bluetooth hardware is at fault. Personally, I just think Bluetooth has been awful with Windows 10 as well. Seems like its just a flaky technology that is getting less stable not more. I used a older wired Apple keyboard for awhile until I found a deal on a Magic keyboard and a Apple mouse. I suspect this could from that recent update that is rather mysterious with Apple not really saying much about it.
Thanks. The blueutil -p 0 && sleep 1 && blueutil -p 1 allowed me to reset the bluetooth module when even rebooting failed to restore ability to pair my A1016 keyboard using blueutil.