How to Fix iMessage
Chapter: 3.1 - Apple ID Verification
All of Apples iCloud services including iMessage rely heavily on a correctly set up and registered AppleID, there are three different types of AppleID :-
It doesn't matter what type of account you have or if your AppleID is registered as
@me.com, @mac.com, @icloud.com or a non-Apple email address, if your going to use it with iMessage it must be verified.
You can check the 'Verified' status of your AppleID by logging into Apple's
on-line Account manager :-
In order for your AppleID to have a 'Verified' status you must have an authenticated payment method registered against your account which will confirm/validate your name and address, the main reason behind this is to stop people from creating false AppleID's and using them to send spam and cause general chaos in the iCloud .... the easiest payment method is to register a valid Credit Card.
The most secure way to register a payment method against your AppleID is through iTunes or the App Store, do not use a web address in a browser, there have been several reports of fake AppleID phishing sites, most of these scams work via fake emails that contain a rouge link to a fake AppleID log-in page, the email usually asks you to confirm or update your AppleID, don't be fooled even if the address looks like it might reside on legit server.
Note: Some users have reported success at using their PayPal Account as a means of AppleID Verification. I personally can not confirm this but there are quite a few positive posts on this thread that indicate that it works.
For veteran OS X users its possible that you have an old AppleID (@mac.com ..etc) which you haven't used for a while, but if it has a credit card registered against it that is still current then you could try using it to test iMessage.
If your AppleID already has a Verified status but you are still experiencing issues with iMessage login or authentication, you could try changing your AppleID password, this is one of the oldest tricks in the book for resolving iMessage login issues. It has also been reported that sometimes updating your account details (address ..etc) or purchasing something from the AppStore or iTunes (even a free item) can also revive iMessage functionality.
Do not be tempted to remove your credit card info once your account is verified, iMessage will stop working at some point if you do.
You should also be aware that once the credit card expires on your AppleID, you are given a grace period which seems to be around 30 days to register a new one. If you do not register a new, valid credit card within the grace period, iMessage will stop working.
Update: Feb 2015 - Apple have now enabled Two Factor Authentication for iMessage, at the time of writing it is not a requirement to have 2FA on your iMessage account but some users have reported that they were unable to use iMessage until they enabled 2FA .... its possible that by enabling 2FA resets some flags against your AppleID in the iMessage database - any feedback on this tip would be appreciated.
Chapter 3.1 Summary: Your Apple ID must have a Verified status for iMessage and Face-Time to work |
Chapter: 3.2 - Network Interfaces (BSD Names)
Open 'System Information' [
About this MAC -> More Info -> System Report] and click on 'Ethernet Cards' , you should see a list of installed NIC's on your system, for each NIC you will see a list of parameters such as
Type, Bus, VendorID, DeviceID ... etc
Look at the parameter called 'BSD name' for each of your network interfaces, they should be called 'en0', 'en1' ... etc

BSD names should always start with 'en0' and be numbered sequentially for the number of NIC's in your system, any additional NIC's such as USB or WiFi devices should have BCD names that
follow the on-board or PCI devices.
Example:
A Gigabyte GA-Z77-UD5H motherboard's has two built-in LAN ports (Intel and Atherios). In this example the user can access the internet and email on both ports but can not use any Apple on-line services such as iMessage, iCloud, App Store and iTunes (on either port).
On investigating the BSD names I found that the Intel port was named 'en2' and the Atherios port was 'en1', there was no 'en0' .... how this occurred during OS X install i'm not sure ? but I've seen this happen more than once on different systems.
If you find that you have no 'en0' or have 'gaps' in the BSD Name number sequence or things just don't seem correct with your network hardware/software then the first thing you could try is re-setting the Network configuration ...
Re-setting OSX's Network and System configuration.
Using Finder navigate to the root of the system drive and then to :-
Note: You may need to use show all files or press <SHIFT><CMD>. to see these folders/files
First make a backup copy of the folder :-
SystemConfiguration
Save it somewhere in your user folder such as Documents/Sys-Backup just in case something goes wrong.
Once you have a backup delete the original SystemConfiguration folder in /Library/Preferences/
Empty the trash and reboot.
OS X should re-discover all your Network Interfaces and rebuild the network configuration files, hopefully now with the correct BSD names. If the BSD names are still not correct and you have additional add-on PCI or USB NIC's then try removing them and delete the SystemConfiguration folder again, reboot and let OS X assign the 'built-in' NIC's first, then re-install your add-on NIC's one by one.
This method has good chance of working .... if not then a re-install usually does the job.
You'll know if this particular issue is resolved once you can use
some iCloud service such as the App Store and Software updates however iMessage may still not work....
Note: Its also a good habit to delete the SystemConfiguration folder if you have changed your SMBIOS type or any of the key system ID's such as MLB, ROM, S/N in your clover config.plsit file as MacOS keep copies of previous configuration 'sets' in these files which will show up as extra devices in Sys-Prefs->iCloud->Account Details->Devices which you will be unable to remove until you rebuild the Configuration Files.
It's always worth checking your BSD names first-thing after a OS X install, or after you've added or removed any NIC's. If all your Network Interface's have good BSD names then it time to check if they are flagged as 'Built-In' - for this task I recommend using DPCIManager 1.5, which you can download from here:-
http://sourceforge.net/projects/dpcimanager/files/
Once installed run it and make sure your on the 'Status' tab, at the top of the page will be a list of all your network interfaces along with their BSD names, as explained above, the BSD names should start at 'en0' and be numbered sequentially with no 'gaps', additionally the 'Builtin' check box next to each interface must be checked in-order for iMessage to work on that interface.

