overdue-scratch

Author Topic: [How-to] configure /Extra/smbios.plist  (Read 62990 times)

0 Members and 1 Guest are viewing this topic.

Gringo Vermelho

  • Forum Moderator
  • Posts: 611
  • The gray monster energy hat
[How-to] configure /Extra/smbios.plist
« on: February 01, 2010, 04:29:19 AM »
SMBIOS injection is a way to present information about some of your hardware and some of Apple’s hardware (!) to OS X. We use it to fake or ‘spoof’ an actual Macintosh computer, a Mac Pro, an iMac or a Mac Book for example, which greatly improves compatibility. Many applications and core system components query this information and not having this handled correctly causes various problems.
Besides the deeper stuff, it also fixes the “About This Mac” dialog and System Profiler, where you’ll have your CPU- RAM- and base clock frequencies and other information displayed correctly, like on a real Mac.
As of Chameleon 2.0 RC4, you can even fake (or correctly identify – this is sometimes necessary) your CPU type. This is very important for compatibility, some apps will not install or refuse to run at all if they don’t detect a CPU type that Apple actually use.

Before SMBIOS injection was added to Chameleon, it was done with a Kernel Extension in /System/Library/Extensions – either via direct modifications to AppleSMBIOS.kext (netkas, paulicat, ToH, mac.nub, AnV), or via an SMBIOS Injector .kext such as SMBIOSEnabler.kext (Kabyl) SMBIOSResolver.kext (Superhai) or SMBIOSEFI.kext (eureka/chun-nan). Chameleon 2.0 has made all of those obsolete.
If you’re running one of those Hackintosh 10.5.x distros that nobody knows how to spell the name of (iDeb, Kalyan or iAKATOS), you’re either using one of the above, or a modified AppleSMBIOS.kext.

Chameleon 2.0 handles SMBIOS injection via /Extra/smbios.plist.
Download and extract the latest Chameleon binary package from the New Releases subforum. Extract it and look in the folder named ‘Optional Extras’. It contains an example smbios.plist that spoofs a MacPro3,1 – this one is actually incomplete, but open it in your favorite plist editor anyway and let's take a look at it.

As you can see, the example smbios.plist is injecting Boot ROM version, manufacturer, Mac model, version and an 11-character serial number. But you can also inject motherboard model and some other stuff that isn’t included in the example. The missing keys from the example smbios.plist are as follows:

SMbiosvendor (typically “Apple Inc.” or “Apple Computer Inc.”)
SMbiosdate (“MM/DD/YY”) - this seems to be the release date of the Boot ROM.
SMfamily  “Mac” for an iMac, “MacPro” for a Mac Pro, "MacBook Pro" for a Mac Book Pro. There are probably more.
SMboardmanufacter (*)  - same as SMbiosvendor – note odd spelling
SMboardproduct – Motherboard model number - “Mac-F2218FA9” for a 2009 model iMac for example
SMbustype SMcputype -  spoofs or correctly identifies your CPU. If your “About this Mac” dialog is showing ‘Processor Unknown’, or you’re having trouble installing Microsoft’s Silverlight browser plug-in, then this is the right way to fix it.

0103 = a Core 2 Duo (use with any Dual Core CPU)
0105 = a Quad Core Xeon (use this with any Quad Core CPU)

I have not seen other CPU codes yet but we should be able to get by with those anyway. I don’t know how to handle i3-i7 CPUs here or if it’s even necessary.

If you’re on hardware that can’t run the Vanilla kernel you should use the Voodoo Kernel, which automatically injects the appropriate CPU type. If you’re on a Pentium 4 or single core AMD system and see ‘Core Solo’ in the About This Mac dialog, then that’s the Voodoo Kernel injecting this for you, so there’s no need to do this via smbios.plist.

If you have previously used a tool to change the ‘About This Mac’ dialog, such as ~PCWiz’ OSX86Tools (may it rest in peace), you need to undo this fix. Thankfully, OSX86Tools lets you do this too. The problem with OSX86Tools is that it didn’t really fix anything, all it did was modify /System/Library/SystemProfiler/SPPlatformReporter.spreporter.

Most of the string values in the example smbios.plist are specific for the MacPro3,1. Spoofing other models, like a Mac Book or an iMac requires, as I hinted at previously, different string values, and it’s best not to mix and match if you can avoid it. Try to obtain as much info as you can from the Mac model you’re going to spoof  – use Google and search the scene forums.

You can find collections of smbios information from various Mac models here @ VoodooProjects, and scattered around on Insanelymac and other Hackintosh forums and blogs. Another useful resource is the GeekBench result browser at the GeekBench website – but be careful if you use information from there, because it might come from an incorrectly configured Hackintosh (iMac9,1 with MacPro3,1 boot ROM for example). Always verify your findings using several sources.

The debate is still on whether injecting all of this info is actually required - personally I like being thorough and since Chameleon feeds my addiction, why not.

