Contribute
Register

R9 280X Black Screen in High Sierra

Status
Not open for further replies.
Joined
Jan 22, 2011
Messages
10
Motherboard
ASRock Z490 Phantom Gaming 4
CPU
i7-10700KF
Graphics
RX 6800
Mac
  1. iMac
Mobile Phone
  1. iOS
I just downloaded High Sierra i followed tonymacx86 guide for dirrect update but just when the os is supposed to load i got black screen any help appreciated.

H77-DS3H - ASUS R9 280X DirectCUII and 2500K.

FakeSMC and Lilu.kext updated to last versions. in 10.12.6 everything is butter smooth
 
I just downloaded High Sierra i followed tonymacx86 guide for dirrect update but just when the os is supposed to load i got black screen any help appreciated.

H77-DS3H - ASUS R9 280X DirectCUII and 2500K.

FakeSMC and Lilu.kext updated to last versions. in 10.12.6 everything is butter smooth
I have been having the same issue with Radeon HD 7970 and Intel HD 4600 been struggling to find a fix for it since the very early beta days. Also tried a Apple brand Radeon HD 5870 with no luck. I’ve tried lilu.kext with WhateverGreen.kext and everything . Also patched the frame buffer and I know I did it right cause I did it multiple times and works flawlessly on other versions of macOS. Hopefully someone will chim in with a fix.
 
I just downloaded High Sierra i followed tonymacx86 guide for dirrect update but just when the os is supposed to load i got black screen any help appreciated.

H77-DS3H - ASUS R9 280X DirectCUII and 2500K.

FakeSMC and Lilu.kext updated to last versions. in 10.12.6 everything is butter smooth
I have the same card! I can only boot installer if using onboard. what changed?
 
I have the same card! I can only boot installer if using onboard. what changed?
I resumed some work on this this morning and was able to get one of the two monitors to display the desktop. So the details are as follows. ASUS Sabertooth Z87 main board with AMD Radeon Hd 7970 (same device ids as R9 280X) with integrated IGPU HD 4600 clover injection on both with Hamachi frame buffer and the proper ig-platform-Id for hd 4600 unsure of the actuals currently as I’m on mobile device currently. No lilu or WhateverGreen. Using iMac 14,1 smbios. UEFI/bios settings IGPU as primary with multiple cards enabled and memory set to 64mb I have the monitor connected to the IGPU connected via HDMI with dvi adapter no issues here. The monitors connected to the HD 7970 one is connected via HDMI directly and it works with this configuration after logging in and sleeping once and waking up the other is connected via DVI-I single link directly and never gets anything other than black screen. In the morning I am planning on playing around with different smbios and see what happens and I will report back
 
that is what I had to do -- with both on I have dvi from motherboard to a monitor, then another monitor to the AMD card -- but as I say I am only seeing 512MB of ram in the about this mac section. my derp moment -- I am just trying to figure out what the change was from 10.12.6 to 10.13 -- frame buffers or something silly I am overlooking. I don't use inject AMD currently with 10.12.6 - I do not even require graphics enabler ... I've tried setting clover to inject amd with the guide here but I am missing something! I may just stay with 10.12.6 -- as I have had to rebuild from time machine backups the past few days ...
 
What mainly changed was Metal version 2.0 with the addition of eGPU support. I am getting the proper amount of vram detected even without injecting a specific framebuffer. I have always had mine work out of the box with nothing special needed up until now. Might I ask what smbios are you using. I think the real issue here is the eGPU support on iMac 14,1 and 14,2 smbios I am going to try out Mac Pro 5,1 in the morning and see what happens
 
After almost two full days of working on this I sadly have no good news to report all methods I’ve tried have failed the only way I can get all my displays working is with safe boot but then there is no acceleration and all the other draw backs to safe boot
 
