Contribute
Register

Guide How to Patch AMD Framebuffers for High Sierra using Clover

Status
Not open for further replies.
This is such an excellent guide thank you carpentryplus25
Once I realised I could follow your template without understanding I jumped in and have more or less got ready to test and troubleshoot, yet am stuck at a schoolboy error of kextcache cleaning.
iv'e not found any reference to this error in google so have tried NVRAM and kext cache cleanup tool which does not do this job,

so before I even get to test it I think I should clean my cache properly and then see where im at....
any ideas here?
ta

debug files attached
View attachment 359261
simple missing a space should be kextcache -Boot -U /
 
The issue here that you are having is you have a card that doesn't have the same number of ports as macOS expects. You must use one of the two AMD8000Controller frame buffers for that card. You need to change only the first four port connectors, clover will not patch the data if the length of data doesn't match. So in your custom frambuffer patch you are missing some bytes of data from the last two ports macOS expects. So clover isn't applying any patch. You are telling clover to do this.

AMD8000Controller
Find [

00040000 04030000 00010300 00000000 12040303 00000000
00040000 04030000 00010100 00000000 11020101 00000000
00040000 04030000 00010200 00000000 21030202 00000000
00040000 04030000 00010400 00000000 22050404 00000000
00040000 04030000 00010500 00000000 10000505 00000000
00040000 04030000 00010600 00000000 20010606 00000000]

Replace[
00040000 04030000 00010400 00000000 12040201 00000000
00080000 04020000 00010100 00000000 22050303 00000000
04000000 14020000 00010200 00000000 11020104 00000000
04000000 14020000 00010300 00000000 10000606 00000000]

Which clover will not do. You should be telling clover to do this.

AMD8000Controller
Find [

00040000 04030000 00010300 00000000 12040303 00000000
00040000 04030000 00010100 00000000 11020101 00000000
00040000 04030000 00010200 00000000 21030202 00000000
00040000 04030000 00010400 00000000 22050404 00000000
00040000 04030000 00010500 00000000 10000505 00000000
00040000 04030000 00010600 00000000 20010606 00000000]

Replace[
00040000 04030000 00010400 00000000 12040201 00000000
00080000 04020000 00010100 00000000 22050303 00000000
04000000 14020000 00010200 00000000 11020104 00000000
04000000 14020000 00010300 00000000 10000606 00000000
00040000 04030000 00010500 00000000 10000505 00000000
00040000 04030000 00010600 00000000 20010606 00000000]

Clover is very good at changing data of the same length, but clover cannot change data length never ever is this possible not with any boot loader is modifying binary data length possible.

Hi after multiple tries I got it working with HDMI and DP port, but I still have DVI-D Flickering issues. Since I wanted full acceleration with H.264 Hardware Encoding I even patched Intel HD 630 Injects.

When I use the Baladi and patch the above Framebuffer you asked me to replace. Im getting it to work with a single monitor but the minute I connect my second monitor to the DP port both the monitors goes black until I remove the monitor from DP and do a hard restart.

Right now the issue is when I boot with dual monitor (HDMI and DP) it boots to black screen but if I remove connection from DP and reboot, it boots perfectly fine and then I connect my second monitor to the DP port It Works out of the blue!! (This is for "Lagatto" as Framebuffer and patch on AMD9000Controller), I don't understand why I can't boot with both the monitors connected.

I have attached my Clover please take a look at it(Lagatto).
 

Attachments

  • EFI.zip
    22.5 MB · Views: 117
Hi after multiple tries I got it working with HDMI and DP port, but I still have DVI-D Flickering issues. Since I wanted full acceleration with H.264 Hardware Encoding I even patched Intel HD 630 Injects.

When I use the Baladi and patch the above Framebuffer you asked me to replace. Im getting it to work with a single monitor but the minute I connect my second monitor to the DP port both the monitors goes black until I remove the monitor from DP and do a hard restart.

Right now the issue is when I boot with dual monitor (HDMI and DP) it boots to black screen but if I remove connection from DP and reboot, it boots perfectly fine and then I connect my second monitor to the DP port It Works out of the blue!! (This is for "Lagatto" as Framebuffer and patch on AMD9000Controller), I don't understand why I can't boot with both the monitors connected.

I have attached my Clover please take a look at it(Lagatto).

Hi there I am away from my machines at the moment and using mobile. I won’t be back to them until really late today. However I was wondering what macOS version you are using ?
 
Hi there I am away from my machines at the moment and using mobile. I won’t be back to them until really late today. However I was wondering what macOS version you are using ?
Im using Mojave 10.14.3
399364



