UPDATE: Looks like with OS X Mountain Lion, you don’t have to do the following hack anymore! The Broadcom dongle I describe in this article is supported on OS X Mountain Lion by default!
In fact, the new kext includes support specifically for the! Also, you might want to consider getting the one since the eBay one I got has a bright blue LED that’s always lit and can be pretty annoying at night. MORE UPDATE: There’s been reports that while this guide worked in getting the drivers loaded for the external Bluetooth adapter, some was still stuck with the Apple’s built-in adapter. I’ve added some further tips at the bottom on how you can manually select which adapter to use.
However, since my MacBook’s internal Bluetooth device is actually already dead, I cannot verify this at this point of writing. Please let me know if it works. SOME MORE UPDATES: It seems that a lot of visits to this page comes from users who are looking to try and enable Handoff to work on older Macs.
From what I’ve read and seen, all you need is to get a compatible Bluetooth 4.0 module like the and then enable it using the available. —– End of Update —– If you find yourself wanting upgrade your Mac’s Bluetooth 2.1 support with a USB dongle that supports Bluetooth 4.0, here’s a tip for you to get it on the cheap with those Bluetooth 4.0 USB dongles you find posted on eBay. IOGEAR GBU521 Bluetooth 4.0 Micro Adapter Why I even explored getting a Bluetooth 4.0 USB dongle was due to the untimely demise of the onboard Bluetooth 2.1 chip on my 2010 MacBook Pro. It just went dead without any warning after about 1.5 years of me using my MBP. So I searched for a Bluetooth dongle that has Mac support.
You’d be surprised that there isn’t many that officially states OS X support, especially so for a Bluetooth 4.0 dongle. So in the end, I decided to pick one that apparently used a photo of the dongle (see below) plugged into a MacBook Pro and hoped that it would work.
If you’re wondering which Bluetooth 4.0 dongle I bought, this will bring you to the item page on eBay and it cost me US$12.98 for the dongle. And jumping ahead, it works, so you could go ahead and get the same too, especially if you decide to use the same kext file that I’ll post up in this article as a sample.
Unfortunately, it’s no longer listed as of my last check. Update: In retrospect now that I’ve been using the cheaper eBay dongle, you might want to consider getting the one. The eBay one has a bright blue LED that’s always lit and can be pretty annoying at night. So unless being a little ‘bling-bling’ is your thing, get the which looks a little more discreet. Also, you can sometimes get pretty good deal on Amazon and get this dongle for as low as US$13.50. But of course any Bluetooth 4.0 USB dongle would do as long as it is using the exact same chip as the IOGEAR’s dongle, which is Broadcom’s BCM20702A0 chip.
You can read more about the chip. Now, you’d probably guessed that the dongle didn’t work right out of the box, hence this article. When I plugged in the dongle, Bluetooth support was nonexistent.
However, the USB dongle did register up in the USB Device Tree when I checked with the System Information. What that means is that OS X does see the hardware. However, there isn’t a driver that the OS can find for the Bluetooth dongle and therefore didn’t ‘load’ it up. The solution then is to perhaps hack the kext (kernel extension) that handles the Bluetooth devices and include support for this dongle! And since the newer Macs all have Bluetooth 4.0 support, I’m sure that the drivers included with OS X Lion (10.7.4 as I’m writing this post) would have drivers that support it. And in my case, support for the Broadcom BCM20702A0 chip.
A quick search around the Internet reveals the exact kext to edit. Basically the one that you need to hack is /System/Library/Extensions/IOBluetoothFamily.kext. Within that kext, BroadcomUSBBluetoothHCIController.kext, is another next that is basically the Broadcom driver In order to get to them, just head over the /System/Library/Extensions/ location in finder. Seek out the IOBluetoothFamily.kext and open up the package contents. Note to the newbies, a kext ‘file’ is really just a special folder that holds a collection of files that make up the kernel extension.
And before we continue, I found that the best and sure fire way is to create a copy of the IOBluetoothFamily.kext to a different location, i.e. The desktop or anywhere you like, edit it there and use the to ‘install’ the kext. I’ll come to the installation steps soon, but go ahead and make a copy of the kext file now. Now you have the copy of the kext file, open up the IOBluetoothFamily.kext package, continue to navigate to /System/Library/Extensions/IOBluetoothFamily.kext/Contents/PlugIns/ and you’ll find another kext named BroadcomUSBBluetoothHCIController.kext. Do the same again for the BroadcomUSBBluetoothHCIController.kext and open up the Contents folder.
In that folder you should find the Info.plist file. This is the file that you would need to edit to add the support for your new Bluetooth USB dongle.
But before we edit the file, let’s get some information of the Bluetooth device, specifically the product and device id, that you’d need in order to edit the plist file. You can actually get this information from the System Information utility. Just do a spotlight search for “System Information” if you don’t know where to find it.
Once open, you would need to browse to the USB device tree and look for the bluetooth dongle. Now, it may show up in various names depending on the Bluetooth USB dongle you get, but it should be easy enough to identify which is the exact device. In my case, it just showed up with the name BCM20702A0. Selecting the item reveals the information you need which would be the Product ID and Vendor ID values.
Now the values you see for both the Product ID and Vendor ID are in hex. And if you’ve gone ahead to open up the Info.plist file, you’ll then notice that the idProduct and idVendor values are in integer. So you’ll need to convert it from hex to integer. In my case with the BCM20702A0 chip, the Product ID value is 0x21e8.
Converting 21e8 to integer gives me the value of 8680. As for the Vendor ID, 0x0a5c is 2652 in integer. If you don’t know how to convert hex to integer, just use to do so. Now that you know your Product ID and Vendor ID in integer form, let’s move on to edit your plist file! To do so, just open the Info.plist file with any text editor. As for me, I’m using to do so. You should see a bunch of text in the form of an XML document. Just scroll down all the way to the end till you find a key by the name of “Microsoft Bluetooth 2.0 USB Dongle”.
What you need to do is simply copy and paste a new entry using the “Microsoft Bluetooth 2.0 USB Dongle” entry and edit it with the new information you found (see the red text below). Note that for the new of the device, you can basically use any name you want. What OS X cares about is only the idProduct and idVendor keys as that’s what it uses to match and load the appropriate drivers. Microsoft Bluetooth 2.0 USB Dongle CFBundleIdentifier com.apple.driver.BroadcomUSBBluetoothHCIController IOClass BroadcomUSBBluetoothHCIController IOProviderClass IOUSBDevice idProduct 156 idVendor 1118 Bluetooth 4.0 USB Dongle CFBundleIdentifier com.apple.driver.BroadcomUSBBluetoothHCIController IOClass BroadcomUSBBluetoothHCIController IOProviderClass IOUSBDevice idProduct 8680 idVendor 2652. If you aren’t sure about this, you can use the sample edited kext file here –. You could use my kext file right off the download. However, I’d advice you to try editing it yourself to be familiar with the process since every OS X update is likely to ‘wipe’ off your hacked ‘kext’ and you’d need to re-do the steps again, and it’s always best to edit it from the latest kext file.
Once you have the edited kext. Next is to use the Kext Utility to replace the original kext file. When you load up the Kext Utility, you’d see that it would be running some activities upon start-up. Just leave it to do whatever it’s doing until it’s done with whatever that it’s doing. Then, drag the edited kext file over into the Kext Utility and you will see it installing it onto your system. Again, it will let you know when it’s complete.
When finish, just quit the Kext Utility and reboot your system. Once restarted, your Mac should now recognize the new Bluetooth device and you’re good to go!
But to make sure that the new dongle is the active one being use, hold on to the option key and click on the Bluetooth icon on the menu bar. If you see the version to be 4.0 then you’re ok. The thing with my problem is that the dongle does not work at all by default. I can see if detected as a USB device but that’s it. OS X does not by default recognize it as a Bluetooth device without the kext hack. Once the hack is done, the Bluetooth info in the System Information shows the Bluetooth device information and obviously it’s working now.
I’m not even sure what is going on. The latest mountain lion 10.8.1 doesnt even have a kext at that location, the closest is /System/Library/Extensions/IOBluetoothFamily.kext/Contents/Plugins/BroadcomBluetoothHCIControllerUSBTransport.kext and i have edited that and added another entry under IOKitPersonalities dict BroadcomUSBBluetoothHCIController – IOGear BLE CFBundleIdentifier com.apple.iokit.BroadcomBluetoothHCIControllerUSBTransport IOClass BroadcomBluetoothHCIControllerUSBTransport IOProviderClass IOUSBDevice idProduct 8680 idVendor 2652 but it still doesn’t show this as the vendor/product in sysinfo under BLUETOOTH.
Even after sudo nvram bluetoothHostControllerSwitchBehavior=”never” and reconnecting the dongle. Xcode reports my system is not BLE capable and i’m guessing because it’s not being utilized by my system as the bluetooth device,. I’ve got MacPro 1.1 running on 10.7.5 and I’m trying to install GBU521 and did the kext hack.
I did it with Kext Utility I can see the hack in place on the Info.plist but after reboot it’s still not recognizing the Dongle. Please see below. BCM20702A0: Product ID: 0x21e8 Vendor ID: 0x0a5c (Broadcom Corp.) Version: 1.12 Serial Number: 000272328D26 Speed: Up to 12 Mb/sec Manufacturer: Broadcom Corp Location ID: 0x5d100000 / 2 Current Available (mA): 500 Current Required (mA): Unknown (Device has not been configured) Not sure how to get the dongle to work. Any good ideas?
Cheers, JuPe. Thanks for the info, this is exactly what I need. Except it doesn’t quite work for me OSX 10.6.8 on a mid-2007 MacBook (version: 2,1). I had to use KextBeast to get the modified kext file to load. Same iogear BT USB as mentioned above and with the same product/vendor as your screenshots and sample file. When I plug in the BT USB, the mac’s profile says it goes from Bluetooth LMP 3 to 6, which i think means it can handle BT4.0. However, the BT icon on the mac bar still shows 2.4.5.
I’ve tried enabling/disabling the internal BT. I’ve tried about eight modifications to the.kext: with the additional BT4 line; with the 4.0 replacing the 2.0 line; with the 2.0 updated with the new vendor/product; with your version of the file (which doesn’t have lines about siezecontrol); and with the version of the file that was on my computer. So I’m stuck and hoping you have a few other ideas on what I can try before I throw in the towel. Thanks, Daniel.
Thanks for posting your information about getting the bluetooth dongle working!! I had the same issue – couldn’t get OS X to use an iOGear GBU521 instead of the iMac’s built-in BT chip.
Hi Ken, Thanks for an in-depth and informative post. As mentioned by others above, I followed the steps outlined in the post in order to use an external Bluetooth LE dongle with the iOS Simulator in XCode.
I have a 13 inch retina MBP (2013, Mountain Lion 10.8.2) which has an inbuilt BLE adapter. After installing the IOBluetoothFamily.kext file, for some reason MBP’s in-built Bluetooth adapter has become unavailable in the top bar. Also I can no longer see the “Bluetooth” icon in the system preferences.
Surprisingly though I can still use my wireless keyboard; hence the actual Bluetooth adapter seems to be functional. I removed the IOBluetoothFamily.kext file, but that didn’t help. I tried clearing the NVRAM etc but still the notebook’s inbuilt bluetooth adapter appears as unavailable.
I was wondering if you knew how I could restore/reset MBP’s driver settings for the in-built bluetooth adapter, because at this stage my wireless keyboard seems to be working but I cant change/see any settings or preferences for the in-built BLE adapter. Bluetooth USB Host controller is listed under “USB” in the system profiller, but the actual “Bluetooth” tab/menu item shows – No information found. Thanks once again.
No you do not need those. Let me post you what it is on my OS X 10.9.1 (Mavericks) for the GBU521 driver. (replacing the with ) keyBroadcomUSBBluetoothHCIController – IOGear – GBU521/key dict keyCFBundleIdentifier/key stringcom.apple.iokit.BroadcomBluetoothHostControllerUSBTransport/string keyIOClass/key stringBroadcomBluetoothHostControllerUSBTransport/string keyIOProviderClass/key stringIOUSBDevice/string keyidProduct/key integer8449/integer keyidVendor/key integer2652/integer /dict. Update–so, I can’t seem to get the GBU521 adapter to fully operate. It shows up in System Profiler, just like yours does, Chris, but in the Bluetooth pane in System Preferences it says that “Bluetooth power is off. To use Bluetooth, first you must turn it on.” The Bluetooth status in the menu bar says it’s on, though, and you can still click “Set Up New Device” in the Bluetooth pane in System Preferences, but it doesn’t find anything.
I did get it to connect to my phone, and was able to transfer a photo back and forth, but I can’t seem to get it to work again. Any suggestions? I’m new to using Bluetooth–maybe I’m just not doing something simple? I am on Mavericks on my slightly older iMac.
I am using the same dongle you are. I found that: 1. I needed to download the Bluetooth Explorer from developer.apple.com. (It is in the download called “Hardware IO Tools for Xcode.) 2. It seems to stick across reboots!!!
This makes “knocktounlock.com” work on my older iMac which is why I was going through this in the first place. CAUTION: Have a wired keyboard and mouse on hand. Switching BT adapters unpairs your BT devices from your mac, and if you only have a BT Keyboard and BT Mouse/Trackpad, you’ll be hosed. First off, great post.
I followed all the directions and the dongle (IOGear one) is recognized and is working (paired with a Magic Mouse no problem and the Broadcom shows up in the Bluetooth hardware section on the system). The only hitch is that when I option-click on the Bluetooth icon, it still says version 2.4 (as its does in the system profiler), not version 4.0. I don’t have any 4.0 devices handy to check, since I want to make sure this fix works before I drop the money on the fitness sensors that I’m going to be using. Anyone have any thoughts about this discrepancy? This worked great on my Mid 2011 iMac running Lion. Now I’m finally able to pair with my home theater.
The only problem is that swipes are no longer recognized by my Magic Mouse. When I look at the list of bluetooth devices, my mouse and keyboard appear to not be connected (even though I am able to use them). Using BT Explorer, I was able to activate the built-in radio and restored full function to my mouse. They also now showed up as connected. Is it possible to have both radios active and associate the built-in with my keyboard/mouse and the dongle with my home theater?
Follow-up to my post the other day. I tried using one of the 3 “reset” buttons in Bluetooth Explorer and now I’m stuck in a mode where I’m going through prompts selecting a language, keyboard, network connection, etc. I don’t mind this so much except when it comes to the part about user info. I’m afraid I don’t know/recall how this was done the first time around and I’m concerned if I do it wrong, I won’t be able to get back to the default desktop the way it was.
I already had a bootcamp partition set up and I can see that my data is still there. I just want to abort this “reset” process so that I can try another route. Maybe like what is described here:.
I may be totally alone here, butI can’t get this to work on my Mac Pro 2,1 with 10.7.5. I have put hours into following the steps really to the letter, editing the plist.info in IOBluetoothFamily.kext, calculating the hex conversion, using Kext Utility, Kext Helper (could’t find where KextBeast was installed) but my Belkin 4.0 BT adapter is not recognized as a BT device, but visible in the USB tree in system preferences (and in USB Prober). Even Bluetooth Explorer can’t recognize it as a BT device and thus it cannot reset it either. Please, if anyone has a tip I would be grateful. Thank you for a great post – I have a 2011 27″ iMac, have put am iogear 521 on it. Used BT Explorer to use the Broadcom BT. All OK iMac will pair with Bose BT Speaker now trouble.
Now I have installed my Bluetooth 4.0 in Snow Leopard too, works great so far. But, just as with Lion, Bluetooth Explorer crashes 🙁 Here is part of error- message i get: Process: Bluetooth Explorer 257 Path: /Developer/Applications/Utilities/Bluetooth/Bluetooth Explorer.app/Contents/MacOS/Bluetooth Explorer Identifier: com.apple.BluetoothExplorer Version: 2.0 (2.0f20) Build Info: IOBluetoothFamily-2000032011 Code Type: X86 (Native) Parent Process: launchd 199. Exception Type: EXCBREAKPOINT (SIGTRAP) Exception Codes: 0x000002, 0x000000 Crashed Thread: 0 Dispatch queue: com.apple.main-thread Dyld Error Message: Symbol not found: IOBluetoothLocalDeviceReadExtendedInquiryResponse Referenced from: /Developer/Applications/Utilities/Bluetooth/Bluetooth Explorer.app/Contents/MacOS/Bluetooth Explorer Expected in: /System/Library/Frameworks/IOBluetooth.framework/Versions/A/IOBluetooth Everything else works but is it safe to continue using the Dongle?
Strange no one else seems to get this problem. I have some news, let me explain: I finally manager to install the dongle. I’ve simply unplugged it, replugged, and launched a reboot, and then it worked! It said versionLMP=0x6, and I recognized the belkin informations in the sys info. It WAS working because my mouse did reconnect and finally recognized the new dongle. Handsoff still does not work!
In system informations, near to “Handoff pris en charge” (means handoff taken into account in english) it says NO And I do not have any toggle in System preferences/General. Is it that my Mac does not want this particular dongle for handoff? I’ve been looking at the Yosemite’s kext file and it seems that it’s even more comprehensive compared to the one in Mavericks.
It the IOGear GBU-521 (and even the GMYLE one) officially listed! So there is no reason it should not just work on Yosemite. PID 8680 0x21E8 VID 2652 0xA5C CFBundleIdentifier com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport Dongles GMYLE Micro Nano IOGear GBU-521 Kinivo BTD-400 MediaLink PANBT400 (4.0) MediaLink 2 MUA-BA3 Plugable 4.0 LE Targus ACB10US 4.0 UtechSmart 4.0 (BCM20702) IOClass BroadcomBluetoothHostControllerUSBTransport IOProviderClass IOUSBDevice idProduct 8680 idVendor 2652. Hi Ken, thanks for this post. I’m a bit frustrated though that I can’t seem to make it work for me on my desktop 6-core intel running mountain lion 10.8.5.I first tried using the iogear BLE adaptor on my desktop along with your kext hack as well with bluetooth explorer to try to activate it but no luck. I reinstalled the original kext file to get things back to normal, all good.
I tried same BLE adaptor on my macbook pro 201ll laptop running same mountain lion 10.8.5 and it works without any kext hack. Frustrated, I tried again on my desktop without hack, no luck, with hack again, same result as first time, and read through the comments here and tried turning off bluetooth then inserting dongle to see, still no luck. Any ideas on what else I might try? What is the difference between my laptop working and my desktop not? I can’t move up to mavericks or yosemite because of audio DAW’s I use and plugin’s that won’t survive the transition.
Any help appreciated, thanks. Hi – thanks very much for the excellent post just managed to get an ASUS USB-BT400 working on a mid-2007 iMac and OS X Mavericks. I had a couple of false starts but that was just because I didn’t read your instructions properly. I was editing the Info.plist in /System/Library/Extensions/IOBluetoothFamily.kext by mistake instead of the one in BroadcomUSBBluetoothHCIController.kext. So make sure you navigate through to the Plugins folder to find the correct Info.plist Also, my Broadcom kext had a slightly different name, but it was pretty obvious Integers for the ASUS USB-BT400 are 6091 and 2821, so the code to insert is: Bluetooth 4.0 USB Dongle CFBundleIdentifier com.apple.driver.BroadcomUSBBluetoothHCIController IOClass BroadcomUSBBluetoothHCIController IOProviderClass IOUSBDevice idProduct 6091 idVendor 2821.
Hi Ken, So, I just ordered and received my IOGear GBU521. I’m trying to allow Bluetooth 4.0 with my 5,1 Macbook late 2008 Unibody, running Yosemite. Last night I plugged it in, and within a few minutes suddenly I couldn’t access the internet. I tried all the normal resets and whatnot to get the wifi to connect with no luck. It only went downhill from there.
I kept trying to connect and no computer in my entire house would connect to the wifi. There’s of course a chance that my ISP had issues, but if so, it’s a huge coincidence of timing. Finally, I reset the Mac, for about the 3rd time, after resetting my routers, etc.
This time, the Mac wouldn’t turn on So I reset and opened Safe Mode. No problem there, but still not connecting.
So I restarted again, and this time got the grey screen of death and the 0/ symbal (put the line over the circle like Ghostbusters) and couldn’t get anything to work. I fixed permissions, I tried safe mode again (wouldn’t work). I went to sleep, woke up and tried again. The wifi was working again, so I then ran the utility and reloaded Yosemite. After a few hours, I was in business with my restored hard drive and no loss of info! So now, I’m wondering if the dongle caused all of this?
I haven’t tried it again and wanted an opinion before doing so. Hi Ken, Thank you for this. I purchased the iogear 4.0 dongle and tried it last night on my Mac pro 1,1 running Lion 10.7.
Unfortunately I was unable to get it to work and the last line in system preferences for ‘current required’ shows unavailable and that it is not installed properly. Can you please confirm these steps are correct? I copied the entire folder of IOBluetoothFamily.kext to my desktop and opened the plist file in BroadcomUSBBluetoothHCIController.kext. I added the lines of text and saved and then ran the kext utility with that file.
I noticed that the plist was not installed into the Contents subfolder, but directly in the BroadcomUSBBluetoothHCIController.kext folder. Do you know why that would happen? I copy and pasted it into the Contents folder and restart, however still not recognized under system information USB tree. Thanks for your help. I was able to make IOGEAR Dongle the default upon reboot. My track pad is connected using the Dongle.
I used the Hardwaretools for Xcode 6.1 Bluetooth explorer and selected the Bluetooth Dongle (Broadcom) and it was a success. You can see it in the System InformationHardware overviewBluetooth. But no success with the Airdrop on 2011 iMac. There must be a compelling reason why Apple is going out of their way to prevent this mechanism to work.
Apple suggests replacing the airport card – which is a pain. To use the Bluetooth Explorer on El Capitan you have to download an addon package for xcode called “IO Hardware Tools For Xcode 7” from the site. For this you need a developer account which, to my best knowledge is still free to aquire.
Perhaps the author of this fine how-to will be so kind to update it with this information and maybe even upload the Bluetooth Explorer app right here, for the convenience of the future readers. Without BE one cannot select the controller, rendering the dongle unusable. Hi – I used the kext edit advice to get an ASUS USB-BT400 to work on a mid-2007 iMac – thanks for that! I now have a different problem – having upgraded to El Capitan it stopped working. Initially I thought that I would need to edit the kext again. However, I realised that the good news is that the info.list file now contains the relevant vendor and product IDs for the ASUS dongle. Unfortunately, although I can see the dongle in Bluetooth Explorer, when I try to activate it it just turns off Bluetooth.
I’m trying to check if the dongle might coincidentally have gone faulty but seems unlikely Any suggestions? Hi again in a mac mini core solo 1.5 update to 2.0 core 2 duo and mac os x 10.6.8 and 2 gygas of run insert the BELKIN v4.0 adapter in the usb rapid port Set the instruction and download use the sample edited kext file in this page and finally drag to kext utility, working on this, repaire permissions, close the app and restard. – in preference system the icon bluetooth away – in finder menus bluetooth is not working – in about of this mac bluetooth info can,t find info curiosly apple bluetooth keyboard work perfectly thanks in advance. Hi, Thanks a lot for this very useful and instructive post. I have a Magic Mouse 1 and a Mac Pro 3.1 under El capitan 11.6, and a Belkin F8T065 dongle plugged in the cable keyboard. The mouse worked really fine with your script until Capitan 11.4 or 5. Then I updated to 11.6, and did the kext modification with Kext Utility again, but it’s not working anymore.
Most of all, when I try to select the Broadcom chip in BLE (Apple chip selected by default), it asks for my admin password, then return to the Apple chip by default, and desactivate BT. So the mouse has a very erratic behavior, disconnecting and reconnecting from time to time.
SMC, nvram restarts with startup button or terminal are useful. I’m pretty lost, and wonder if it comes from the mouse or if it is a hardware / El Capitan problem. Any suggestions or ideas? PS: reinstalled OS 11.6, nothing changes.
And the Broadcom chip is well recognized in System informations. I’m trying to follow up your steps, but I cant find Bluetooth Explorer anywhere. Apple has removed it from it’s current version.
“Hardware IO Tools The Hardware IO Tools for Xcode package, available at developer.apple.com, now includes the following apps: Printer Simulator HomeKit Accessory Simulator (17014426, 17014426, 17738621) These three apps have been removed from the Hardware IO Tools for Xcode package download for this release: Apple Bluetooth Guidelines Validation Bluetooth Explorer PacketLogger (18162817)” Do you know where I can get it? Ken is native to the world of technology and this blog is his where he would share his thoughts, tips, reviews and pretty much just about everything technology that amuses him.
He regularly abuses his iPhone, iPad and rMBP. Devices with APS-sized CMOS sensors seems to be a favourite pastime.
His day job involves helping enterprise untangle spaghettis strands and instead, get them to ride on a bus sometimes up in the cloud. Cryptic as it sounds, that's really what he does.