The smbios.plist is a text file you can use to trick the system profiler about your hardware.
The effect is the same you will obtain using a SMBIOS injector( AppleSMBIOSEFI, AppleSMBIOSResolver) or a patched AppleSMBIOS. In order to use a smbios.plist you need Chameleon 2.0RCx. The file must be placed in /Extra.
By the way, SMBIOS stands for: System Management BIOS (SMBIOS) Specification. The SMBIOS Specification addresses how motherboard and system vendors present management information about their products in a standard format by extending the BIOS interface on x86 architecture systems.
The information is intended to allow generic instrumentation to deliver this information to management applications that use DMI, CIM or direct access, eliminating the need for error prone operations like probing system hardware for presence detection. Also, The SMBIOS.plist affects what info will be reported to the system to be used for identification purposes mostly for System Profiler.
Basically you put some info to mimic a specific Mac model close to your system (a MacBook if you have a laptop or a iMac or MacPro in a desktop).
Here is an example:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SMbiosversion</key>
dmanufacter</key>
<string>Apple Inc.</string>
<string>IM91.88Z.008D.B00.0901142258</string>
<key>SMboa
r
<key>SMboardproduct</key>
<string>Mac-F2218EC8</string>
<key>SMexternalclock</key>
malclock</key>
<stri
<string>400</string>
<key>SMmanufacter</key>
<string>Apple Inc.</string>
<key>SMmax
ing>3200</string>
<key>SMmemmanufacter_1</key>
<string>Kingston</string>
<key>SMmemmanufacter_2</key>
_4</key>
<string>Kingston
<string>Kingston</string>
<key>SMmemmanufacter_3</key>
<string>Kingston</string>
<key>SMmemmanufacte
r</string>
<key>SMmempart_1</key>
<string>99U5316-028.A00LF</string>
<key>SMmempart_2</key>
<string>KTC1G-UDIMM</string>
serial_1</key>
<string
<key>SMmempart_3</key>
<string>99U5316-028.A00LF</string>
<key>SMmempart_4</key>
<string>KTC1G-UDIMM</string>
<key>SMme
m>0x651C52C8h</string>
<key>SMmemserial_2</key>
<string>0xD51C1E0Ah</string>
<key>SMmemserial_3</key>
<string>0x651C52C8h</string>
>19</string>
<key>SMprod
<key>SMmemserial_4</key>
<string>0xD51C1E0Ah</string>
<key>SMmemspeed</key>
<string>800</string>
<key>SMmemtype</key>
<strin
guctname</key>
<string>iMac9,1</string>
<key>SMserial</key>
<string>W87234JHYA4</string>
<key>SMsystemversion</key>
<string>1.0</string>
</dict>
</plist>
Here is another one :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>SMbiosvendor</key>
<string>Apple Inc.</string>
</key>
<string>04/01/200
<key>SMbiosversion</key>
<string>MP21.88Z.005C.B01.0608221120</string>
<key>SMbiosdat
e8</string>
<key>SMboardmanufacturer</key>
<string>Apple Computer, Inc.</string>
<key>SMboardproduct</key>
string>Apple Inc.</string>
<k
<string>Mac-F4208DC8</string>
<key>SMfamily</key>
<string>MacBookAir</string>
<key>SMmanufacturer</key>
<ey>SMproductname</key>
<string>MacBookAir1,1</string>
<key>SMserial</key>
<string>W88033AKY51</string>
<key>SMsystemversion</key>
>
<key>SMmemspeed</k
<string>1.0</string>
<key>SMUUID</key>
<string>00000000-0000-1000-8000-000000000000</string>
<key>SMmemtype</key>
<string>24</strin
gey>
<string>1600</string>
<key>SMmemmanufacter</key>
<string>Apple Computer Inc.</string>
<key>SMmempart_1</key>
2D59352020</string>
<key>SMmemserial_1</key>
<stri
<string>0x48594D503131325336344350362D59352020</string>
<key>SMmempart_2</key>
<string>0x48594D5031313253363443503
6ng>0x00001020</string>
<key>SMmemserial_2</key>
<string>0x00003021</string>
<key>SMexternalclock</key>
<string></string>
<key>SMmaximalclock</key>
<string></string>
</dict>
</plist>
Now, You don’t have to key in all the details , if you wish. For instance if you would like Chameleon to use default memory part number for your RAM. Feel free to remove the entire string and key corresponds to it. Its that simple. Now lets take a look at what these key means and how to get the values.
SMfamily: The Mac Model Family . For instance if you want to emulate as a MacPro , the Family would be “MacPro” (without quotes) , as for a Mac Mini it would be “MacMini” (without quotes)
SMproductname: The model , for instance you can call yours as “MacPro0,1″ , or “MacPro1,5″ or even follow a real Mac Model. Its up to you
SMbiosdate: Date when the firmware was released. This is optional , you could actually skip this.
SMbiosversion: Its used when fakeSMC is not being used. But since we have fakeSMC , you can easily skip this part. Only use this if you plan to stick with dsmos or if you want SMC Version to be like a RealMac SMmanufacter: The manufacturer of the Computer. Default its Apple , but then if you want to put your own OEM branding. Feel free to edit it
SMsystemversion: The boot rom (aka BIOS version). You can take this data from a real mac or from Apple’s site (which I would describe on how to get information on a particular Boot ROM for a particular mac)
SMbiosvendor: As the name suggests it reflects the company who made the BIOS. By default its Apple , but if you want to use any other name or branding. Feel free to adjust it
SMserial: Serial Number of your Hackint0sh
SMexternalclock: Frequency of your FSB (measured in Mhz)
SMmaximalclock: Your computer clock speed (i.e Intel Pentium D 830 is a 3.00Ghz processor) . Therefore it would be 3000 (Measured in Mhz) (whereby 1Ghz = 1000Mhz)
SMmemtype: Memory type. Use 18 for DDR / 19 for DDR2 / 20 for DDR2 FB-DIMM / 24 for DDR3 – You can get the whole list for SMmemtype by reading Chameleon’s documentation or grabbing the source code
SMmemspeed: Memory clock speed (i.e 533Mhz , 667Mhz) . Its measured in Mhz SMmemmanufacter_1: Manufacturer of your RAM (i.e Kingston , Apple , etc)
SMmemserial_1: Serial number of your RAM SMmempart_1: part number of your RAM
SMUUID: Enter your UUID here if you’re having issues with UUID If you have plans on fixing your CPU being recognised as Unknown , then do check out this post on patched version of Chameleon. Generally you’ll be needing it if you want to get certain program such as Silverlight , etc to work properly Well thats about it.
Now you may want to use TextEdit or nano or plist editor to create a new file (or modify my existing SMBIOS.plist above) and call it as SMBIOS.plist. Place it in your /Extra folder.
If you have an EFI partition , then place it in the /Extra folder of your EFI partition. Now as for finding the right values (i.e Product name , BIOS version).
You may get the data directly from Apple’s website . For instance if you wish to mimic a MacMini Early 2006.
Your SMProductName would be “MacMini1,1″ and your SMBiosversion would be “MM11.0055.B08” .
You can find out the generation of Mac by simply looking at EFI Boot ROM version in Apple’s Web site.
Thats how its done.
Save it . Place it in /Extra – Reboot and then check out your system profiler. You should have the correct values !
If you want to deepen your understanding and broaden your knowledge , read the white papers on SMBIOS. Its a complex pdf which gives you better understanding and deeper understanding if you plan to customize yours.
Highly recommended for advanced OSX86 users .
As for CPUID patching In your SMBIOS , add the follow lines
<key>SMcputype</key>
<string> 1281</string>
There are currently three known values for it :-
1281 – Quad-Core Intel Xeon
769 – Intel Core 2 Duo
257 – Intel Core 2 Solo
You may ask why there is not for AMD , Intel Quad Core , Pentium D , Pentium M , Intel Atom.
The reason is simple , Apple only includes list of CPUIDs which they officially support (aka which they officially run on mac). So if you have a quad core , you would go with Quad-Core Intel Xeon. This applies to i7. iF you have an Athlon X2 , then go with Intel Core 2 Duo. To recognize my processor correctly using SMcputype 1793 and it shows up Intel I7 in about this mac .