Jump to content
18 posts in this topic

Recommended Posts

Hey, so my Hackintosh rig (i7 4770, GTX 770, Asus Z87) only boots with proper video if I pass "GraphicsEnabler=No" in Chameleon at boot.  For some reason, adding it to org.chameleon.boot.plist does absolutely nothing; I still have to pass the argument for video to display correctly.  Am I doing something wrong?  I've tried adding "GraphicsEnabler=No" to the kernel arguments section, as well as adding:

 

<key>GraphicsEnabler</key>

<string>No</string>

 

or

 

<key>GraphicsEnabler</key>

<false/>

Kepler based nvidia cards and up do not need Graphics Enabler in order to work. In most cases, setting GraphicsEnabler=y makes it worse.

 

(it's GraphicsEnabler=no or GraphicsEnabler=n)

 

Make sure your iGPU (if you have that) is completely disabled in the BIOS.

 

If you have the slightest hint of iGPU enabled, OS X will want it to be the primary GPU, and you will have to make it work before you can use the GTX 770 as well. But then the GTX 770 will be secondary GPU, and only good for CUDA and OpenCL use.

I think you misunderstood -- I'm trying to disable the enabler to begin with.  However, unless I expressly pass it in at boot to Chameleon, it ignores the line in the plist and my display doesn't display correctly.  I'm trying to make it so I don't have to pass that argument at startup.  The BIOS does not have an option to completely disable the iGPU, but I set the default GPU to PCIe.

I think you misunderstood -- I'm trying to disable the enabler to begin with.  However, unless I expressly pass it in at boot to Chameleon, it ignores the line in the plist and my display doesn't display correctly.  I'm trying to make it so I don't have to pass that argument at startup.  The BIOS does not have an option to completely disable the iGPU, but I set the default GPU to PCIe.

GraphicsEnabler is not a kernel flag, it is a boot loader flag. And Chameleon doesn't understand <false/> (that's a Clover config.plist thing).

 

Syntax...

<key>GraphicsEnabler</key>
<string>No</string>
... is correct. All the others you tried were incorrect.

@ tattar

 

...and...(I understood perfectly what you meant) if you're setting GraphicsEnabler=n and you still get a "weird" display it's probably because setting your primary GPU to PCIE does not disable the iGPU.

 

For some reason OS X requires the iGPU to be primary gpu in a system with discrete GPU and iGPU.

 

Another user I talked to recently solved this issue by removing all references to GFX0 (this is all iGPU code) from his DSDT.

 

My BIOS allows me to completely disable iGPU (I have HD4000) but - I believe because of this DSDT GFX0 device code that I haven't removed - for example HWMonitor still sees my GTX 660 as "GPU 2" and the temp sensor reading in both the Unigine benchmarks is completely off because it wants to show GPU0 - which is disabled.

 

Check for this - run Heaven or Valley or check your HWMonitor GPU reading. If it says GPU 2, try removing all references to GFX0 in your DSDT and see what happens.

Valley doesn't seem to mention anything about GPU2 (and it wouldn't run unless I booted with GraphicsEnabler=No entered at the CHameleon prompt).  As for HWMonitor, it's not telling me anything except information about my disks.  System Profiler only detects one card.

 

Booting without passing anything at the Chameleon prompt causes System Profiler to identify the card as a "Gigabyte Geforce GTX 770", while booting with GraphicsEnabler=No entered causes it to identify it as "NVIDIA Geforce GTX 770 4095 MB".

Valley doesn't seem to mention anything about GPU2 (and it wouldn't run unless I booted with GraphicsEnabler=No entered at the CHameleon prompt).  As for HWMonitor, it's not telling me anything except information about my disks.  System Profiler only detects one card.

 

Booting without passing anything at the Chameleon prompt causes System Profiler to identify the card as a "Gigabyte Geforce GTX 770", while booting with GraphicsEnabler=No entered causes it to identify it as "NVIDIA Geforce GTX 770 4095 MB".

