Jump to content

Chameleon with SMBIOS patching


mackerintel
 Share

138 posts in this topic

Recommended Posts

Hello all. Despite not having much free time I could held myself off coding and wrote an SMBIOS patching for Chameleon. As usual compiled version + patch. Thanks superhai for pointing me which values have to be changed in SMBIOS. This work is really fresh. I didn't test it much yet. After installing it you need to specify the SMBIOS values in com.apple.Boot.plist. Original message by superhai. In square brackets - the names of variables in com.apple.Boot.plist

There are certain things that are more important than others. But the values I change in SMBIOSResolver are the following that smbios uses:

 

Table Type 0 (bios):

version (MBP41.88Z.00C1.B00.0802091544) [sMbiosversion]

 

Table Type 1 (system):

manufacturer (Apple Inc.) [sMmanufacter]

productname (MacBookPro4,1) [sMproductname]

version (1.0) [sMsystemversion]

serial-number (SECRETSERIAL) [sMserial]

 

Table Type 4 (cpu):

external-clock [sMexternalclock]

maximum-clock [sMmaximalclock]

 

Table Type 17 (memory):

manufacturer (Unknown) [sMmemmanufacter]

memorytype [sMmemtype]

memoryspeed [sMmemspeed]

serialnumber (Unknown) [sMmemserial]

partnumber (Unknown) [sMmempart]

devicelocator [sMmemdevloc]

banklocator [sMmembankloc]

 

You should check if they contain a sane value, and if not update with a dummy value (what I have in parentesis is what I used). Except clock and memoryspeed, which should be calculated or provided from some kind of input file, for memory you could also make routine to read spd data via smbus, but i dont think that is feasible due to space. Serialnumbers could be made more appleish or just provide whatever is there.

 

Depending on your BIOS you may not need to modify all theese parameters. If there are multiple tables of the same type then modifications will be applied to all of them. If you want to modify only first table then suffix "_1" to parameter name, "_2" for second, ...

Eg SMmemserial changes serials of all memory banks

SMmemserial_1 changes the serial of first bank

SMmemserial_2 changes the serial of second bank

 

Here is extract from my com.apple.Boot.plist using superhai's values:

		 <key>SMbiosversion</key>
	 <string>MBP41.88Z.00C1.B00.080209154</string>
	 <key>SMmanufacter</key>
	 <string>Apple Inc.</string>
	 <key>SMproductname</key>
	 <string>MacBookPro4,1</string>
	 <key>SMsystemversion</key>
	 <string>1.0</string>
	 <key>SMserial</key>
	 <string>SECRETSERIAL</string>

 

P.S. yeah I know this thread should belong to XLabs but I have no right to create threads there. Could anybody move it?

Thanks for Korrupted for moving thread

Chameleonsm.zip

  • Like 1
Link to comment
Share on other sites

Compiled version: yes

diff-file: no

 

ok, thanks... I´ll try it...

 

edit:

 

