Jump to content

SMBIOS Parser


mohdumar
 Share

20 posts in this topic

Recommended Posts

xyyTF.pngSMBIOS Parser

Cocoa application to fetch the current loaded SMBIOS configuration from IORegistry.

 

  • Raw Output tab shows the binary obtained data from ioreg.
  • Parsed Output tab shows parsed data in the form of a table, with key names conforming to those used in smbios.plist. There is also an option to save this parsed data as .plist to disk, for using as smbios.plist after modding. The UUID however is obtained using gethostuuid.

This originally intended to have built-in patcher, but you can use the one in the Lizard app.

 

Usage: open up the app and click "Fetch SMBIOS from IORegistry".

 

Download : v1.0.1 b248 SMBIOS_Parser.app.zip

Older releases

v1.0.0 b231 SMBIOS_Parser.app.zip

post-696481-1314543992_thumb.png

post-696481-1314544018_thumb.png

  • Like 3
Link to comment
Share on other sites

Great, thanks.

 

Someone please run this on a MacPro3,1.

 

The output could be useful for those of us who are unable to fool Geekbench when using the MacPro3,1 model identifier.

Not that it matters much of course, I'm just very curious to learn why it doesn't work. iMac9,1 and other model identifiers will work, just not MacPro3,1.

 

For completions sake, there's also smbios tool by fxtentacle (uses dmidecode):

http://www.insanelymac.com/forum/index.php?showtopic=153582

Link to comment
Share on other sites

Thanks Mal, awesome.

 

Turns out I had the order of smbiosdate wrong and a space in "Mac Pro"...I wonder if the four spaces in front of bootrom version are important. Probably not but I added them anyway.

 

Of course after fixing these minor details, Geekbench still reports it as a Hackintosh. But you would know that already :-)

merda.jpeg

Could you run this on the MacPro3,1 as well?

http://www.insanelymac.com/forum/index.php?showtopic=153582

Link to comment
Share on other sites

good here.

 

geekbench says i have a real macpro...hehe

 

<?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>SMUUID</key>

<string>802643EF-D517-5048-845B-E82CD964D6EB</string>

<key>SMbiosdate</key>

<string>11/06/2009</string>

<key>SMbiosvendor</key>

<string>Apple Inc.</string>

<key>SMbiosversion</key>

<string>MP41.88Z.0081.B07.0910130729</string>

<key>SMboardmanufacturer</key>

<string>Apple Inc.</string>

<key>SMboardproduct</key>

<string>Mac-F221BEC8</string>

<key>SMexternalclock</key>

<string>136</string>

<key>SMfamily</key>

<string>MacPro</string>

<key>SMmanufacturer</key>

<string>Apple Inc.</string>

<key>SMmaximalclock</key>

<string>2760</string>

<key>SMmembankloc_1</key>

<string></string>

<key>SMmembankloc_2</key>

<string></string>

<key>SMmembankloc_3</key>

<string></string>

<key>SMmembankloc_4</key>

<string></string>

<key>SMmemdevloc_1</key>

<string></string>

<key>SMmemdevloc_2</key>

<string></string>

<key>SMmemdevloc_3</key>

<string></string>

<key>SMmemdevloc_4</key>

<string></string>

<key>SMmemmanufacter_1</key>

<string>Kingston</string>

<key>SMmemmanufacter_2</key>

<string>Kingston</string>

<key>SMmemmanufacter_3</key>

<string>Kingston</string>

<key>SMmemmanufacter_4</key>

<string>Kingston</string>

<key>SMmempart_1</key>

<string>99U5471-002.A00LF</string>

<key>SMmempart_2</key>

<string>9905458-009.A00LF</string>

<key>SMmempart_3</key>

<string>99U5471-002.A00LF</string>

<key>SMmempart_4</key>

<string>9905458-009.A00LF</string>

<key>SMmemserial_1</key>

<string></string>

<key>SMmemserial_2</key>

<string></string>

<key>SMmemserial_3</key>

<string></string>

<key>SMmemserial_4</key>

<string></string>

<key>SMmemspeed_1</key>

<string>1366</string>

<key>SMmemspeed_2</key>

<string>1366</string>

<key>SMmemspeed_3</key>

<string>1366</string>

<key>SMmemspeed_4</key>

<string>1366</string>

<key>SMmemtype_1</key>

<string>24</string>

<key>SMmemtype_2</key>

<string>24</string>

<key>SMmemtype_3</key>

<string>24</string>

<key>SMmemtype_4</key>

<string>24</string>

<key>SMproductname</key>

<string>MacPro4,1</string>

<key>SMserial</key>

<string>G89093TK4PC</string>

<key>SMsystemversion</key>

<string>1.0</string>

</dict>

</plist>

post-140310-1314611787_thumb.png

Link to comment
Share on other sites

The output could be useful for those of us who are unable to fool Geekbench when using the MacPro3,1 model identifier.

Not that it matters much of course, I'm just very curious to learn why it doesn't work. iMac9,1 and other model identifiers will work, just not MacPro3,1.

I have found the source code of the library which Geekbench uses. The list of the original Mac models is in the file:

http://code.google.com/p/geekinfo/source/b...macosxmodel.inc

 

On line 300 of this file, you can see that MacPro3,1 is part of Hackintosh list. So the library when uses this list, if your SMProductName is MacPro3,1, then it will report Hackintosh.

 