Perhaps you should post the contents of your /Extra/org.chameleon.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>Default Partition</key>
    <string>hd(2,2)</string>
    <key>GraphicsEnabler</key>
    <string>No</string>
    <key>Kernel</key>
    <string>mach_kernel</string>
    <key>Kernel Flags</key>
    <string>PCIRootUID=0 nvda_drv=1</string>
    <key>Timeout</key>
    <string>5</string>
    <key>UseKernelCache</key>
    <string>Yes</string>

</dict>
</plist>
 

 

EDIT:  After installing the FakeSMC plugins, I now have temperature readings for CPU cores 1-4, the CPU package, and the GPU die.  No GPU1 or GPU2.

PCIRootUID=0 is never necessary as 0 is what Chameleon defaults to when it can't detect the PCIRoot correctly.

 

You only need that flag in the specific case that your PCIRoot is something else than 0 and Chameleon is unable to automatically detect it.

 

I see you don't have EthernetBuiltIn=y, are you using NullEthernet.kext?

 

Apart from that, your Boot.plist looks fine.

 

Just to show you what I meant with HWMonitor.. note that I have one GPU in my PC, my HD4000 IGPU is explicitly disabled in the BIOS.

Screen Shot 2014-05-21 at 23.18.57.png

I guess the next thing you can try is removing all the GFX0 code from your DSDT and see if that helps.

 


<?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>Default Partition</key>
    <string>hd(2,2)</string>
    <key>GraphicsEnabler</key>
    <string>No</string>
    <key>Kernel</key>
    <string>mach_kernel</string>
    <key>Kernel Flags</key>
    <string>PCIRootUID=0 nvda_drv=1</string>
    <key>Timeout</key>
    <string>5</string>
    <key>UseKernelCache</key>
    <string>Yes</string>

</dict>
</plist>

 

 

If that is the org.chameleon.Boot.plist you're using, I don't see why you'd have any difference in typing GraphicsEnabler=No at the bootloader.

 

But I suspect... you have something going on with multiple partitions (or maybe misnamed org.chameleon.Boot.plist, or case sensitive file system, or...) where you're not picking up the plist you think you are.

Would that be the case?  Chameleon is currently booting from a tiny (1GB) USB SSD plugged into a USB header on the motherboard.  Would it be trying to read the config from the Extras/org.chameleon.Boot.plist on the volume I select from the Chameleon prompt, rather than the one on the SSD?

 

EDIT:  Just tried to copy the plist from /Volumes/Boot/Extras to /Extras, didn't work.

You're making things harder than they need to be.

 

It's not /Extras - it's Extra

 

if it's named "extras" then nothing you place there will have any effect.

 

Either

 

1. Edit the /Extra/org.chameleon.Boot.plist on the volume you are booting, or

2. Get rid of /Extra on your OS X drive entirely and stick to using the one on your USB booter, or

3. Install Chameleon properly to your OS X harddrive, configure it properly, and stop using the USB booter.

He already used Chameleon Wizard, hence the redundant PCIRootUID=0 flag..

 

Chameleon Wizard is outdated and has no support for many Chameleon configuration settings. The author has stated that he can't be bothered.

 

Yes it's possible that GraphicsEnabler=y could be remembered by the NVRAM module (there is a bug in Chameleon or in the module where it keeps anything you typed on the boot command line until you wipe the nvram) but he isn't using the nvram module. If he was he would have no reason to specify nvda_drv=1 in his kernel flags string.

 

Besides, he is booting with no theme, at least according to his Boot.plist. That means he can see what's on the command line on each boot. So he would probably have noticed if it said GraphicsEnabler=y while he was typing GraphicsEnabler=n.... lol

Unless your syntax is wrong or the Boot.plist is somehow broken or corrupted, all flags in it "load".

 

To see exactly what Chameleon is doing before OS X starts booting, add

<key>wait</key>
<string>y</string>

to your Boot.plist.

 

Or get bdmesg (compiles with Chameleon) and copy it to /usr/bin

Then enter bdmesg in terminal.app after booting.

×
×
  • Create New...