Dienstag, 28. Juli 2009

How to enable/use the new Features of Chameleon 2.0 RC2

I had some problems to find out how to enable and use the new features of Chameleon 2.0 RC2. These options are hidden in the Installer and not enabled by default. Push the Customize button and open Options:



Selecting one of these options will make an entry in the com.apple.Boot.plist file located in the Extra folder. Here is the result if you select all the options.

Extra/com.apple.Boot.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string></string>
<key>UHCIreset</key>
<string>y</string>
<key>GUI</key>
<string>n</string>
<key>GraphicsEnabler</key>
<string>y</string>
<key>ForceWake</key>
<string>y</string>
<key>ForceHPET</key>
<string>y</string>
<key>EthernetBuiltIn</key>
<string>y</string>
<key>EHCIacquire</key>
<string>y</string>
</dict>
</plist>


To use the new dynamic configuration features of Chameleon 2.0 RC2 you must delete the device-properties in your com.apple.Boot.plist. The device-properties you had made with EFIStudio.

Update: Unfortunately the new features are not working for me. Chameleon detects my nVidia 7300 GT graphic card and the 2 onboard ethernet chips, but after booting Mac OS X I only have VESA graphic and the ethernet ports are not built-in. Here is a screenshot of the Chameleon debug output:


Maybe I will find some time to dig into the Chameleon source code to fix this bug. I already compiled Chameleon and it worked, so I could start debugging. For the time being I will stay with my "old" Chameleon RC1 com.apple.Boot.plist:
<?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>Kernel</key>
<string>mach_kernel</string>
<key>Kernel Flags</key>
<string></string>
<key>Default Partition</key>
<string>hd(1,2)</string>
<key>Legacy Logo</key>
<string>Yes</string>
<key>Timeout</key>
<string>3</string>
<key>device-properties</key>
<string>ea02000001000000030000003f0000000100000002010c00d041030a0100000001010600041c0101060000007fff0400160000006200750069006c0074002d0069006e0000000500000001600200000d00000002010c00d041030a010000000101060000010101060000007fff04000e0000004e00560050004d0000002000000001000000000000000000000000000000000000000000000000000000220000005600520041004d002c0074006f00740061006c00730069007a006500000008000000000000101c0000006400650076006900630065005f00740079007000650000000f0000004e5644412c506172656e740e0000006e0061006d00650000000b000000646973706c617922000000400030002c006400650076006900630065005f00740079007000650000000b000000646973706c617922000000400031002c006400650076006900630065005f00740079007000650000000b000000646973706c6179100000006d006f00640065006c0000001a0000006e5669646961204765466f726365203733303020475420000000400031002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d616314000000400030002c006e0061006d0065000000120000004e5644412c446973706c61792d4114000000400031002c006e0061006d0065000000120000004e5644412c446973706c61792d4220000000400030002c0063006f006d00700061007400690062006c00650000000e0000004e5644412c4e564d6163100000004e00560043004100500000001800000004000000000003000c00000000000007000000001e00000072006f006d002d007200650076006900730069006f006e0000002e0000006e5669646961204765466f7263652037333030204754204f70656e474c20456e67696e65205b4546495d3f0000000100000002010c00d041030a0100000001010600051c0101060000007fff0400160000006200750069006c0074002d0069006e0000000500000001</string>
</dict>
</plist>

Update 2: The autodetection is working, but this new Chameleon feature needs teh value UID=0 for the PCI-root-device PCI0. Unfortunately all Gigabyte mainboards I has seen so far are using the value UID=1. This can be fixed by patching the DSDT (change is marked green):
Scope (\_SB)
{
Device (PWRB)
{
Name (_HID, EisaId ("PNP0C0C"))
Method (_STA, 0, NotSerialized)
{
Return (0x0B)
}
}

Device (PCI0)
{
Name (_HID, EisaId ("PNP0A03"))
Name (_ADR, 0x00)
Name (_UID, 0x00)
Name (_BBN, 0x00)
Method (_S3D, 0, NotSerialized)

Kommentare:

  1. Hi!

    How did you make that Chameleon Debug Screenshot? How can i enable debugging so that i need to press a key to continue booting?

    I would like to get that debug output with my DSDT.aml tests.

    AntwortenLöschen
  2. Hi!

    To enable these Chameleon debug messages you must boot in verbose mode. Do do so select the bootdrive and press then "Key-Down" to open a little menu. Select "Boot verbose" and you will see these messages. Add a property <key>Wait</key><string>Yes</string> to your com.apple.Boot.plist and Chameleon will wait for any keypress to continue booting. This gives you time to read and study the debug messages.

    AntwortenLöschen
  3. Its probably not working because the _UID of your Pci root device in you DSDT is not 0. If thats the case simply put a 0x00 or Zero there and try it again.

    AntwortenLöschen
  4. Thanks alot fassl, changing the _UID of PCI0 to Zero does working :-)))

    AntwortenLöschen
  5. Hello, I am having the same issue. Where do I make this change exactly? I'm not familiar with DSDT.aml.

    AntwortenLöschen