If the 'built-in' check box is not checked you should make sure you have the following key and string in your boot.chameleon.org.plist (if using Chimera or Chameleon):-
Code:
<key>EthernetBuiltIn</key>
<string>Yes</string>
If you
do have this key and string in your plist but the 'Built-in' check box is
not ticked then click on the 'eye' icon for the appropriate interface (at the right hand side of each entry), you should be given an 'EFI string' that you can add to your boot.chameleon.org.plist in /Extra, this string is required by OS X for correct iMessage operation, for most users the Boot-Loader will identify the correct EFI string and automatically inject it, however in some rare instances this does not work in which case you should manually inject the NIC(s) EFI string(s) identified by DPCIManager.

Clover users can manually add the EFI String by editing their config.plist or use Clover Configurator and add the EFI string on the devices page.
If it does not work straight away, you may have to try one or two of the other steps in the guide such as deleting all previous iMessage setup data (See Chapter 3.3 below), reset AppleID password, delete nvram.uuid.plist in /extra ... etc.
All of my hackingtosh builds have 'en0' and 'en1' for the on-board ethernet NIC's, if you have Ethernet and WiFi like my trusty Sony Vaio-SE2 laptop hackingtosh, the Ethernet port should be assigned to 'en0' and the WiFi should be 'en1' (see above DPCIManager 'Status' screen grab).
If your working on a new build or clean install then I recommend you get everything working via a wired network interface first then add/enable the WiFi interface. If you jump straight to the WiFi interface you may experience odd BSD NIC naming.
INFO: There is a bit more information on the issue with BSD names and a possible way to avoid the problem in the future
here.
Chapter 3.2 Summary: NIC BSD names should be 'en0', 'en1' ... etc and numbered sequentially with no gaps.
|
Chapter: 3.3 - Reset iMessage Configuration files
If you are starting with a clean OS X install then there is no need for you to perform any of the procedures in this chapter .... however if you have been trying to get iMessage to work for sometime and have been using different System ID's and/or Apple_ID's then the chances are that the iMessage configuration and cache files could contain invalid or non-useful data.
Another sign of corruption of the configuration files is if OS X asks you for your AppleID password multiple times each time you boot OS X .. this indicates that one or more of the background services are using a temporary configuration file as the system one is corrupted.
By deleting these files we can force iMessage to reset-itself and re-build the configuration files which will force iMessage to re-authenticate it-self with Apples iMessage servers. I always recommend performing this procedure after making any significant changes to OS X's System ID's such as the S/N, SmUUD (System_Id), System Type, MLB & ROM.
If your booting with Chameleon or Chimera then i also recommend that you reset your FileNVRAM.plist by following the procedure in
Chapter 6.2 after performing the following.
Before commencing you should logout of
all Apple iCloud services and disconnect from your network, then reboot this way OSX will not start the iCloud services and allow us to remove the config files.
In order to actually delete the files you will need the ‘Show all Files’ utility or similar for displaying hidden files and folders ... you can download 'Show all Files' form the
community section of this site.
Start ‘Show all Files’ and select 'Show' ..... start-up Finder and navigate to:-
Code:
/StartupDrive/Users/~Username/Library/Caches
Delete all files and folders beginning with the following prefixes:-
- com.apple.iCloudHelper
- com.apple.Messages
- com.apple.imfoundation.IMRemoteURLConnectionAgent
Now navigate to:-
Code:
/StartupDrive/Users/~Username/Library/Preferences
Delete all files and folders beginning with the following prefixes:-
- com.apple.iChat.
- com.apple.icloud.
- com.apple.imagent.
- com.apple.imessage.
- com.apple.imservice.
- com.apple.ids.service
And these two files :-
- com.apple.madrid.plist
- com.apple.imessage.bag.plist.
(
Optional) delete the message folder:-
Code:
/StartupDrive/Users/~Username/Library/Messages
Note: The above folder is your local message store, you may want to make a backup of this folder before removing it .... most of your recent conversations (contacts & messages) should be recovered and re-synced from your iCloud account once iMessage is working correctly, this can sometimes take a while so be patient. It is not always a requirement to delete this folder to get iMessage working, try without removing it first if you want, if you continue to have issue try deleting it and empty the trash.
After performing any of the above deletions ensure you empty the trash before rebooting. You may find that it is impossible to delete all of the cached files via the OS X GUI due to services automatically restarting .... if you really want to persist and remove all trace of the files you can boot into OS X Single User mode :-
- Legacy Boot-Loader users should boot OS X with the '-x' flag
- Clover users can simply press the <Space> bar on the OS X boot entry and select Single User mode.
To Empty the trash from the command line enter the following commands:-
Code:
/sbin/fsck -fy
/sbin/mount -uw /
sudo rm -rf ˜/.Trash/
Performing the above procedures either individual or all together has been confirmed to help in resolving multiple iMessage issues, removal of these plists should not cause any additional side effects .... however as with all things Hackingtosh it's always worth ensuring you have a up-to-date backup before you start deleting anything.
Resetting the Security Service settings :-
Around the 8th or 9th of August 2014 a 'glitch' in Apples backend servers logged many iMessage users out and found they were unable to reactivate iMessage despite following all the tips in the guide, the following procedure fixed the issue for myself :-
With 'Show all Files' enabled navigate to:-
Code:
/StartupDrive/Users/~Username/Library/Preferences
Delete all files beginning with the following prefixes:-
- com.apple.identityserviced
- com.apple.ids.service
- com.apple.security.
This procedure may help with future persistent iMessage sign-in/authentication issues related to the security service .... if you do this make sure you perform all of the above deletions too.
You'll probably find that you are unable to delete some of the files because they are being accessed by the associated services .... in this case, open Activity Monitor and try killing the following services :-
- identityserviced
- imagent
- securityd
- securityd_service
Try deleting the files again (you may have to do this a few times before it works) .... try and empty the trash before re-booting .... you may find it necessary to boot OS X in Single Use mode and delete the files and empty the trash using terminal commands (
see above).
IMPORTANT: After performing any of the above file and/or folder deletions, be sure to Repair Permissions via Disk Utility, reboot and check iMessage functionality.
Reset iCloud KeyChain :-
If you are using the option to store your KeyChain data in your iCloud account and are continuing to have iMessage authentication issues then in some rare cases, it is possible that the keychain data in the cloud is out of sync with the locally stored keychain data.
Although i have never personally encountered this issue, a number of users have reported that resetting/removing keychain data from their iCloud account allowed them to get iMessage working. The most likely cause of this is if you have had a number 'ghost' devices associated with your AppleID caused by multiple changes of MLB and/or ROM.
Personally i don't like the idea of storing all my passwords on Apples servers and i'm not a fan of the 'tracking' features of iCloud so i disable them on all my hacks in System Prefs (System Prefs --> iCloud) which could be why i've never encountered the problem.