After days of trying I finally got this HD7970 working with the intel HD 4600. I am currently on a mobile device so I can’t share my exact findings but I will share them when I get back to my machine. I was real close to giving up on this card and buying a new nvidia card. Glad I didn’t now. The basics of what I was doing wrong was I was patching the framebuffer connectors using the Hamachi and Futomaki framebuffer and I needed a different one. I noticed it while looking at the info.plist for the AMD7000Controller. I will post a more in depth detail post in the morning
 
System specs
main board: Asus Z87 Sabertooth
CPU: i5 4570
iGPU: Intel HD 4600 one monitor connected via Display port to HDMI to DVI adapter
GFX: VisionTek HD 7970 3GB vram flashed to Asus HD 7970 3GB vram (HD7970-3GD5) for UEFI support one monitor connected via HDMI directly and one monitor connected via DVI-I directly

What failed to work:
Initially in macOS 10.12.X I had no problems with this graphics card and system setup pretty much plug and play just set iGPU as primary inject it in clover and no problem simple as it gets. This was before I flashed the card might I add. But in the early days of the High Sierra betas I struggled to get it going and just kept saying well I wait a few more betas and hopefully they will get it fixed since I knew they were doing work on the graphics in this version and since I use this machine for iOS app development it was only nice to whats to come and need to stay with the current Xcode or the App Store refuses the beta SDKs. But when it became the final release time I knew I needed to get it all worked out once and for all. So with beta one I could get it all working with the help of lilu.kext and WhateverGreen.kext and a couple of their boot args, with PCIE as primary graphics and the iGPU as secondary but when updating it all broke. So I was back to square one again. I tried patching the frame buffers connectors Hamachi and Futomaki. This only worked if I didn't use the iGPU and well since I run one monitor on it this wasn't an option and at best could only get two of my three monitors working. One on the iGPU and one on the GFX card. I tried messing around with different SMBIOSs but it always resulted in the same results. I tried using rollback kexts from early betas but this was a desperate attempt and a method I don't ever like to do so if it worked it was for testing purposes only to see the differences.

What did work:
I finally started comparing info.plist of Sierra kexts and High Sierra kext to see what the differences were. And started comparing various IORegs and boot logs and loaded extensions from the two different versions to figure out what had changed so I could figure out some form of patch on the fly for it that would work. Then I noticed on the AMD7000Controller.kext that the Hamachi frambuffer had CFG_USE_AGDP missing and since I was using a boardID that uses none for a configuration (iMac 14,1) I figured I may need to patch a different framebuffer than Hamachi and noticed that Futomaki wasn't even in the info.plist of the 7000 controller kext. So I patched one that was in the list and had CFG_USE_AGDP = true namely Namako frambuffer since it was a four port frambuffer even though it was a very different configuration for my card it won't matter if I patch it. Since I already had gathered the port connector configuration of my card several times in failed attempts it was very easy to do. With the use of radeon_bios_decode and redsock_bios_decoder and the rom file from the GFX card gained by DPCIManager I was able to gather the port connector configurations. Here is the output of radeon_bios_decode

Code:
ATOM BIOS Rom:
    SubsystemVendorID: 0x1545 SubsystemID: 0x7970
    IOBaseAddress: 0x0000
    Filename: SV2A01.001 
    BIOS Bootup Message: TAHITI XT PCIE 3G/384B GDDR5 DLDVI-I/HDMI/2XMINI-DP 925E/1375M                 
PCI ID: 1002:6798
Connector at index 0
    Type [@offset 45282]: DisplayPort (10)
    Encoder [@offset 45286]: INTERNAL_UNIPHY2 (0x21)
    i2cid [@offset 45400]: 0x90, OSX senseid: 0x1
Connector at index 1
    Type [@offset 45292]: DisplayPort (10)
    Encoder [@offset 45296]: INTERNAL_UNIPHY2 (0x21)
    i2cid [@offset 45427]: 0x91, OSX senseid: 0x2
Connector at index 2
    Type [@offset 45302]: HDMI-A (11)
    Encoder [@offset 45306]: INTERNAL_UNIPHY1 (0x20)
    i2cid [@offset 45454]: 0x93, OSX senseid: 0x4
