Jump to content

El Capitan - Chameleon iMessage (NVRAM, FileNVRAM.kext - working)


Florian U.
 Share

15 posts in this topic

Recommended Posts

Dear Mac users,

 

I'd like to talk about iMessage, El Capitan and Yosemite.

 

I've been using Mac OS X on a Maximus V Gene motherboard with an i7-3770K processor for quite some time now. With the introduction of Yosemite I needed to figure out a way to make iMessage work as it included changes around the same time with validation of MLB and ROM values that were reported by the system and the NVRAM.

 

Here's my basic setup: Chameleon boot loader (previously regular flavor, now ENOCH), drop the Chameleon.plist, insert SMBIOS.plist, FakeSMC, IntelE1000-Ethernet.kext and my systems is working. To enable iMessage I had to install the FileNVRAM.kext (1.1.4 package) and FileNVRAM.dylib (1.1.4 package) file onto the USB stick containing the chameleon boot loader. With this setup, I was able to boot Yosemite fine and get a working NVRAM. However, keep in mind that you have to create the /Extra folder on the hard drive of your OS X install and make it writable by anyone. Then the FileNVRAM.kext is able to create the nvram.1d34-12d4d1234-1d341234.plist ( ) which contains the data you have written. Whenever I needed to boot the system with -v -f or when doing software updates, I had to use a second Chameleon stick that did not include the FileNVRAM.kext and dylib files. (If booting with -v -f and FileNVRAM installed, the system would crash on caching the kexts) I would then boot the system, run kext utility or similar permissions-checking and kext-caching applications and reboot with the FileNVRAM-USB stick. This was my full working arrangement. Tedious, but worked excellent. Never had a problem with iMessage, FaceTime, iPhone Calls, AppStore, iTunes or iCloud. So far so good, but it was time to move to El Capitan.

 

In El Capitan I encountered the problem that kexts cannot be passed through the Chameleon boot loader but have to be installed directly into /S/L/E and have to be cached by a running system (usually just boot the same SSD from a real Mac). This forced me into a predicament with the FileNVRAM.kext which had to be loaded through Chameleon as it wouldn't otherwise boot. So by trial and error I examined a problem with the FileNVRAM.kext on 10.11.3 which resulted in it not being loaded, no matter where you put it. Reason why? The Info.plist of the FileNVRAM.kext has the following code written in it:

<key>OSBundleLibraries</key>
<dict>
	<key>com.apple.iokit.IOStorageFamily</key>
	<string>1.0b1</string>
	<key>com.apple.kpi.bsd</key>
	<string>8.0b1</string>
	<key>com.apple.kpi.iokit</key>
	<string>7.0</string>
	<key>com.apple.kpi.libkern</key>
	<string>8.0d0</string>
	<key>com.apple.kpi.mach</key>
	<string>8.0d0</string>
	<key>com.apple.kpi.unsupported</key>
	<string>8.0b1</string>
</dict>

Not sure if you spotted the error yourself, but the IOStorageFamily version is too low for El Capitan. This OS X ships with 2.1 instead and the kext simply refuses to load. If you change this value in the Info.plist file, the kext is loadable. This is more of a dirty patch than a correct solution. So what happens next: I got my El Capitan working again with the same approach as above, but no FileNVRAM module or kext anywhere, neither Chameleon, nor OS X. When the system is booted up I would install the FileNVRAM.kext into /S/L/E, onto the /E/E on the Chameleon stick and in the /E/E folder on the hard drive. Same with the module, /E/E on both hard drive and chameleon stick. Now I would have to run kext utility again to precache the FileNVRAM.kext into the system and reboot. Sometimes it wouldn't boot up, sometimes it would "break" the system (fixable by dropping FileNVRAM from all instances and touching /S/L/E and running kextcache -u / from single-user mode or external system) - but most of the times it just works. NVRAM is capable of saving and creating the /Extra/nvram.xxxxxx.plist file and returning the required MLB/ROM values after being saved - even after reboot. Thus I have managed to get FileNVRAM.kext working by this trick in El Capitan.

 

