Contribute
Register

Black Screen with MacPro 6,1 or iMac 15 or iMac 17 System Definition

hi, that is nice trick to fix 2 display problem. But btw it made resolution's boot screen show not correct have u this prob ? anw nice fix
I haven't had any resolution issues yet, but I do have my screen resolution set in my clover config.plist. It did switch my main boot monitor from HDMI to DVI. The POST BIOS loading screen is also slightly longer than before.
 
How to apply any of the solutions if cannot boot to the OS?
UPD: ok, just set system defs string back to 14,2 by hand in clover bootloader, loaded to the system, applied patch and set defs to 17,1 again
 
Last edited:
In dealing with this issue I have run into a situation where I have an endless loop of installing the Multibeast fixes (audio, ethernet, etc) then when I run the AGDP app it works to enable my Nvidia Web drivers but wipes out the multibeast settings. I recorded a video of the loop of fixes wiping out fixes. Has anyone seen this before?

My machine is:

MOBO: GA-Z170M-D3H
Graphics: GTX 970
CPU: i7 6700K, Skylake 4GHz

 
The MacPro6,1 and iMac15/17 perform special functions on their specific OEM GPUs/Displays. The MacPro6,1 unloads 1 GPU (with no ports) and leaves one functional for it's pseudo CrossFire function. The iMac15/17s apply a special EDID for their 5K displays.

The following snippet is taken from /System/Library/Extensions/AppleGraphicsControl.kext/Contents/PlugIns/AppleGraphicsDevicePolicy.kext/Contents/Info.plist:

Code:
...
<string>com.apple.driver.AppleGraphicsDevicePolicy</string>
<key>Config1</key>
<dict>
    <key>GFX1</key>
    <dict>
        <key>unload</key>
        <true/>
    </dict>
</dict>
<key>Config2</key>
<dict>
    <key>GFX0</key>
    <dict>
       <key>EDID</key>
       <dict>
           <key>0610ae02</key>
           <data>
           AP///////wAGEAOuAAAAAAwYAQS1
           PCJ4IsgFp1VLoCYMUFQAAAABAQEB
           AQEBAQEBAQEBAQEBAAAAEAAAAAAA
           AAAAAAAAAAAAAAAAEAAAAAAAAAAA
           AAAAAAAAAAAA/ABpTWFjCiAgICAg
           ICAgAAAAAAAAAAAAAAAAAAAAAAAA
           Ai0CAx6BcPoQAAASejH8eL3MApCI
           UdNo+hAA9fn6//8AAAAAAAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAAAknATeQMAAwAUgG4BhP8TnwAv
           gB8APwtRAAIABAAAAAAAAAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAAAAMeQ
           </data>
           <key>0610ae06</key>
           <data>
           AP///////wAGEAeuAAAAABsZAQS1
           PCJ4IAAAAAAAAAAAAAAAAAABAQEB
           AQEBAQEBAQEBAQEBAAAAEAAAAAAA
           AAAAAAAAAAAAAAAAEAAAAAAAAAAA
           AAAAAAAAAAAA/ABpTWFjCiAgICAg
           ICAgAAAAAAAAAAAAAAAAAAAAAAAA
           AaZwE3kDAAMAFIBuAYT/E58AL4Af
           AD8LUQACAAQAf4EY+hAAAQEAEnYx
           /HixmQIQiGLT+vj4/v//AAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAB3kA==
           </data>
           <key>0610ae0a</key>
           <data>
           AP///////wAGEAuuAAAAABoZAQS1
           PCJ4IAAAAAAAAAAAAAAAAAABAQEB
           AQEBAQEBAQEBAQEBAAAAEAAAAAAA
           AAAAAAAAAAAAAAAAEAAAAAAAAAAA
           AAAAAAAAAAAA/ABpTWFjCiAgICAg
           ICAgAAAAAAAAAAAAAAAAAAAAAAAA
           AaNwE3kDAAMAFIBuAYT/E58AL4Af
           AD8LUQACAAQAf4EY+hAAAQEAEnYx
           /Hix/wIQiGLT+vj4/v//AAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAAAAAAAAAAAAAAAAAAAAAAAAAAA
           AAARkA==
           </data>
           <key>index</key>
           <integer>0</integer>
       </dict>
       <key>unload</key>
       <false/>
...
            <key>ConfigMap</key>
            <dict>
...
   <key>Mac-42FD25EABCABB274</key>
   <string>Config2</string>
...
   <key>Mac-65CE76090165799A</key>
   <string>Config2</string>
...
   <key>Mac-B809C3757DA9BB8D</key>
   <string>Config2</string>
...
   <key>Mac-F60DEB81FF30ACF6</key>
   <string>Config1</string>
   <key>Mac-FA842E06C61E91C5</key>
   <string>Config2</string>