Moreover, the library checks the model number based on two things (This you can see from line 228 of the file http://code.google.com/p/geekinfo/source/b...acosxsystem.cpp):

  • Product Name - you can check this by running
    sysctl -a | grep "hw.model"


  • Processor Brand Name - you can check this by running
    sysctl -a | grep "machdep.cpu.brand_string"


 

If these two together match a model in the list file I mentioned above, only then you get a valid model. Otherwise, you can see from line 120 of http://code.google.com/p/geekinfo/source/b...macosxmodel.cpp that it will report Hackintosh.

 

I hope this resolves your curiosity.

  • Like 1
Link to comment
Share on other sites

  • 2 months later...

Hi,

 

I run a hackintosh - Os X 10.6.6

My System Profiler shows wrong info about my memory modules manufacturer and speed. When I fetch smbios from IOresources using this app it also shows that same wrong memory manufacturer and speed.

I know that i have originally changed that info myself a year ago, but I can't remember where and how?

 

So my noob question is: where is this smbios info fetched from?

Link to comment
Share on other sites

The Chameleon boot loader is responsible for passing DMI data and overrides in smbios.plist to the IORegistry. Memory detection was added and improved during the RC5 dev cycle but it doesn't work correctly on all platforms. Laptops seem to have the most issues.

 

Edit /Extra/smbios.plist.

 

First make sure you are running a reasonably modern version of Chameleon. It's up to 2.1 now.

If you upgrade to 2.0 final or 2.1 you must replace all instances of "manufacter" with "manufacturer" in smbios.plist.

 

For example

 

SMmemmanufacter/manufacturer_1 - Kingston Technologies

SMmempart_1 - KHX8500D2K2

SMmemspeed_1 - 1066

SMmemserial_1 - 3526AE2B

SMmemtype_1 - 19 (18 = DDR, 19 = DDR2, 20 = DDR2 FB-DIMM, 24 = DDR3)

 

The trailing _1 in the example above defines the occupied slot number:

 

SMmemblabla_1

SMmemblabla_3

 

...for two modules in dual channel configuration.

 

You can get the correct data from Everest or CPU-z on Windows.

 

Also see post #7 above.

 

You should know that all of this is purely cosmetical, it does not affect performance in any way.

Link to comment
Share on other sites

Anybody have a 2011 Mac Mini Server Smbios? I have a ASUS P8Z68-V PRO, Core i7 2600K and GeForce GTX 560 Ti, and I read that for Z68 motherboards the MacMini5,3 Smbios work very well. The problem is that I only found one smbios.plist with this, and I don't know if it's correct. Here it's the one I'm using.

 

<?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>SMbiosversion</key>
<string>MM51.88Z.0077.B0A.1109091226</string>
<key>SMboardmanufacturer</key>
<string>Apple Inc.</string>
<key>SMboardproduct</key>
<string>Mac-7BA5B2794B2CDB12</string>
<key>SMfamily</key>
<string>Macmini</string>
<key>SMmanufacter</key>
<string>Apple Inc.</string>
<key>SMmanufacturer</key>
<string>Apple Inc.</string>
<key>SMproductname</key>
<string>Macmini5,3</string>
<key>SMserial</key>
<string>C02GHFCWDKDJ</string>
<key>SMsystemversion</key>
<string>1.0</string>
</dict>
</plist>

Link to comment
Share on other sites

Not sure if it matters, but your SMbiosdate is missing. It's the trailing part of SMbiosversion (YYMMDD format) - 110909. SMbiosdate is MM/DD/YY so that would make it 09/09/11.

 

In a perfect world you would Google MacMini5,3 DMI and follow links to Linux bug report sites to verify your smbios.plist.

 

But I did that, also searched on the older June boot ROM string (MM51.88Z.0075.B00.1106271442) and I couldn't find DMI data for any of the MacMini5.x models. The best I could find was a Red Hat boot log but there was no DMI info in it.

Link to comment
Share on other sites

  • 2 weeks later...
Anybody have a 2011 Mac Mini Server Smbios? I have a ASUS P8Z68-V PRO, Core i7 2600K and GeForce GTX 560 Ti, and I read that for Z68 motherboards the MacMini5,3 Smbios work very well. The problem is that I only found one smbios.plist with this, and I don't know if it's correct. Here it's the one I'm using.

 

<?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>SMbiosversion</key>
<string>MM51.88Z.0077.B0A.1109091226</string>
<key>SMboardmanufacturer</key>
<string>Apple Inc.</string>
<key>SMboardproduct</key>
<string>Mac-7BA5B2794B2CDB12</string>
<key>SMfamily</key>
<string>Macmini</string>
<key>SMmanufacter</key>
<string>Apple Inc.</string>
<key>SMmanufacturer</key>
<string>Apple Inc.</string>
<key>SMproductname</key>
<string>Macmini5,3</string>
<key>SMserial</key>
<string>C02GHFCWDKDJ</string>
<key>SMsystemversion</key>
<string>1.0</string>
</dict>
</plist>

 

The last 4 from serial match: http://www.everymac.com/ultimate-mac-looku...h_keywords=DKDJ

And is what makes the diff b/w models :(

 

You can make your own serial number and keep only last 4.

Link to comment
Share on other sites

Tumbs up for this nice & useful app/idea,

 

Just one suggestion:

You could start the app and already fetch the smbios to display by using the cocoa awakeFromNib method :)

Inside it you could call your fetch callback method.

awakeFromNib gives you the guaranty by design that all your GUI objects are already constructed and initialized before it gets called...

 

Hope that helps.

-Rek

Link to comment
Share on other sites

  • 9 months later...
  • 2 years later...
 Share

×
×
  • Create New...