Despite this solution working for me and probably others, my hope is that there is someone capable of updating the FileNVRAM.kext file for El Capitan and its latest Xcode? The kext itself is still working, but the dependencies are off and thus causing the issues.

 

Thank you and have fun!

Florian

 

P.S. Edit: Here's the files I used. (dylib and kext) http://uploaded.net/file/uc9c18wc(zip-file of the Extra folder)

  • Like 3
Link to comment
Share on other sites

hi Florian,

have tried to use the IOStorageFamily.kext against from Yosemite, and if so with what result?

It may then be that you need to install other drivers that are related with  IOStorageFamily.kext from Yosemite, otherwise the PerLinked kernel will not created.

Do you understand that what I mean, it's an attempt.

Link to comment
Share on other sites

hi Florian,

have tried to use the IOStorageFamily.kext against from Yosemite, and if so with what result?

I'm the type that doesn't like to mess with the original files from Apple, thus I adjusted the FileNVRAM.kext version dependencies, which fixed the issue. It could possibly eliminate the need to change the kext, but Yosemite runs on IOStorageFamily 2.0 (El Capitan 2.1) so wouldn't think of a big difference in terms of the other bugs that are well known among the users of Chameleon/FileNVRAM.

Link to comment
Share on other sites

I can not test on my AMD Hackintosh because it will not work with my amd system  :( .

Link to comment
Share on other sites

I can not test on my AMD Hackintosh because it will not work with my amd system  :( .

 

Are you using Chameleon? Or what boot loader are you using? Is your NVRAM functional? Does your iMessage work? Curious - as I still think AMD does make excellent products, yet they haven't gotten the attention they should in the past years. Maybe the new processor line-up is going to change that a bit. Thanks to PS4/XBox One  

Link to comment
Share on other sites

Florian, ....on one partition, I have installed the NVRam, but no chance to work iMessage ....it will not work on my amd system.

As far as I can remember has only worked once, then never again.  .... but this is a general problem --> icloud und imessage are not working on all amd system. :(

but I will test it tonight and will send a report.

Link to comment
Share on other sites

Here is an example how will work iCloud and iMessage on El Capitan. I have just gone through the individual steps and I am sure that it works. But since I do not own Apple code ==> and that is the reason why the rest did not worked for me icloud+iMessage ==> this code you have to request by Apple. I've had no need, so I've also never used and did not miss. Who has such an access code from apple, like may test and reports.
 

**the thanks goes to lpukraine, he had reported me in October 2015. Unfortunately, I had at that time, very little time, so I could not test. Sory lpukraine!  :thumbsup_anim:

here is the link: http://www.insanelymac.com/forum/topic/282821-icloud-for-amd-hackintoshes-a-workaround/page-4?do=findComment&comment=2172118

 

OK.

Open any app which use iCloud sync. For example Calendar.app

1. click on the Calendar menu item at the left top

2. click on the Add new account

3. select CalDav (don't select iCloud in the list) and click on the Continue

4. select Manually from the dropdown

5. enter your login (****@icloud.com) and password

6. enter caldav.icloud.com in the server field

7. click on the Continue

 

Now you have connected iCloud calendar. You can open iCloud panel in System Preferences and you have to see that checkbox for Calendar is ticked.

 

In this way you have to add iCloud account in every app (Notes, Reminders, Mail, Contacts), just open app and add new account (but don't select iCloud in list), you have to add new account manually.

For adding account in Contacts and Mail you have to enter correct servers in settings, you may to use this article - http://helpblog.blackberry.com/2013/03/how-to-setup-icloud-email/

For Notes, Reminder you may to use - www.icloud.com

 
Edited by spakk
  • Like 1
Link to comment
Share on other sites

  • 3 weeks later...

Dear Mac users,

 

I'd like to talk about iMessage, El Capitan and Yosemite.

 

I've been using Mac OS X on a Maximus V Gene motherboard with an i7-3770K processor for quite some time now. With the introduction of Yosemite I needed to figure out a way to make iMessage work as it included changes around the same time with validation of MLB and ROM values that were reported by the system and the NVRAM.

 

Here's my basic setup: Chameleon boot loader (previously regular flavor, now ENOCH), drop the Chameleon.plist, insert SMBIOS.plist, FakeSMC, IntelE1000-Ethernet.kext and my systems is working. To enable iMessage I had to install the FileNVRAM.kext (1.1.4 package) and FileNVRAM.dylib (1.1.4 package) file onto the USB stick containing the chameleon boot loader. With this setup, I was able to boot Yosemite fine and get a working NVRAM. However, keep in mind that you have to create the /Extra folder on the hard drive of your OS X install and make it writable by anyone. Then the FileNVRAM.kext is able to create the nvram.1d34-12d4d1234-1d341234.plist ( ) which contains the data you have written. Whenever I needed to boot the system with -v -f or when doing software updates, I had to use a second Chameleon stick that did not include the FileNVRAM.kext and dylib files. (If booting with -v -f and FileNVRAM installed, the system would crash on caching the kexts) I would then boot the system, run kext utility or similar permissions-checking and kext-caching applications and reboot with the FileNVRAM-USB stick. This was my full working arrangement. Tedious, but worked excellent. Never had a problem with iMessage, FaceTime, iPhone Calls, AppStore, iTunes or iCloud. So far so good, but it was time to move to El Capitan.

 

In El Capitan I encountered the problem that kexts cannot be passed through the Chameleon boot loader but have to be installed directly into /S/L/E and have to be cached by a running system (usually just boot the same SSD from a real Mac). This forced me into a predicament with the FileNVRAM.kext which had to be loaded through Chameleon as it wouldn't otherwise boot. So by trial and error I examined a problem with the FileNVRAM.kext on 10.11.3 which resulted in it not being loaded, no matter where you put it. Reason why? The Info.plist of the FileNVRAM.kext has the following code written in it:

<key>OSBundleLibraries</key>
<dict>
	<key>com.apple.iokit.IOStorageFamily</key>
	<string>1.0b1</string>
	<key>com.apple.kpi.bsd</key>
	<string>8.0b1</string>
	<key>com.apple.kpi.iokit</key>
	<string>7.0</string>
	<key>com.apple.kpi.libkern</key>
	<string>8.0d0</string>
	<key>com.apple.kpi.mach</key>
	<string>8.0d0</string>
	<key>com.apple.kpi.unsupported</key>
	<string>8.0b1</string>
</dict>

Not sure if you spotted the error yourself, but the IOStorageFamily version is too low for El Capitan. This OS X ships with 2.1 instead and the kext simply refuses to load. If you change this value in the Info.plist file, the kext is loadable. This is more of a dirty patch than a correct solution. So what happens next: I got my El Capitan working again with the same approach as above, but no FileNVRAM module or kext anywhere, neither Chameleon, nor OS X. When the system is booted up I would install the FileNVRAM.kext into /S/L/E, onto the /E/E on the Chameleon stick and in the /E/E folder on the hard drive. Same with the module, /E/E on both hard drive and chameleon stick. Now I would have to run kext utility again to precache the FileNVRAM.kext into the system and reboot. Sometimes it wouldn't boot up, sometimes it would "break" the system (fixable by dropping FileNVRAM from all instances and touching /S/L/E and running kextcache -u / from single-user mode or external system) - but most of the times it just works. NVRAM is capable of saving and creating the /Extra/nvram.xxxxxx.plist file and returning the required MLB/ROM values after being saved - even after reboot. Thus I have managed to get FileNVRAM.kext working by this trick in El Capitan.

 

Despite this solution working for me and probably others, my hope is that there is someone capable of updating the FileNVRAM.kext file for El Capitan and its latest Xcode? The kext itself is still working, but the dependencies are off and thus causing the issues.

 

Thank you and have fun!

Florian

what is the stacktrace you receive on the -f rebuild?

And if you don't want to use filenvram.kext, just use clover instead of chameleon/enoch.

Link to comment
Share on other sites

  • 1 month later...

very interesting but do you still need to add the MLB ROM value just the same way it used to be in mavericks , or you simply install the modules and kext and you don't need to add those values and they are auto generated , i remember using a value of all ones in mavericks 11111-11111-111111 something like that i don't remember exactly right now and that was the last time i had iMessage working with chameleon , i can install clover in EUFI MODE and have everything working but no matter how much i tried i never had iMessage working in clover , not to get anybody upset, i do understand settings perfectly clover but i feel like i like chameleon more , the only possible explanation is that my iMessage account has been disable or block due to many incorrect tries , like changing UUID and MLB ROM that's why i stopped trying until i test my iMessage account in a real mac , then if anything i call them for them to unlock it then i will try again in my hackintosh , i have a intel system and i have time to test and try, but the only problem that i have now is that i ran out of hard drives , i fix computers and all my spares drives i installed them in customers computers that bring me their pcs with bad hard drives , i have 8 ssds but they are in raid0 with a rocket raid 4520 raid card that's why i need some extra spare hd to run some test because i can't try in my raid system , i need an emergency bootable system just in case anything goes wrong. a least you gave me hope and now i now is possible , i will comeback once i get some extra spare hard drives. if i don't get anything most likely i will buy some cheap sad or something , i need it anyway , thanks for the info

 

I'm using the ROM and MLB values from a real mac, that i dumped with imessagedebug - and yes - this mac is sitting next to my main workstation.

so there is no way around to get legit values at this moment, as the auto generated don't work usually. but maybe you get lucky.

 

cheers.

Link to comment
Share on other sites

  • 4 weeks later...

Thanks for this write up Florian, however I am still having trouble in 10.10.5 with FileNVRAM on a motherboard that can not use Clover reliably. I have the latest Zenue release, but the MLB never sticks using:  

 

sudo nvram 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:MLB=xxxxxxxxxxx

 

Is that the command you used, or how did you insert the MLB/ROM? 

 

Could you also upload or link the exact NVRAM.kext and dylib just in case there is a problem with the version I am using?

 

Thanks!

Link to comment
Share on other sites

So, here's the file you requested. This is the Extra folder that I placed into my root directory of the El Capitan system. However, the FileNVRAM.kext from /Extra/Extensions is also placed in /S/L/E/ as well., yes I used the usual sudo nvram commands, but keep in mind that one of the two values requires you to include % symbols in ID.

 

Extra-Folder as zip-file: http://uploaded.net/file/uc9c18wc

 

You should also make sure that you check if the kext is actually capable of loading! (plus rebuild cache with kextutility) I boot the system without any FileNVRAM-files by using Chameleons -v -f commands, then run a full kext-utility services, reboot regularly, then place the files in its position (kext in two locations and dylib only in /Extra/modules) and run kext-utility again. then reboot normally with the cached cache file (chameleon using just -v or nothing). keep in mind I am not using a chameleon.boot.plist - only an smbios.plist)

 

Thanks for this write up Florian, however I am still having trouble in 10.10.5 with FileNVRAM on a motherboard that can not use Clover reliably. I have the latest Zenue release, but the MLB never sticks using:  

 

sudo nvram 4D1EDE05-38C7-4A6A-9CC6-4BCCA8B38C14:MLB=xxxxxxxxxxx

 

Is that the command you used, or how did you insert the MLB/ROM? 

 

Could you also upload or link the exact NVRAM.kext and dylib just in case there is a problem with the version I am using?

 

Thanks!

Link to comment
Share on other sites

 Share

×
×
  • Create New...