There are a ton of threads about this and I just wanted to put all the findings in one place with the updated procedures since there have been a lot of modifications recently.
Basically
Handoff requires a built in Bluetooth 4.0 LE card to work but Apple has blacklisted some of the models that came standard with BT4.0LE so a modified Kext is required.
If your system does not have BT4.0LE you will need to replace the card (and possibly modify Kext) to get handoff to work.
Breakdown:
Macbook Air:Early 2008-2010: Requires new bluetooth/wifi card and modified Kext.
Macbook Air:Mid 2011:Requires modified kext only
Macbook Air:Mid 2012-2014: Works OTB
cMacbookPros:Mid 2009-Mid2012 requires new bluetooth/Wifi card and Modified Kext.
RetinaMacBook Pros: Works OTB.
cMacPros:Early2008-2013 requires new bluetooth/Wifi only
NMacPros:Works OTB .
MacMini:Early 2009-2010 requires new bluetooth/Wifi Card and modified Kext.
MacMini:Mid 2011-2012 Only requires Modified Kext
iMac:Mid 2007-2011 requires bluetooth/Wifi Card and Modified Kext
iMac:Late 2012-2013 works OTB
I will also update the list above if someone lets me know that something is off. Since I don't have access to all these machines I cant try them all out to know 100%
Kext Mod. TUTORIAL
Modified from Dokterdoks original
1. Download and install 0xED in your Applications folder, you can get it from here:
http://www.suavetech.com/0xed/
2. Download and install KextDrop in your Applications folder, you can get it from here:
http://www.cindori.org/software/kextdrop/
3. Repair your disk permissions. Go-> Utilities-> Disk Utility, then First Aid, Repair Permissions.
Then open Terminal and type :
Code:
sudo nvram boot-args="kext-dev-mode=1"
4. Restart your machine.
5. Open Finder, type CMD+Shift+G and go to /System/Library/Extensions/
6. Copy the files below to your desktop and then delete the originals.
Make an extra backup copy of the 2 files in a separate folder just in case something doesn't work.
Code:
IO80211Family.kext
IOBluetoothFamily.kext
7. Go to Terminal, and type:exactly as below:
Code:
sudo kextcache -system-prelinked-kernel
then
Code:
sudo kextcache -system-caches
8. Reboot (At this point your wifi will not be working)
9. Go to Terminal, and type: (exactly as below)
Code:
ioreg -l | grep "board-id" | awk -F\" '{print $4}'
10. Your result should look like : Mac-742912EFDBEE19B3, (yours might be different.). Copy it to your clipboard (Select and CMD+C). Don't close terminal yet.
11. Open Finder and hit CMD+Shift+G, go to ~/Desktop/IO80211Family.kext/Contents/Plugins/AirPortBrcm4360.kext/Contents/MacOS
Note: if you have a different OS language, you might need to replace "Desktop" in the path with your local translation.
12. Right Click on AirPortBrcm4360, and choose OPEN WITH: OTHER: 0XED
13. In the upper right hand corner under search text" search for "Mac-" (without the quotes).
14. Look at the first result, for example, it might be Mac-00BE6ED71E35EB86
15. Delete the numbers after Mac- and Manually type your Mac- numbers (from step 8 be very careful not to delete anything else just the numbers.
16. Press down arrow till you get to the last Mac- (should look like Mac-2E6FAB96566FE58C)
17.Delete the numbers after Mac- and Manually type your Mac- numbers (from step 8 be very careful not to delete anything else just the numbers.
18. Click Save (the red circle)
19. Open Finder and hit CMD+Shift+G to open the "Go to" popup, and go to ~/Desktop/IOBluetoothFamily.kext/Contents/MacOS
20. Right Click on IOBluetoothFamily, and choose OPEN WITH: OTHER: 0XED.
21. In the SEARCH field (upper right corner) type:MacBookAir then enter.
22. You will find a block of text containing
Code:
'MacBookAir4,1''MacBookAir4,2''Macmini5,1''Macmini5,2''Macmini5,3'
Manually replace the numbers with ones only so they all look like:
Code:
'MacBookAir1,1''MacBookAir1,1''Macmini1,1''Macmini1,1''Macmini1,1'
Important: Be careful not to add any character while doing the replacement.
23. Click SAVE (the red circle button) and quit 0xED.
24. Open KextDrop, and Drag and drop the IO80211Family.kext that you modified into the window.
25. Click INSTALL.
26. Repeat steps 24 and 25 but for your modified IOBluetoothFamily.kext
27. Go Back to Terminal, and type the following commands. Wait for each one to finish.
Code:
sudo kextcache -system-prelinked-kernel
You should see:
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext IOBluetoothFamily.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext AirPortBrcm4360.kext
Code:
sudo kextcache -system-caches
Nothing should show here.
Finally
Code:
nvram -p" by "nvram -p | grep "kext-dev-mode" | awk -F'=' '{print $2}'
If printout says "1" then you are in kext dev mode and your new kexts will be allowed to run.
28. Reboot. Make sure you have an Internet connection for the next steps.
29. Go to > SYSTEM PREFERENCES> GENERAL, at the bottom click ENABLE HANDOFF.
(if this is not available then something went wrong and you have to use KextDrop to put your old kexts back in then run
Code:
sudo kextcache -system-prelinked-kernel
Code:
sudo kextcache -system-caches
again, repair your permissions and start over)
30. Go to > SYSTEM PREFERENCES> ICLOUD, click on SIGN OUT.
31. On your iOS Device, go to SETTINGS> ICLOUD and SIGN OUT.
32. Restart your Mac and iOS device.
33. Go to > SYSTEM PREFERENCES> ICLOUD, and enter your credentials to sign in. (make sure keychain is active)
34. On your iOS Device, go to SETTINGS> ICLOUD and SIGN IN.(make sure keychain is active)
Troubleshooting:
1:Make sure your keychain is enabled under Preferences-> iCloud on both devices.
2:Make sure you iDevices have a charge over 25% (sometimes it turns handoff off if battery is too low)
3:Make sure Handoff is enabled under Settings-> General-> Handoff on iDevices
4:Make sure they are on the same wifi network and bluetooth is on on all devices.
5:Make sure you aren't pairing your devices under bluetooth.
Hopefully this can be one place to get all the facts strait.
Goodluck!
Thanks to DokterDok,MacVidCards, mikecwest, Lem3ssie and anyone else I forgot...