With the release of Yosemite and iOS 8.1, came a new way to connect the many Apple devices that one person can have. This method known as Continuity and Handoff allows a phone call to be answered on a Macintosh computer and transferred to an iPhone along with access to continuing to edit an email from one device to another. These are just a couple of examples of Apple’s new feature set. See Apple’s explanation here.
The feature is designed to work only with newer model Macs and can leave some of us, including Hackintoshers, out of the mix. The requirements call for Bluetooth 4.0 and certain WiFi chipsets to natively enable the feature. Some work from the community has given us the “Continuity Activation Enabler” for older Macs and can even work for some Hackintoshes that have a Bluetooth 4.0 adaptor that is natively support Out of the Box in Yosemite. A cheap Bluetooth adaptor can be found in a lot of places online, but local availability of a solution can be limited.
Best Buy sells at least one Bluetooth 4.0 dongle under their in-house brand Insignia model NS-PCY5BMA. Luckily for us, it sports the Broadcom BCM20702A0 chipset which OS X Yosemite supports, but just not in the Insignia flavor. To enable Handoff, we must get a working Bluetooth 4.0 adaptor at the start. The Insignia one can be used after it is enabled in OS X. What we will look at today is how to get OS X to recognize this adaptor, and then activate the Handoff feature. This guide should work for any adaptor that has the BCM20702A0, but is not recognized under the Bluetooth section in the System Information window.
UPDATE: If you applied this fix in 10.10.2 and then upgraded to 10.10.3 or higher, then you will want to also reference this updated post.
The example we will use today, is a custom-built Hackintosh running an Intel i7-4770k (Haswell) processor while using Clover as the boot loader. The processor and other specs are not particularly valuable in this guide except for these items:
- Insignia NS-PCY5BMA Bluetooth 4.0 USB Adaptor (Dongle)
- AirPort Extreme 0x14E4, 0x8D BCM43xx (Modified HP Wireless card flashed to look like an Apple model)
- Yosemite 10.10.2
- Activated and functioning iCloud and iMessages
It is important that you have a working iCloud and Messages on a Hackintosh for Handoff to work. On a real Mac, this should not be an issue. For guidance on getting iMessages to work on a Hack, you can reference my article from here for this example’s setup.
On this Hackintosh, we must first enable the Bluetooth adaptor through the native bluetooth kext, run the Continuity Activation Tool (CAT), and then tell Clover to patch the Bluetooth Kext to activate Handoff.
Step 1 – Modify IOBluetoothFamily.kext
To get the builtin Kext for the Broadcom BCM20702A0 to recognize the Insignia dongle, we need to add the devices Product and Vendor ID to the kext file. The kext that we need to modify is /System/Library/Extensions/IOBluetoothFamily.kext. Make a copy of it and place it on the Desktop. Once it is copied, right click on it and select “Show Package Contents” to reveal the folder “Contents”. Open the “Contents” folder and then the “Plugins” folder. In there you will see another Kext called “BroadcomBluetoothHostControllerUSBTransport.kext”. Right click on that and select “Show Package Contents” and then navigate to “Contents”.
You should now see the “Info.plist” which is where we will make our edits. Open this with TextEdit (You may need to right click and select Other to pick TextEdit) and add the following code:
<key>PID 569 0x0239 VID 6655 0x19FF</key>
This will work for the Insignia model that we have here, but the same edit should work for most that use the same chipset. You just need to find the Product ID and Vendor ID and convert it from Hex to Integer. In our example the Product ID in hex is
0x0239. To convert it to an integer, go to this converter and input the Product ID minus the
0239 should come out as
569. Do the same for the Vendor id which
6655 (again, omitting the
0x at the beginning).
Once you have the proper IDs in the Info.plist file, you can save it then close all windows. Now, you will need to use a Kext installer to replace the original IOBluetoohFamily.kext that still exists in your /System/Library/Extensions folder.
If the edits are correct, you should be able to reboot the computer and see the Device in the System Information window under Bluetooth.
Step 2 – Activate Handoff for Bluetooth 4.0 Dongles
Even after adding the product and vendor IDs in IOBluetoothFamliy.kext, Handoff will probably still not work on both a real Mac and Hackintosh. This is because Apple does not technically support Handoff through 3rd party adaptors, but can force it to. If you are on a real Mac, you should only need to use the “Continuity Activation Tool” or CAT to do this. It takes care of most things for you to get the adaptors to work with older Macs. We will not cover CAT in great detail here, but you will need the official download from Github which also has some directions on how to use it. We will still need it for out example machine because it helps us activate the WiFi portion of the requirements that Apple wants to have Handoff enabled. Without getting into too much detail about why the Wifi needs patched, it just only works out of the box with newer Wifi adaptors that are shipping with the newer products.
What is nice about CAT, is that it can tell use quickly what requirements we need or need patched. Run it and select 2 to run the diagnostic. If there is an issue with the WiFi, you will see it noted in there. It is not unlikely that you will find more then one thing that it needs to patch depending on what WiFi and Bluetooth hardware you are running. For older macs, you will want to run this with the dongle removed and only insert it when it prompts you to.
On a Hack, dongle detection will not work. All the other patches may still apply.
Step 3 – Activate Handoff on Non-Apple Hardware
On a Hack, CAT can do everything but force the Bluetooth to activate the Handoff feature. We will have to manually get this to patch and will do so using the Clover boot loader.
Clover has many advantages over Chimera, one of which is it’s ability to patch on load, leaving the main filesystem in tact and hopefully preventing software updates from breaking the system. I will try to do most everything that I can in Clover so that it is consolidated in one spot and easier to fix if something does break. For iMessages to work in Yosemite, Clover was the only option at the time so it may be a requirement at this point.
To patch the system to force-enable Handoff, we must add an entry to patch IOBluetoothFamily.kext. Using Clover Configurator, goto the “Kernel and Kext Patches” section and add an entry for the following:
Find* [HEX]: 4885C0745C0FB748
Replace* [HEX]: 41BE0F000000EB59
Comment: Enable Handoff
Export your configuration and reboot your system. If all is well, you should now see the Handoff Supported line in System Information as a Yes now.
Step 4 – Enable Handoff in the System
With Handoff enabled on the Bluetooth adaptor, we now need to check and make sure that the system knows that is needs to enable the feature, We will need to go to Preferences and then to General and make sure that the “Allow Handoff between this Mac and your iCloud devices” is checked.
Step 5 – Sign Out of iCloud then Sign In
Now that we are showing that Handoff is enabled, we need to sign out and then back into iCloud to make sure the connection to your other devices happens. If all is well, you should now be able to see the Handoff icon pop up when you open a Handoff capable app such as iMessages around your dock. The icon will pop up when you have that app open on your phone or tablet.
You should now have fully functional Handoff feature on your Hackintosh!
Conclusion and Recap
To get Handoff to work on non-Apple hardware, we must make sure that we find a compatible Bluetooth 4.0 adapter. In some cases, such as with the Insignia NS-PCY5BMA, we will have to modify the kext to recognize the Device and Vendor ID. Then, we can hack the system to activate the Handoff function through 3rd party USB adapters and even older WiFi cards.
It is important that you have a fully functioning iCloud and iMessages system prior as the Handoff function will need that in order to integrate the exchange with your other devices via your Apple ID.
Another function closer to having all the features of a real mac!