399365



399367


Should this be showing both my internal(Intel HD 630) and Discrete Graphic cards?? I patched HD 630 for .h264 and now I have Hardware Decoders working I don't know if its taking my Intel HD 630 or ATI Radeon Graphic Card for Video Decoding.

Is my Clover EFI good? @carpentryplus25
 
Last edited:
edit
 
Last edited:
Hi, Im having trouble constructing a working LVDS connector patch. the bios decoder output shows FF as hotplugID, I tried 00, but boot hangs at IOscreenlockstate. attached is a bios file and decoder output.

<edit> got it working in Sierra with the following buri lvds patch
Code:
<dict>

                <key>Comment</key>

                <string>connectors patch</string>

                <key>Disabled</key>

                <false/>

                <key>Find</key>

                <data>

                AgAAAAABAAA5BQEAAAAAABAABQUAAAAA

                </data>

                <key>InfoPlistPatch</key>

                <false/>

                <key>Name</key>

                <string>AMD7000Controller</string>

                <key>Replace</key>

                <data>

                AgAAAEAAAAA5BQEAAAAAABAAAAUAAAAA

                </data>

            </dict>
Code:
c0000.bin
ATOM BIOS Rom:
    SubsystemVendorID: 0x103c SubsystemID: 0x176b
    IOBaseAddress: 0x4000
    Filename: BR44321.001
    BIOS Bootup Message:
HP / Foxconn Chelsea XTGL Velma GDDR5 64Mx16 350e/150m 0.9V OPM            

PCI ID: 1002:682d
Connector at index 0
    Type [@offset 46240]: LVDS (7)
    Encoder [@offset 46244]: INTERNAL_UNIPHY (0x1e)
    i2cid [@offset 46368]: 0x94, OSX senseid: 0x5
    HotPlugID: ff
Connector at index 2
    Type [@offset 46260]: DisplayPort (10)
    Encoder [@offset 46264]: INTERNAL_UNIPHY1 (0x20)
    i2cid [@offset 46422]: 0x90, OSX senseid: 0x1
    HotPlugID: 1
Connector at index 3
    Type [@offset 46270]: DisplayPort (10)
    Encoder [@offset 46274]: INTERNAL_UNIPHY1 (0x20)
    i2cid [@offset 46449]: 0x91, OSX senseid: 0x2
    HotPlugID: 2
Connector at index 4
    Type [@offset 46280]: DisplayPort (10)
    Encoder [@offset 46284]: INTERNAL_UNIPHY2 (0x21)
    i2cid [@offset 46476]: 0x92, OSX senseid: 0x3
    HotPlugID: 3
Connector at index 5
    Type [@offset 46290]: VGA (1)
    Encoder [@offset 46294]: INTERNAL_KLDSCP_DAC1 (0x15)
    i2cid [@offset 46503]: 0x97, OSX senseid: 0x8
   
    c0000.bin
BR44321.001 :

HP / Foxconn Chelsea XTGL Velma GDDR5 64Mx16 350e/150m 0.9V OPM            

Subsystem Vendor ID: 103c
       Subsystem ID: 176b
Object Header Structure Size: 405
Connector Object Table Offset: 52
Router Object Table Offset: 0
Encoder Object Table Offset: 124
Display Path Table Offset: 12
Connector Object Id [14] which is [LVDS]
    encoder obj id [0x1e] which is [INTERNAL_UNIPHY (osx txmit 0x10 [duallink 0x0] enc 0x0)] linkb: false
Connector Object Id [19] which is [DISPLAY_PORT]
    encoder obj id [0x20] which is [INTERNAL_UNIPHY1 (osx txmit 0x11 [duallink 0x1] enc 0x2)] linkb: false
Connector Object Id [19] which is [DISPLAY_PORT]
    encoder obj id [0x20] which is [INTERNAL_UNIPHY1 (osx txmit 0x21 [duallink 0x1] enc 0x3)] linkb: true
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 [5] which is [VGA]
    encoder obj id [0x15] which is [INTERNAL_KLDSCP_DAC1 (osx txmit 0x00 enc 0x10?)] linkb: false
 
Last edited:
Hi guys! I'm here to find, with you maybe, a solution :)
I have two Sapphire AMD 7770 GHz Edition 1GB on two different PC. It's a good vga until Sierra. From High Sierra I got some problems but only on one of these... I explain it better
first build working: i7-3770 - Asrock H77 Pro4/Mvp (uefi)
second build not-working: Intel Core 2 Quad Q9450 - LGA 775 Gigabyte GA-G41M-COMBO rev.2 (legacy bios with high sierra installed with the mbr patch!)