Connector at index 3
    Type [@offset 45312]: DVI-I (2)
    Encoder [@offset 45316]: INTERNAL_UNIPHY (0x1e)
    i2cid [@offset 45491]: 0x95, OSX senseid: 0x6
Connector at index 4
    Type [@offset 45322]: DVI-I (2)
    Encoder [@offset 45326]: INTERNAL_KLDSCP_DAC1 (0x15)
    i2cid [@offset 45491]: 0x95, OSX senseid: 0x6

Here is the output of redsock_bios_decoder

Code:
SV2A01.001  :
TAHITI XT PCIE 3G/384B GDDR5 DLDVI-I/HDMI/2XMINI-DP 925E/1375M                 
Subsystem Vendor ID: 1545
       Subsystem ID: 7970
Object Header Structure Size: 389
Connector Object Table Offset: 48
Router Object Table Offset: 0
Encoder Object Table Offset: 118
Display Path Table Offset: 12
Connector Object Id [19] which is [DISPLAY_PORT]
    encoder obj id [0x21] which is [INTERNAL_UNIPHY2 (osx txmit 0x12 [duallink 0x2] enc 0x4)] linkb: false
Connector Object Id [19] which is [DISPLAY_PORT]
    encoder obj id [0x21] which is [INTERNAL_UNIPHY2 (osx txmit 0x22 [duallink 0x2] enc 0x5)] linkb: true
Connector Object Id [12] which is [HDMI_TYPE_A]
    encoder obj id [0x20] which is [INTERNAL_UNIPHY1 (osx txmit 0x11 [duallink 0x1] enc 0x2)] linkb: false
Connector Object Id [2] which is [DVI_I]
    encoder obj id [0x1e] which is [INTERNAL_UNIPHY (osx txmit 0x10 [duallink 0x0] enc 0x0)] linkb: false
Connector Object Id [2] which is [DVI_I]
    encoder obj id [0x15] which is [INTERNAL_KLDSCP_DAC1 (osx txmit 0x00 enc 0x10?)] linkb: false

Notice the numbers that are colored these are the numbers of interest. I will start with the connector at index 0 for and explanation of how this works.

Display Port at index 0 will be 01 and so on for the others index 1 will be 02.

So pulling these numbers together for the connector at index 0 is as follows.
Code construction:
12040101
The first two digits of the constructed code from the decoders is Transmitter (12) the next two are the encoder(04) the next two are hotplug ID (01) the next two are sense ID (01)

The Namako unpatched Frambuffer connectors are as follows
Code:
Namako (4) @ 0xed900
LVDS, LVDS, DP, DP[/COLOR]
020000000001000000010151000000002205020200000000
020000000001000000010261010000001204010100000000
000400000403000000010343000000001102030300000000
000400000403000000010433000000002103040400000000

The numbers in red are where we change to the number we construct from the decoders (
12040101)
The numbers in green are the connector type
The numbers in blue are the ATY, Control Flags
The numbers in yellow are Features

Now my connector types are completely wrong with this frame buffer as I need DP, DP, HDMI, and DVI-I, So I needed to change the green numbers in the framebuffer. Here's a list of all the different connector types and their respective digits.


Connector Type LVDS 0 × 00000002 = 02 00 00 00 Note: Laptop Monitor
Connector Type DVIDL 0 × 00000004 = 04 00 00 00 Note: Dual Link DVI
Connector Type VGA 0 × 00000010 = 10 00 00 00
Connector Type SV 0 × 00000080 = 08 00 00 00
Connector Type DP = 0 × 00000400 00 04 00 00
Connector Type HDMI 0 × 00000800 = 00 08 00 00
Connector Type DVISL 0 × 00000200 = 00 02 00 00 Note: Single Link DVI

For my example I need to change all the connector sections of this framebuffer.
Old:
020000000001000000010151000000002205020200000000 (LVDS)
020000000001000000010261010000001204010100000000 (LVDS)
000400000403000000010343000000001102030300000000 (DP)
000400000403000000010433000000002103040400000000 (DP)
New:

000400000001000000010151000000002205020200000000 (DP)
000400000001000000010261010000001204010100000000 (DP)
000800000403000000010343000000001102030300000000 (HDMI)
000200000403000000010433000000002103040400000000 (DVI-I)

Now I need to change the control Flags to match the connectors which are completely wrong at this point for my card. Here's a list that explains them.

0×0002 : LVDS ControlFlag : 0×0040 and 0×0100
0×0004 : DVI ControlFlag : 0×0016, 0×0014, and 0×214
0×0010 : VGA ControlFlag : 0×0010
0×0080 : S-Video ControlFlag : 0×0002
0×0200 : DVI ControlFlag : 0×0014, 0×0214, and 0×0204
0×0400 : DisplayPort ControlFlag : 0×0100, 0×0104, 0×0304, 0×0604, and 0×0400
0×0800 : HDMI ControlFlag : 0×0200
0×1000 : DVI ControlFlag : 0×0016

Translated in to:

Connector Type DP 04 03 00 00
Connector Type DP 04 03 00 00
Connector Type HDMI 00 02 00 00
Connector Type DVIDL 14 02 00 00
Connector Type_DVISL C 04 02 00 00
Connector Type_DVISL 04 02 00 00

Bringing that together old vs new now.
Old:
000400000001000000010151000000002205020200000000 (DP)
000400000001000000010261010000001204010100000000 (DP)
000800000403000000010343000000001102030300000000 (HDMI)
000200000403000000010433000000002103040400000000 (DVI-I
New:

000400000403000000010151000000002205020200000000 (DP)
000400000403000000010261010000001204010100000000 (DP)
000800000002000000010343000000001102030300000000 (HDMI)
000200000402000000010433000000002103040400000000 (DVI-I)

Now I need to change the feature a bit and this is a section I don't fully understand yet but it is said that you can simply just zero the last two digits of the yellow section the third pair of the yellow section represent the oder of connector activation. So I change it like so old vs new
Old:
000400000403000000010151000000002205020200000000 (DP)
000400000403000000010261010000001204010100000000 (DP)
000800000002000000010343000000001102030300000000 (HDMI)
000200000402000000010433000000002103040400000000 (DVI-I)
New:

000400000403000000010100000000002205020200000000 (DP)
000400000403000000010200010000001204010100000000 (DP)
000800000002000000010300000000001102030300000000 (HDMI)

000200000402000000010400000000002103040400000000 (DVI-I)

Now notice that lonely red 1 it needs to become a zero

000400000403000000010100000000002205020200000000 (DP)
000400000403000000010200000000001204010100000000 (DP)
000800000002000000010300000000001102030300000000 (HDMI)

000200000402000000010400000000002103040400000000 (DVI-I)

Lastly we add our constructed code from earlier old vs new
Old:
000400000403000000010100000000002205020200000000 (DP)

000400000403000000010200000000001204010100000000 (DP)
000800000002000000010300000000001102030300000000 (HDMI)

000200000402000000010400000000002103040400000000 (DVI-I)
New:
000400000403000000010100000000001204010100000000 (DP)
000400000403000000010200000000002205020200000000 (DP)
000800000002000000010300000000001102030400000000 (HDMI)
000200000402000000010400000000001000040600000000 (DVI-I)

Now that I have constructed the framebuffer patch just a need to put it in my config.plist and inject ATI and select the framebuffer Namako

Code:
<key>Graphics</key>
    <dict>
        <key>EDID</key>
        <dict>
            <key>Inject</key>
            <false/>
        </dict>
        <key>FBName</key>
        <string>Namako</string>
        <key>Inject</key>
        <dict>
            <key>ATI</key>
            <true/>
            <key>Intel</key>
            <true/>
            <key>NVidia</key>
            <false/>
        </dict>
        <key>NvidiaSingle</key>
        <false/>
        <key>ig-platform-id</key>
        <string>0x0d220003</string>
    </dict>

and

Code:
<dict>
                <key>Comment</key>
                <string>connectors patch</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>
                AgAAAAABAAAAAQFRAAAAACIFAgIAAAAAAgAAAAABAAAA
                AQJhAQAAABIEAQEAAAAAAAQAAAQDAAAAAQNDAAAAABEC
                AwMAAAAAAAQAAAQDAAAAAQQzAAAAACEDBAQAAAAA
                </data>
                <key>Name</key>
                <string>AMD7000Controller</string>
                <key>Replace</key>
                <data>
                AAQAAAQDAAAAAQEBAAAAABIEAQEAAAAAAAQAAAQDAAAA
                AQIBAAAAACIFAgIAAAAAAAgAAAACAAAAAQMAAAAAABEC
                AwQAAAAAACAAAAQCAAAAAQQAAAAAABAABAYAAAAA
                </data>
            </dict>

Keep in mind all original hex values that I constructed need to be changed to base64 you can use clover configurator to do this for you. I set iGPU to primary in the UEFI/Bios and I did flash the card to support UEFI so I could disable CSM but I don't think it was needed. If you have trouble get me your graphics card rom and I will give it a go and see what I come up with you may need to try patching different frambuffers before finding the correct one. Here is a full list of the untouched frame buffers in the AMD7000Controller.kext. I hope this helps. As always happy hacking.

Code:
-------------------------AMD7000Controller.kext-------------------------

Ramen (6) @ 0xea7c0
LVDS, HDMI, DP, DP, DP, DP
020000000001000039050108000000002001050600000000
000800000402000000010200000000001000030500000000
000400000403000000010343000000001102010100000000
000400000001000000010431000000002103040300000000
000400000403000000010563000000001204020200000000
000400000001000000010651000000002205040300000000

Tako (6) @ 0xea8c0
LVDS, LVDS, DP, DP, DP, DP
020000000001000000010151000000002205020400000000
020000000001000000010261010000001204010300000000
000400000403000000010343000000001102030100000000
000400000001000000010431000000002103050500000000
000400000403000000010523000000001000040200000000
000400000001000000010611000000002001050500000000

Namako (4) @ 0xea950
LVDS, LVDS, DP, DP
020000000001000000010151000000002205020200000000
020000000001000000010261010000001204010100000000
000400000403000000010343000000001102030300000000
000400000403000000010433000000002103040400000000

Aji (4) @ 0xeaa30
DP, DP, DVI-D, HDMI
000400000403000000010101000000001204050100000000
000400000403000000010201000000002205040200000000
040000001402000000010300000000000000030600000000
000800000402000000010400000000001102010400000000

Buri (4) @ 0xeaa90
LVDS, DP, DP, HDMI
020000000001000039050100000000001000050500000000
000400000403000000090200000000001102010100000000
000400000403000000090300000000002103020200000000
000800000402000000010400000000001204030300000000

Chutoro (5) @ 0xeaaf0
LVDS, DP, DP, DP, DP
020000000001000019010100000000001204030300000000
000400000403000000010201000000001102010100000000
000400000001000000090300000000002103020200000000
000400000001000000090400000000002205040400000000
000400000403000000010500000000001000050500000000

Dashimaki (4) @ 0xeab70
DP, DP, DVI-D, HDMI
000400000403000000010101000000001204020200000000
000400000403000000010200000000002205030500000000
040000001402000000010301000000000000040400000000
000800000402000000010400000000001102010100000000

Ebi (5) @ 0xeabe0
LVDS, DP, DP, DP, DP
020000000001000019010100000000001204030300000000
000400000403000000010201000000001102010100000000
000400000001000000090301000000002103020200000000
000400000001000000090401000000002205040400000000
000400000403000000010501000000001000050500000000

Gari (5) @ 0xeac60
LVDS, DP, DP, DP, DP
020000000001000019010100000000001204030300000000
000400000403000000010201000000001102010100000000
000400000001000000090300000000002103020200000000
000400000001000000090400000000002205040400000000
000400000403000000010500000000001000050500000000

Futomaki (4) @ 0xeace0
DP, DP, DVI-D, HDMI
000400000403000000010101000000001204040100000000
000400000403000000010201000000002205050200000000
040000001402000000010300000000000000060600000000
000800000402000000010400000000001102010300000000

Hamachi (4) @ 0xead40
DP, DP, DVI-D, HDMI
000400000403000000010101000000001204050100000000
000400000403000000010201000000002205040200000000
040000001402000000010300000000000000030600000000
000800000402000000010400000000001102010400000000

OPM (6) @ 0xeade0
DP, DP, DP, DP, DP, DP
000400000403000000010001000000001102010100000000
000400000403000000010001000000002103020200000000
000400000403000000010001000000001204030300000000
000400000403000000010001000000002205040400000000
000400000403000000010001000000001000050500000000
000400001403000000010001000000002001060600000000

Ikura (1) @ 0xeae70
HDMI
000800000402000000010100000000001204030100000000

IkuraS (6) @ 0xeae90
DP, DP, DP, DP, DP, DP
000400000403000000010143000000001102010300000000
000400000403000000010233000000002103020400000000
000400000403000000010363000000001204030100000000
000400000403000000010453000000002205040200000000
000400000403000000010523000000001000050500000000
000400000403000000010613000000002001060600000000

Junsai (6) @ 0xeaf20
DP, DP, DP, DP, DP, DP
000400000403000000010001000000001204030100000000
000400000403000000010001000000002205040200000000
000400000403000000010001000000001102010300000000
000400000403000000010001000000002103020400000000
000400000403000000010001000000001000050500000000
000400000403000000010001000000002001060600000000

Kani (1) @ 0xeafb0
HDMI
000800000402000000010100000000001204030100000000

KaniS (6) @ 0xeafd0
DP, DP, DP, DP, DP, DP
000400000403000000010143000000001102010300000000
000400000403000000010233000000002103020400000000
000400000403000000010363000000001204030100000000
000400000403000000010453000000002205040200000000
000400000403000000010523000000001000050500000000
000400000403000000010613000000002001060600000000

DashimakiS (4) @ 0xeb060
DP, DP, DVI-D, HDMI
000400000403000000010101000000001204020200000000
000400000403000000010201000000002205030500000000
040000001402000000010300000000000000040400000000
000800000402000000010400000000001102010100000000

Maguro (1) @ 0xeb0c0
HDMI
000800000402000000010100000000001204030100000000

MaguroS (6) @ 0xeb0e0
DP, DP, DP, DP, DP, DP
000400000403000000010143000000001102010300000000
000400000403000000010233000000002103020400000000
000400000403000000010363000000001204030100000000
000400000403000000010453000000002205040200000000
000400000403000000010523000000001000050500000000
000400000403000000010613000000002001060600000000
 
I have the same problem as the OP: I followed the guide for direct update from Sierra; it starts verbose booting all right, but when the High Sierra (10.13.1) OS installer GUI is supposed to load I get a black screen

Hardware: GA-Z87X-OC Force - Radeon R9 280X - Core i7-4770K
Clover 4818 - kexts/Other: FakeSMC.kext, Lilu.kext, WhateverGreen.kext
Two monitors are plugged into two DVI ports

Graphics and everything (incl. sleep) work fine in Sierra 10.12.6

I additionally tried the suggestion from elsewhere, that AMD cards in High Sierra need driver rollback from Sierra. I included the following 10.12.6 kexts in a modified BaseSystem.dmg in 'macOS Install Data':
  • AMD7000Controller.kext
  • AMDFramebuffer.kext
  • AMDRadeonX4000.kext
  • AMDSupport.kext
  • IOAcceleratorFamily2.kext
But the system crashed with a KP.

Has anyone found another solution which does not require the fancy framebuffer editing described by carpentryplus25? I do not think I could figure out the framebuffer, like he did.
 
Status
Not open for further replies.
Back
Top