...

For non-Apple hardware, This can cause your GPU not to send a signal to your monitor (black screen) at boot while using the MacPro6,1 (Mac-F60DEB81FF30ACF6 board-id), or iMac15 (Mac-42FD25EABCABB274 or Mac-FA842E06C61E91C5 board-ids), or iMac17 (Mac-65CE76090165799A or Mac-B809C3757DA9BB8D board-ids) system definitions. If this is happening to you, your system will still be responsive but have no signal coming from the GPU's ports to the monitor.

How to verify that your system is functional except for video:

1. Share the screen from another Mac on your network to control the system and verify that it is functional and responsive (you must have Screen Sharing enabled). NOTE: You should be able to boot using nv_disable=1 to enable screen sharing if you have a Nvidia GPU.

2. Use a keyboard shortcut to verify that the system is responsive:
• On a Apple keyboard, the eject key will open and close my optical drive.
• On a Apple keyboard, the play button will launch iTunes and hitting it a 2nd time will start playback depending on what state the app was in when I quit it last.
• On a Apple keyboard, control + eject will bring up the the "Shut Down" dialog window with the default button being "Shut Down". When you hit enter/return it causes the default button to activate and the system will shut down properly.
• Holding down control + option + command and then pressing the power button on your case or mobo quickly (less than 1 second) will cause open apps to quit and the system will shut down properly. NOTE: Holding down the power button for 5 seconds will cause the system to hard power off and this is not proof of response from OS X (this is how you force a frozen system to power off).

If your system is unresponsive (frozen) with a black screen, the fixes outlined here probably won't help you.

Fixes:

PikeRAlpha outlined a fix for MacPro6,1 in his blog post on May 1st, 2014 where he changed Config1 to none in the above mentioned info.plist. This seems to work for the iMac15/17s as well by changing Config2 to none.


Many people have been looking for a Clover "on the fly" info.plist patch to be done at every boot but it fails because Clover's info.plist patches are only visible in the kext caches and it doesn't change the actual info.plist file. It seems that more than one kexts are reading the ConfigMap from the info.plist in it's actual file path, so putting "none" in the kext cache changes nothing. This also makes it impossible to use the dummy kext method. Even if you get a dummy kext with a patched info.plist to load instead of the original kext, the info.plist will still be read from the original kext's file path.

Pike came to the rescue (sort of) again on November 23rd, 2015 with a Clover "on the fly" binary patch for the AppleGraphicsDevicePolicy.kext
Code:
            <dict>
                <key>Comment</key>
                <string>AppleGraphicsDevicePolicy (board-id) Patch (c) Pike R. Alpha</string>
                <key>Find</key>
                <data>
                Ym9hcmQtaWQ=
                </data>
                <key>Name</key>
                <string>AppleGraphicsDevicePolicy</string>
                <key>Replace</key>
                <data>
                Ym9hcmQtaXg=
                </data>
            </dict>
This patch changes board-id to board-ix in the binary file but only seems to give the desired result if you have 1 discreet GPU. I have have 2. With 2 GPUs, one always unloads and it's unpredictable which one will work. Some people with only 1 GPU also have issues with this patch.

The easiest fully working solution I could come up with is a AppleScript app (AGDPfix.app) that patches the OEM kext's info.plist via shell scripts. OS X updates usually cause the kext to be overwritten/updated so the app must be run again after updating OS X, but it's a lot easier than manually patching the info.plist every time. I originally created v1.0 for MacPro6,1 only but have now updated it to v1.1 for use with iMac15/17 sys defs as well. Feel free to download and use the app attached below.
NOTE: You will need to use the boot argument kext-dev-mode=1 for 10.10 Yosemite.

For those of you using MacPro6,1 and willing to get a little more geeky, assigning the name GFX1 to your GPU in your ACPI tables (DSDT or SSDT) will also work without the need to patch any kexts and you won't need to worry about re-patching anything after OS X updates unless Apple changes the device policy again (credit : dgsga and furter).

In this pic from IORegistryExplorer you can see the AppleGraphicsDevicePolicyControlClient loaded on my second GPU (GTX 980) installed in PCI slot 4 (NPE7):
175050-agdp-loaded.png

In this state, it will not send a video signal from any of it's ports.

In the next pic you can see that I have injected my GTX 980 as GFX1 in NPE7 and AGDPCC is no longer loaded to it:
175051-agdp-not-loaded.png

Now all ports are functional. It's also worth noting that I have my 1st GPU (GTX Titan X) injected as GFX1 as well.