on the first build I simply use lilu kext and WGreen with boot argument on clover "radpg=15" and everything's perfect.
on the second build this method doesn't work. I really don't know why... my only hypothesis is the different motherboard (one is uefi and the other one is not...)
anyway... many months ago I did it works on the second build, always on HSierra, but I can't remember how... maybe with the framebuffer or maybe with some kext from sierra? boh!

Now I'm trying to use this framebuffers method again because the problem it's just the black screen. I use the display port and sometimes also the hdmi to try it in a different way.

May you help me to make sure that I'm doing it well? I'm going to post everything down here:

ATOM BIOS Rom:
SubsystemVendorID: 0x174b SubsystemID: 0xe244
IOBaseAddress: 0x0000
Filename: 244X03E6.O03
BIOS Bootup Message:
113-C44101001-S01

PCI ID: 1002:683d
Connector at index 0
Type [@offset 44934]: DisplayPort (10)
Encoder [@offset 44938]: INTERNAL_UNIPHY1 (0x20)
i2cid [@offset 45026]: 0x90, OSX senseid: 0x1
HotPlugID: 3
Connector at index 1
Type [@offset 44944]: HDMI-A (11)
Encoder [@offset 44948]: INTERNAL_UNIPHY2 (0x21)
i2cid [@offset 45053]: 0x91, OSX senseid: 0x2
HotPlugID: 1
Connector at index 2
Type [@offset 44954]: DVI-I (2)
Encoder [@offset 44958]: INTERNAL_UNIPHY (0x1e)
i2cid [@offset 45090]: 0x93, OSX senseid: 0x4
HotPlugID: 4
Connector at index 3
Type [@offset 44964]: DVI-I (2)
Encoder [@offset 44968]: INTERNAL_KLDSCP_DAC1 (0x15)
i2cid [@offset 45090]: 0x93, OSX senseid: 0x4
HotPlugID: 4

and

244X03E6.O03:

113-C44101001-S01

Subsystem Vendor ID: 174b
Subsystem ID: e244
Object Header Structure Size: 296
Connector Object Table Offset: 3e
Router Object Table Offset: 0
Encoder Object Table Offset: d0
Display Path Table Offset: 12
Connector Object Id [19] which is [DISPLAY_PORT]
encoder obj id [0x20] which is [INTERNAL_UNIPHY1 (osx txmit 0x11 [duallink 0x1] enc 0x2)] linkb: false
Connector Object Id [12] which is [HDMI_TYPE_A]
encoder obj id [0x21] which is [INTERNAL_UNIPHY2 (osx txmit 0x12 [duallink 0x2] enc 0x4)] 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
I dump this info using the rom taken from the dcpi manager on the first build working with whatevergreen.
415574


My VGA has 3 display port in this order: HDMI - Display Port - DVI-I (DualLink)
I'm trying to use the NAMAKO Framebuffer but I really dunnow if it is the right one...
Code:
Namako Framebuffer of High Sierra 10.13.6
02000000 00010000 00010151 20000000 22050202 00000000
02000000 00010000 00010261 11000000 12040101 00000000
00040000 04030000 00010343 40000000 11020303 00000000
00040000 04030000 00010433 30000000 21030404 00000000
and this is the one I patched using your guide...
Code:
Namako Patched for 7770 GHz Edition Sapphire

00040000 04030000 00010100 00000000 11020301 00000000 (DP)

00080000 04020000 00010200 00000000 12040102 00000000 (HDMI)

04000000 14020000 00010300 00000000 10000404 00000000 (DVI-I)

04000000 14020000 00010400 00000000 00100404 00000000 (DVI-I) <- maybe this is useless

I put all of this on the usb clover that I use for booting because I never reach the desktop on this build. I already rebuilt the cache from single user but still black screen... why? any suggestions?
 
Last edited:
Hi guys! I'm here to find, with you maybe, a solution :)
I have two Sapphire AMD 7770 GHz Edition 1GB on two different PC. It's a good vga until Sierra. From High Sierra I got some problems but only on one of these... I explain it better
first build working: i7-3770 - Asrock H77 Pro4/Mvp (uefi)
second build not-working: Intel Core 2 Quad Q9450 - LGA 775 Gigabyte GA-G41M-COMBO rev.2 (legacy bios with high sierra installed with the mbr patch!)