Try to find a Mac model to spoof that fits more or less with the specs of your PC, like CPU type and/or number of CPU cores and, if possible, chipset and even video card manufacturer (Macs use Intel GMA, ATI and nVidia video). Spoofing a Mac Pro with an 8-core Xeon CPU does not make any sense if you’re on a laptop with a Core 2 Duo.
A general guideline could be something like this; spoof a Mac Book if you’re on a laptop, Mac Pro if you have a desktop PC with 4- or 8-core CPU and an iMac if you have a desktop PC with dual core CPU (though the iMac is technically a laptop). A word of advice - don’t waste your time visiting Apple’s website looking for specs, they don't cater to our exotic desires over there.

SMexternalclock is your non-quad pumped FSB clock. Take your FSB (if you don’t know what your FSB clock is, you can see it in your BIOS) divide it by four and set this value here. On Pentium M/4/D/Celeron systems with 533 and 800MHz FSB use 133 and 200 respectively, on 1333 MHz FSB systems use 333, and so on.

SMmaximalclock is your maximum CPU frequency in MHz. For example, if you have a 3,16 GHz CPU, put 3166.

SMmemtype is 18, 19 and 24 for DDR1, 2 and 3 respectively.

SMmemspeed is your memory clock frequency. This one is easy - for DDR2 1066 put 1066, and so on.

SMmemmanufacter(*) (note odd spelling) and friends – manufacturer, serial and part numbers for your RAM sticks can be found with tools like CPUID and Lavalys Everest on Windows, but you can put anything you want there, they are there solely for the purpose of looking cool in System Profiler. The 1, 2, 3 and 4 denotes each memory slot on your motherboard – if you don’t have four sticks of RAM, just omit the info for the slots that are empty.

To summarize; collect the information for the Mac model you wish to spoof as well as the info for your CPU and RAM, and put together your own smbios.plist.

Before you can start using your new smbios.plist, you will need an original, unmodified AppleSMBIOS.kext from the version of OS X you are running, that you can install in /Library/System/Extensions. That is, if you're using a modified one of course.

You can try googling for one, but remember it has to be unmodified; otherwise it’s pointless to use it.

If you have access to an OS X installation DVD, it is easy to extract a vanilla AppleSMBIOS.kext from it using an app called Pacifist:
http://www.charlessoft.com/
I’m not going to go into details on how to use Pacifist as it comes with its own excellent documentation. But basically, you run Pacifist with the DVD inserted or with an image of it mounted, and click the “Open Apple Install Discs” button. Then you locate the Extensions folder in the directory tree (it’s in BaseSystem.pkg – again, refer to the documentation) and extract AppleSMBIOS.kext from there – or you can have Pacifist install it for you in S/L/E on your Hackintosh if you want to.

Right, so use Pacifist to install (or, if you know what you’re doing, extract and manually copy) your vanilla AppleSMBIOS.kext to /S/L/E.
Make sure that you don’t have any SMBIOS injector kexts installed. Look through the extensions folder, and if you see anything besides AppleSMBIOS.kext with SMBIOS in the name (refer to list of SMBIOS injector kexts above), trash it.

If your Apple OS X install DVD is older than the system you have installed, you can update the AppleSMBIOS.kext manually after installing it in the same way – use Pacifist to extract the update from an Apple OS X Combo Update that matches your current system version, and install it right on top.

Remember to fix permissions on your extensions and flush the extensions cache.

Drop your new, personalized smbios.plist in /Extra and reboot.

Go to the Apple menu and click ‘About This Mac’, and admire your work.
Click ‘more info’ to open System Profiler, and check that all your modifications are in effect. Click ‘Memory’, check each slot and verify that the information is correct there as well.

Attached is the iMac9,1 smbios.plist that I use on the system in my signature. Don't use it as it is - it has my RAM and CPU info in it.

(*) "manufacter" spelling has been fixed, if you're using a late RC rev of Chameleon 2.0 or Chameleon 2.1 use the correct spelling, 'manufacturer'.

As always - please correct me if I'm wrong or missed something.
« Last Edit: January 25, 2012, 02:17:24 AM by Gringo Vermelho »
10.9.5 - ASUS P8Z77-V Pro - i5 3570K - GTX 660 - Chameleon 2.3 svn-r2xxx
How to...
Install Chameleon: http://forum.voodooprojects.org/index.php/topic,649
Make your own Chameleon boot CD: http://forum.voodooprojects.org/index.php/topic,484.msg2131.html#msg2131

Blackosx

  • Forum Moderator
  • Posts: 1150
Re: [How-to] configure /Extra/smbios.plist
« Reply #1 on: February 01, 2010, 04:18:40 PM »
Very useful resource Gringo and will come in handy for pointing users to when they ask SMBIOS related questions.
Good job :)
10.10.5 / 10.11 GM1 | Asus Maximum IV Gene-Z | i7-2600 3.40GHz | 4GB | Radeon 5770 1GB