works fine with my Asus P5W-DH C2D-E6750 ....congrats :(

 

 

 

64853Imagen%201.jpg

14109Imagen%202.jpg

p5w-dh-deluxe-de-roisoft:~ roisoft$ sysctl hw
hw.ncpu: 2
hw.byteorder: 1234
hw.memsize: 2147483648
hw.activecpu: 2
hw.optional.x86_64: 1
hw.optional.sse4_2: 0
hw.optional.sse4_1: 0
hw.optional.supplementalsse3: 1
hw.optional.sse3: 1
hw.optional.sse2: 1
hw.optional.sse: 1
hw.optional.mmx: 1
hw.optional.floatingpoint: 1
hw.packages: 1
hw.tbfrequency: 1000000000
hw.l2cachesize: 4194304
hw.l1dcachesize: 32768
hw.l1icachesize: 32768
hw.cachelinesize: 64
hw.cpufrequency_max: 2664000000
hw.cpufrequency_min: 1998000000
hw.cpufrequency: 1998000000
hw.busfrequency_max: 1332000000
hw.busfrequency_min: 1332000000
hw.busfrequency: 1332000000
hw.pagesize: 4096
hw.cachesize: 2147483648 32768 4194304 0 0 0 0 0 0 0
hw.cacheconfig: 2 1 2 0 0 0 0 0 0 0
hw.cpufamily: 1114597871
hw.cpu64bit_capable: 1
hw.cpusubtype: 4
hw.cputype: 7
hw.logicalcpu_max: 2
hw.logicalcpu: 2
hw.physicalcpu_max: 2
hw.physicalcpu: 2
hw.machine = i386
hw.model = MacPro3,1
hw.ncpu = 2
hw.byteorder = 1234
hw.physmem = 2147483648
hw.usermem = 2013290496
hw.pagesize = 4096
hw.epoch = 0
hw.vectorunit = 1
hw.busfrequency = 1332000000
hw.cpufrequency = 1998000000
hw.cachelinesize = 64
hw.l1icachesize = 32768
hw.l1dcachesize = 32768
hw.l2settings = 1
hw.l2cachesize = 4194304
hw.tbfrequency = 1000000000
hw.memsize = 2147483648
hw.availcpu = 2

Link to comment
Share on other sites

this patch contains your previous DSDT patch?

 

gracias amigo :D

 

 

Compiled version: yes

diff-file: no

AFAIK it dosen't work for me ;)

Refuse to load my modded DSDT, it dosent like my audio stuff injection then it freeze, freeze also on -s

Link to comment
Share on other sites

AFAIK it dosen't work for me :dev:

Refuse to load my modded DSDT, it dosent like my audio stuff injection then it freeze, freeze also on -s

 

 

Please look here

http://forum.insanelymac.com/index.php?sho...20&start=21

it appears after DSDT patch with chameleon.

I am not alone with this bug.

Any ideas?

Does problem also appears if both features (SMBIOS & DSDT) are activated but don't really do anything (smbios version, but no smbios parameters in Boot.plist and unmodified DSDT dump present in DSDT.aml). How exactly was DSDT patched? I think that information in SMBIOS and DSDT is incomplete or contradictory.

@ all: if you have suggestion of what other fields of SMBIOS would be useful to be able to modify post it here

Link to comment
Share on other sites

I tried.

This is my Boot.plist

<dict>
<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string></string>
<key>Timeout</key>
<string>5</string>
		<key>SMbiosversion</key>
	 <string>MBP41.88Z.00C1.B03.0802271651</string>
	 <key>SMmanufacter</key>
	 <string>Apple Inc.</string>
	 <key>SMproductname</key>
	 <string>MacBookPro4,1</string>
	 <key>SMsystemversion</key>
	 <string>1.0.14</string>
	 <key>SMserial</key>
	 <string>W88261E7YP4</string>
<key>device-properties</key>
<string></string>
</dict>

My pictures and dsdt

Picture_1.png

Picture_2.png

Picture_3.png

Picture_4.png

dsdt_fixed.txt

Link to comment
Share on other sites

It works here; DSDT override and SMBIOS features.

The only problem is that vanilla SMBIOS doesnt pick cpu/bus speeds correctly; so I still have to add a SMBIOS injector (AppleSMBIOSEFI.kext) to get all the info right. So Name and Idetifiers comes from chameleon and the rest are provided by the kext...

post-51637-1227107999_thumb.jpg

Link to comment
Share on other sites

It works here; DSDT override and SMBIOS features.

The only problem is that vanilla SMBIOS doesnt pick cpu/bus speeds correctly; so I still have to add a SMBIOS injector (AppleSMBIOSEFI.kext) to get all the info right. So Name and Idetifiers comes from chameleon and the rest are provided by the kext...

You have to set theese values:

Table Type 4 (cpu):

external-clock [sMexternalclock]

maximum-clock [sMmaximalclock]

Link to comment
Share on other sites

I have currently no time to look at you DSDT. However I would suggest using vanilla AppleSMBIOS with SMBIOS-patching chameleon. Also looking at sysctl hw may give an answer.

Yes, I have vanilla SMBIOS without any SMBIOSEFI additions.

Looking for other informations...

Link to comment
Share on other sites

Yes, I have vanilla SMBIOS without any SMBIOSEFI additions.

Looking for other informations...

Strange. Because serial in properties should be the same as in Boot.plist. Are you sure that you have installed Chameleon correctly?

 

Have you set your SMmaximalclock and SMexternalclock?

Could you post your ioreg -lw0?

Link to comment
Share on other sites

Hi!

 

Grat stuff!

Working serial, modell, etc... but what the format is SMExternalclock and SMMaxclock?

And SMmaxclock is my processor clock without multiplier?

I have Intel CoreDuo 2.17 Memory speed is 667.

How to set this keys?

 

Help Please!

Your spelling is incorrect

Everything is in Mhz.

Here the description of the fields in SMBIOS specifications:

Max Speed: Maximum processor speed (in MHz) supported by the

system for this processor socket. 0E9h for a 233MHz

processor. If the value is unknown, the field is set to 0.

Note: This field identifies a capability for the system,

not the processor itself.

External Clock: External Clock Frequency, in MHz. If the value is

unknown, the field is set to 0.

E.g. For Dual-Core 1.86Ghz at 133 FSB you should put:

<key>SMexternalclock</key>
<string>133</string>
<key>SMmaximalclock</key>
<string>1866</string>

to your com.apple.Boot.plist

I haven't tested this myself since theese values are correctly supplied by BIOS on my system.

Link to comment
Share on other sites

Next attempt

<key>SMexternalclock</key>
<string>133</string>
<key>SMmaximalclock</key>
<string>2400</string>

 

How can I know that my AppleSMBIOS v1.0.14 is true vanilla?

 

EDITED: My problem is resolved. It is a bug of IntelEnhancedSpeedStep v1.4.0.

After replacing it by Superhai driver processor speed is OK.My bus speed must be 200.

Picture_1.png

CPU_Z.PNG

Link to comment
Share on other sites

Working great here as well, on Q6600, all vanilla kexts with fake plists.

 

Thanks.

 

How do you install this ChameleonSM ??

Can't seem to find it anywhere in this discussion thread.

 

its assumed that we already know that. If you have chameleon installed just replace 'boot' file in your leopard root partition with this new one renaming it to 'boot'. If not, install chameleon first (from the installer, the best way) then replace boot file.

Link to comment
Share on other sites

I build AppleSMBIOS from latest Apple's sources. It appears to be v1.0.9! So all other versions seems to be hacked.

With this Chameleon by mackerintel "my" version works without problem. But some other key needed.

GoodCPU.png

BadRAMinfo.png

Link to comment
Share on other sites

i´m using this info

 

<key>Graphics Mode</key>
<string>1680x1050x32</string>
<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string></string>
<key>SMbiosversion</key>
<string>MP31.88Z.00C1.B00.080209154</string>
<key>SMmanufacter</key>
<string>Apple Inc.</string>
<key>SMmemmanufacter</key>
<string>0x80CE</string>
<key>SMmempart</key>
<string>0x0000FFFF</string>
<key>SMmemserial</key>
<string>0x48092D503537345336304350362D09352020</string>
<key>SMmemspeed</key>
<string>800</string>
<key>SMmemtype</key>
<string>19</string>
<key>SMproductname</key>
<string>MacPro3,1</string>
<key>SMserial</key>
<string>W88261E7YP4</string>
<key>SMsystemversion</key>
<string>1.0</string>
<key>Timeout</key>
<string>5</string>

Link to comment
Share on other sites

i´m using this info

 

	<key>SMmemmanufacter</key>
 <string>0x80CE</string>
 <key>SMmempart</key>
 <string>0x0000FFFF</string>
 <key>SMmemserial</key>
 <string>0x48092D503537345336304350362D09352020</string>

SMmemmanufacter. SMmempart and SMmemserial are strings. If I have some free time I'll look which values macbook uses.

Update: data from macbook's ioreg found on the net:

		<key>SMbiosversion</key>
	<string>MB41.88Z.00C1.B00.0802091535</string>
	<key>SMmanufacter</key>
	<string>Apple Inc.</string>
	<key>SMproductname</key>
	<string>MacBook4,1</string>
	<key>SMsystemversion</key>
	<string>1.0</string>
	<key>SMserial</key>
	<string>W8813MMN0P2</string>
	<key>SMexternalclock</key>
	<string>200</string>
	<key>SMmaximalclock</key>
	<string>2400</string>
	<key>SMmemmanufacter_1</key>
	<string>0xAD00000000000000</string>
	<key>SMmemserial_1</key>
	<string>0x00001020</string>
	<key>SMmemtype_1</key>
	<string>19</string>
	<key>SMmemspeed_1</key>
	<string>667</string>
	<key>SMmemdevloc_1</key>
	<string>DIMM0</string>
	<key>SMmembankloc_1</key>
	<string>BANK 0</string>
	<key>SMmempart_1</key>
	<string>0x48594D503131325336344350362D59352020</string>
	<key>SMmemmanufacter_2</key>
	<string>0xAD00000000000000</string>
	<key>SMmemserial_2</key>
	<string>0x00003021</string>
	<key>SMmemtype_2</key>
	<string>19</string>
	<key>SMmemspeed_2</key>
	<string>667</string>
	<key>SMmemdevloc_2</key>
	<string>DIMM1</string>
	<key>SMmembankloc_2</key>
	<string>BANK 1</string>
	<key>SMmempart_2</key>
	<string>0x48594D503131325336344350362D59352020</string>

Here is complete dmidecode of macmini: http://www.kernel.org/pub/linux/kernel/peo...ni1_1-dmidecode

P.S. If I have some type I'll post vanilla AppleSMBIOS from 10.5.4

Link to comment
Share on other sites

Then why do you set your SMexternalclock to 133?

 

Ir is my mistake. Corrected.

 

I have new effect

    | +-o AppleEFIRuntime  <class AppleEFIRuntime, registered, matched, active, busy 0, retain 7>
   |   | {
   |   |   "IOProviderClass" = "AppleACPIPlatformExpert"
   |   |   "IOMatchCategory" = "AppleEFIRuntime"
   |   |   "IOProbeScore" = 0x0
   |   |   "IOClass" = "AppleEFIRuntime"
   |   |   "CFBundleIdentifier" = "com.apple.driver.AppleEFIRuntime"
   |   |   "IOResourceMatch" = "ACPI"
   |   | }
   |   | 
   |   +-o AppleEFINVRAM  <class AppleEFINVRAM, registered, matched, active, busy 0, retain 6>
   |       {
   |         "platform-uuid" = <00000000000010008000001d09590ee9>
   |         "SystemAudioVolume" = <40>

As never before :censored2:

Link to comment
Share on other sites

I am sorry about vanilla SMBIOS. Newest version is 1.0.14.

But new observation:

with version 1.0.9 I have some info about memory

with version 1.0.14 I have no any RAM info with the same Boot.plist.

I can inject custom values but I want to correct AppleSMBIOS for automatic RAM detection. Is it possible?

BadRAMinfo.png

Link to comment
Share on other sites

 Share

×
×
  • Create New...