More information about this can be found by reading this
Apple FAQ, the procedure for resetting/removing iCloud Keychain data on OSX and IOS devices can be found at the bottom of that page.
Reseting IOS 8 Network Configuration :-
If you are using iMessage in-conjunction with a IOS 8 mobile device(s) then after performing a Network and iMessage reset on OS X as detailed above, you may also need to reset the network configuration on your IOS 8 device(s) .... this is due to a known bug in IOS 8, IOS 7 does not seem to suffer this issue.
- Log out of iMessage and Face-Time on all IOS and OS X Device(s).
- Turn off WiFi on your IOS Device(s).
- On IOS Device go into Settings -> General -> Reset -> Reset Network Settings.
- The IOS Device will turn it-self off and back on again.
- Once IOS Device reboots, it may ask for your Wi-Fi and/or Apple ID Password.
- Start iMessage on your IOS device(s) and turn it on, wait for verification.
- Once verified turn on iMessage on your OS X Devices.
- You should receive 'This Phone is in use with <Computer Name> notification.
- You should get a verification code to complete the coupling of IOS device(s) with OS X.
To see if the reset has been successful, send yourself a test message ... it should appear on all your OS X & IOS Devices, thank's to
@esafeddie for this IOS 8 tip.
Chapter: 3.4 - WAN IP Device Quota
Symptom: You are getting the contact Apple alert with a Customer Code every time you start iMessage, the customer code is the same each time you boot and your are 100% certain that all your critical ID's are correct and persistent. You've already contacted Apple (maybe multiple times) who tell that iMessage should work, but it still gives the same customer code.
NOTE: The wording of the alert may be different to the above
Cause: It's possible that the Apple on-line servers have logged too many different Apple devices and/or IP addresses against your routers WAN IP address. I know this sounds a bit of an odd thing for Apple to do but its does seem to be the case in some situations.
I repair a lot of Mac systems so i have quite a high flow of Apple machines and devices going through my network, Apple introduced this IP quota check quite a few years a-go and according to the Apple Tech I spoke to was the original reason for the Contact Apple with customer code message.
The point here is that if you have had non-persistent NVRAM values on your hackingtosh at some point in the past, then its possible that the S/N, MLB, ROM ... etc will get logged as a 'Ghost Devices' just like if it was a real device. You can sometimes (but not always) see these 'Ghost Devices' in the 'My Devices' section of Apples on-line
iCloud system by clicking on 'Settings'.
After a certain number of individual devices (or miss-matched ID's) have been registered or associated with your WAN IP then Apple systems can in some situations consider that IP address as a possible cyber threat (think hackers and spammers doing lots of naughty stuff) and flag the device/account with a block so that no more devices can access Apples messaging systems from that Internet IP Address.
If your ISP provides you with a WAN IP via DHCP from a pool of addresses (most do) then you'll most likely never see this issue as its quite likely your router will have changed it's WAN IP at some point over the last three months, be it after a power cut, reboot, firmware update .. etc.
Once your router's WAN IP has been changed, the WAN IP Quota will also be reset ...
However if like me you have a static IP for your router or you know for a fact that your routers DHCP IP address has been the same for a very long time, then it's possible that your being blocked by Apples systems for having a high volume of devices associated to your WAN IP.
Solution: There are three ways I know the problem can be dealt with:-
1. If your router gets its WAN IP via DHCP (automatically assigned IP address) then the best thing to do is to force an DHCP refresh by simply turning off your router for as long as you can.
Before you start make a note of what your current WAN IP is by visiting :-
http://www.whatsmyip.org/
Now turn off your router, preferably overnight, the longer the better as there will be more chance that your ISP's DHCP server will reallocate your old WAN IP to someone else.
When you turn everything back on you should visit the link again and see if your routers WAN IP has changed, if it has then I suggest resetting the iMessage configuration files as detailed in the previous chapter then reboot and try iMessage again, hopefully it will now work.
2. If your ISP assigns your router with a Static WAN IP then you could try contacting your ISP and ask them to 'rotate' you to new WAN IP, it a normal thing to request (you could tell them that you've been under a hacker attack or something like that) your ISP Should be able to do it within 24 hours if you have the WAN IP registered with a DDHC service then you may have to manually update via the appropriate web UI.
3. Contact Apple Support and give them the customer code but explain that you think its a WAN IP problem ... not many Apple Tech's i've spoken too know about this issue so you may need to ask to speak to a iMessage expert and tell them you think you got a WAN IP Quota issue.
I first detailed this issue a long time ago at the end of the original guide (now
Chapter 8 - 'What causes this Message') but i didn't do a very good job of describing the problem or describing the solution very well and since then the contact Apple message with a customer code has primarily become associated with iMessage authentication issues (bad MLB/ROM ... etc).
I should point out that despite this issue sounding a little-far-fetched, i learned of it first hand from a Apple tech guy .... make of it what you want but in my case he reset my WAN IP Quota and it solved my iMessage issues, additionally i can confirm that the method of forcing a WAN IP change by powering off your router for as long as possible has
worked for a number of users on the forum.