If you currently have GPU injection via DSDT or SSDT, it's as easy as changing the name. Open your DSDT or SSDT in your editor of choice (I prefer MaciASL) and change GFX0, PXSx, PEGx, or whatever it's name currently is to GFX1. Click compile and save it. If you don't currently have have your GPU injected in your DSDT or a SSDT, see this Guide to create one or more SSDTs for your GPU/s.

You should also read this post if you feel you might be having other Nvidia Web Driver related issues: Solving NVIDIA Driver Install & Loading Problems However, AGDPfix.app or naming the GPU to GFX1 will solve problem 4.

Can I use a similar method to do the opposite? i.e. Prevent a graphics card from outputting to a display. I'm hoping to stop macOS from recognising the 1080 I have installed.
 
I have two GPUs in my system, running with SMBIOS Mac Pro 6,1. I have edited my DSDT to rename both of them from H000 to GFX1. It works okay, the only problem is, the system chooses the primary GPU randomly at boot time, and the other shows no output. I only have one display connected, so half the time I have to move it back and forth between GPUs.
 
I have two also but I didn't need to change anything in the DDST. I ended up connecting the second graphics card up to a monitor's second input (he first input was connected to the other graphics card). This allowed it to show up as a display in swtichresx (though you may not need to do this to get it to show up). I then used switchresx to disable the display connected to he unwanted graphics card and this resulted in windows no longer loading onto the wrong graphics card. Unsure what switchresx is doing but you may be able to to monitor the displays config files to check for changes.

I have two GPUs in my system, running with SMBIOS Mac Pro 6,1. I have edited my DSDT to rename both of them from H000 to GFX1. It works okay, the only problem is, the system chooses the primary GPU randomly at boot time, and the other shows no output. I only have one display connected, so half the time I have to move it back and forth between GPUs.
 
Great!, AGDP fix and I finally have output on my GTX 970 displayport.

Small problem, the screen flickers after a few seconds, goes black, and comes on again.
This process repeats every 10-30 seconds. Anyone familiar with this issue?

//changed monitors, no more issue.
 
Last edited:
I am running into this black screen issue but dont have any idea where to start in correcting this. I am not familiar with editing kext. Is there a step by step from this point to do this? Im confused.
 
Hi.

I have read whole 26 pages of this post but still having the No Signal Issue AKA Black Screen :)
My rig stats are up to date in my profile.

I have made a fresh Sierra install ( had ElCapitan before and NVDIA Web drivers worked fine). Here I'm having no signal issue. Card is working perfectly fine, I can see it via Back to My Mac from my old iMac. Please see attached screenshots where full GPU is being recognised by Sierra. Unfortunately signal is being lost when I boot without driver being update.png disabled.nvidia.png monitor.pngstats.png

I'm running Sierra 10.12.2 (16C67) version and appropriate Nvidia Web drivers on 14.2 System Def. Tried AGP fix.I'm using HDMI output to my Dell UP3216Q. Should I try DisplayPort? I can try to buy a cable...

Attaching my config.plist from CLOVER. Maybe NULLPCUpowermanagment kext is playing up? I have taken it off the 10.12 and Other Folder, and changed in Config to not load kexts - still the same issue.

I have swapped to 17.1 system def with no help.

Should I try changing PREG0 to GTX1 ? See screenshot from IORegistryExplorer - I have 12 SSDT files generated by clover - all attached in a zip with DSDT - I couldn't find PREG0 as a device in them to change. Could someone have a look for me ? Or Shall I create new DSDT file ( continuing the numbering sequence) ?

Screen Shot 2017-01-08 at 15.45.52.png

Many thanks!
 

Attachments

  • configCopy.plist
    5.5 KB · Views: 256
  • DSDT and SSDT.zip
    50.3 KB · Views: 117
@ithe,

I looked over your configCopy.plist in Clover Configurator. You have mostly what I have, but here are some differences that might be issues:
On the ACPI page, you have "fixUSB" checked, I do not.
On the Boot page, you have "kext-dev-mode=1" checked, I do not.
On the Devices page, under "USB," you have "fix ownership" checked, I do not. (I do have "Inject" checked.)
On the GUI page, you set "2560x2048" for screen resolution. I was wondering why you did not use your display's native 4K resolution (3840x2160).
On the Kernel and kext patches page, you have the "Asus AICPUPM" box checked, I do not.
On the RtVariables page, you have "Use MacAddr0" entered in the "ROM" field; mine is blank.
On the SMBIOS page, you have nothing in the "Memory" fields. I have added (in slots 0 and 2) 8192 GB, 2133 MHz, Kingston, DDR4, slot count 4.
On the Install Drivers page, you show the same drivers as I show, but my drivers64UEFI folder also shows "FSinject-64.efi" (which you may also have, in which case we agree on all drivers).

Maybe nothing here will be helpful, but maybe...
 
Last edited:
Back
Top