on the first build I simply use lilu kext and WGreen with boot argument on clover "radpg=15" and everything's perfect.
on the second build this method doesn't work. I really don't know why... my only hypothesis is the different motherboard (one is uefi and the other one is not...)
anyway... many months ago I did it works on the second build, always on HSierra, but I can't remember how... maybe with the framebuffer or maybe with some kext from sierra? boh!

Now I'm trying to use this framebuffers method again because the problem it's just the black screen. I use the display port and sometimes also the hdmi to try it in a different way.

May you help me to make sure that I'm doing it well? I'm going to post everything down here:

ATOM BIOS Rom:
SubsystemVendorID: 0x174b SubsystemID: 0xe244
IOBaseAddress: 0x0000
Filename: 244X03E6.O03
BIOS Bootup Message:
113-C44101001-S01

PCI ID: 1002:683d
Connector at index 0
Type [@offset 44934]: DisplayPort (10)
Encoder [@offset 44938]: INTERNAL_UNIPHY1 (0x20)
i2cid [@offset 45026]: 0x90, OSX senseid: 0x1
HotPlugID: 3
Connector at index 1
Type [@offset 44944]: HDMI-A (11)
Encoder [@offset 44948]: INTERNAL_UNIPHY2 (0x21)
i2cid [@offset 45053]: 0x91, OSX senseid: 0x2
HotPlugID: 1
Connector at index 2
Type [@offset 44954]: DVI-I (2)
Encoder [@offset 44958]: INTERNAL_UNIPHY (0x1e)
i2cid [@offset 45090]: 0x93, OSX senseid: 0x4
HotPlugID: 4
Connector at index 3
Type [@offset 44964]: DVI-I (2)
Encoder [@offset 44968]: INTERNAL_KLDSCP_DAC1 (0x15)
i2cid [@offset 45090]: 0x93, OSX senseid: 0x4
HotPlugID: 4

and

244X03E6.O03:

113-C44101001-S01

Subsystem Vendor ID: 174b
Subsystem ID: e244
Object Header Structure Size: 296
Connector Object Table Offset: 3e
Router Object Table Offset: 0
Encoder Object Table Offset: d0
Display Path Table Offset: 12
Connector Object Id [19] which is [DISPLAY_PORT]
encoder obj id [0x20] which is [INTERNAL_UNIPHY1 (osx txmit 0x11 [duallink 0x1] enc 0x2)] linkb: false
Connector Object Id [12] which is [HDMI_TYPE_A]
encoder obj id [0x21] which is [INTERNAL_UNIPHY2 (osx txmit 0x12 [duallink 0x2] enc 0x4)] 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
I dump this info using the rom taken from the dcpi manager on the first build working with whatevergreen.


My VGA has 3 display port in this order: HDMI - Display Port - DVI-I (DualLink)
I'm trying to use the NAMAKO Framebuffer but I really dunnow if it is the right one...
Code:
Namako Framebuffer of High Sierra 10.13.6
02000000 00010000 00010151 20000000 22050202 00000000
02000000 00010000 00010261 11000000 12040101 00000000
00040000 04030000 00010343 40000000 11020303 00000000
00040000 04030000 00010433 30000000 21030404 00000000
and this is the one I patched using your guide...
Code:
Namako Patched for 7770 GHz Edition Sapphire

00040000 04030000 00010100 00000000 11020301 00000000 (DP)

00080000 04020000 00010200 00000000 12040102 00000000 (HDMI)

04000000 14020000 00010300 00000000 10000404 00000000 (DVI-I)

04000000 14020000 00010400 00000000 00100404 00000000 (DVI-I) <- maybe this is useless

I put all of this on the usb clover that I use for booting because I never reach the desktop on this build. I already rebuilt the cache from single user but still black screen... why? any suggestions?

Hi I can confirm you that I’m having the exact same problem:

A Sapphire AMD 7770 GHz Edition 1GB + old Gigabyte P45 (not UEFI) gets a black screen with whatevergreen + radpg=15 in HS (not tried Mojave yet)

Next steep will be to inject or patch AMD framebuffer

Did you manage it to work?
 
Hi I can confirm you that I’m having the exact same problem:

A Sapphire AMD 7770 GHz Edition 1GB + old Gigabyte P45 (not UEFI) gets a black screen with whatevergreen + radpg=15 in HS (not tried Mojave yet)

Next steep will be to inject or patch AMD framebuffer

Did you manage it to work?
not yet dude. i'm waiting for someone here to see my post and tell me about my patch code :) in the meantime I think there is another way that is to use the old kext from osx sierra! I will try it later
 
Status
Not open for further replies.
Back
Top