Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
Status
The first post of this thread is a WikiPost and can be edited by anyone with the appropiate permissions. Your edits will be public.
1. DXEinject originalROM.bin NewGOProm1.bin EnableGop_1.4.ffs
2. DXEinject NewGOProm1.bin NewGOPromComp.bin EnableGopDirect_1.4.ffs

Is it generated in two steps as described above?
No, it is not.

Either DXEinject originalROM.bin NewGOProm.bin EnableGop_1.4.ffs or DXEinject originalROM.bin NewGOPDirectrom.bin EnableGopDirect_1.4.ffs.
 
Have you used my Dumper?
I tried to re-flush using RomDump Macschrauber ver. 25-2-2023. But the result was the same.
The BootPicker portion of OpenCore made a difference. I have the ShowPicker set to 3 seconds, but the BootPicker does not appear and immediately proceeds to the boot dialog. BootPicker behaves normally when it is via EnableGOP.
 
[/QUOTE]
I tried to re-flush using RomDump Macschrauber ver. 25-2-2023. But the result was the same.
The BootPicker portion of OpenCore made a difference. I have the ShowPicker set to 3 seconds, but the BootPicker does not appear and immediately proceeds to the boot dialog. BootPicker behaves normally when it is via EnableGOP.

You need to redo the injection correctly starting with an unmodified dump.
The Dumper warns about but not correct it. My policy is not to modify a rom dump someone likes to flash. It just refuses to flash really bad roms with broken checksums or from totally wrong machines.

btw: 25-2-2023 is quite outdated, today we are at 18-11-2023 (day-month-year).
 
Last edited:
Restore the original ROM once and reboot. And then process it with EnableGOPDirect?
This doesnt matter. There must be simply just one EnableGop module in the firmware.

For the record: inmho the correct way is to inject it to a rebuilt firmware or at least to a firmware what has got a deep nvram reset before (triple bong by holding cmd-alt-p-r continuesly).
 
  • Like
Reactions: SEJU
I then did an NVRAM reset. I have heard the boot sound 3 times. I flashed GopDirect on it but nothing changed. When the mouse is hovered over the area in the EnableGOP screen, a volume icon is drawn, and when the Mac is started normally without displaying the EnableGOP screen, it immediately proceeds to the startup process even though the ShowPicker is enabled.
The screen disturbance in OpenCore's BootPicker was resolved by enabling DirectGopRendering.
 
Hi. I write here because I got many problems with GOP enabled firmware after I upgraded my cMacPro from OpenCore 0.91 and macOS BigSur to OpenCore 0.96 and Monterey. The first strange behaviour I noticed was that I was unable to see remote video Wojtyla Skype. After that my cMP started to have other strange issues. I wrote more about this issues here and following messages. I loose much time to troubleshoot this issues, but at last, I found that they gone away reinstalling the original firmware.
Did someone experience something similar? The strange thing is that with BigSur I didn't have any of this issues, even I used the GopDirect Enabled firmware.
 
Last edited:
Big thanks to everyone who made this possible and give all the infos. I successfully flashed the firmware on my cMP5.1.
My Sapphire Nitro+ Radeon RX 590 8G shows the bootscreen now.
Next I will try my Vega 64, but I'm sure it will work, too
 
Hi. I tried this on my Mac and it seemed it was flashed successfully, but the option key at boot does nothing.


I cannot say I am crystal clear regarding the instructions and very confused when it came to which EnableGOP file should be used.


I have 5,1 2010 Mac Pro and Radeon Sapphire RX580 card / 097 OC / 12.7.2 OS

The instructions on Post 1 read:
"All GPUs work with EnableGop, unless explicitly listed as requiring EnableGopDirect"
So therefore to inject into the ROM I used dxeinject and file "EnableGop_1.4.ffs"
In my OC config there is no mention of EnableGOP but there is mention of DirectGopRendering (set to 'true')

My starting file (.rom) was NOT a dump from Mac but from a rebuilt file (.rom) made by @tsialex for me - so it tested as "never booted."
I used ROMtool 2.0 to do the flashing.

So I get no response by holding option key, only the later appearance of OC boot picker. I used Macschrauber RomDump to dump newly flashed ROM and Analyse it and this is result:

Mac Pro 2010
Firmware 144.0.0.0.0 (latest)
Serial from firmware: ••••••••••••
CRC32 checksums: ok
Bootblock of 144.0.0.0.0 (rebuilt firmware)
base_20 hardware descriptor
5 boots since last garbage collection, MTC counter: 116 - 121
VSS1 VSS2
6 (1 active) 1 Memory Configs g (ok)
6 (1 active) 0 Memory Configs h (ok)
7 (1 active) 1 Memory Configs i (ok)
1 (1 active) 1 Memory Configs j (ok)
1 (1 active) 1 Kernel Panic dumps type A: Pointer type
0 0 Microsoft certificates (ok)
2 (1 active) 1 BluetoothActiveControllerInfos (ok)
1 (1 active) 1 BluetoothInternalControllerInfos (ok)
1 (1 active) 1 current-network (ok)
3 (0 active) 0 AAPL Path Properties (ok)
11579 bytes free space of 65464
VSS1 (Formatted) (Healthy)
VSS2 (Formatted) (Healthy)

What have I done wrong here?

Thanks


PS

Also - if I can get this injection/flashing correct, do I have to change my opencore config because of this modification? Again Post 1 says: "OpenCore settings which this driver already implements can be, but do not have to be, disabled" so that implies no change right?
 
Mac Pro 2010
Firmware 144.0.0.0.0 (latest)
Serial from firmware: ••••••••••••
CRC32 checksums: ok
Bootblock of 144.0.0.0.0 (rebuilt firmware)
base_20 hardware descriptor
5 boots since last garbage collection, MTC counter: 116 - 121
VSS1 VSS2
6 (1 active) 1 Memory Configs g (ok)
6 (1 active) 0 Memory Configs h (ok)
7 (1 active) 1 Memory Configs i (ok)
1 (1 active) 1 Memory Configs j (ok)
1 (1 active) 1 Kernel Panic dumps type A: Pointer type
0 0 Microsoft certificates (ok)
2 (1 active) 1 BluetoothActiveControllerInfos (ok)
1 (1 active) 1 BluetoothInternalControllerInfos (ok)
1 (1 active) 1 current-network (ok)
3 (0 active) 0 AAPL Path Properties (ok)
11579 bytes free space of 65464
VSS1 (Formatted) (Healthy)
VSS2 (Formatted) (Healthy)

What have I done wrong here?

You didn't injected the EnableGop module to the BootROM image, or if you injected, you didn't yet flashed to the Mac Pro.
 
  • Like
Reactions: kkinto
OK thanks. That is very strange as the terminal (inject process) didn't say anything but a new .rom file was created as expected. The RomTool went through it all and reported success.

If I look at the files I see the new rom is exactly the same size as the original (the one you made for me - 4 194 304bytes). Which I suppose seems to imply that the terminal process with DXEInject actually failed?

Or RomTool reported success but did not actually do anything? IRC RomTool will not work if the Mac is not in the firmware mode?

Could there be another thing I did wrong?
 
OK thanks. That is very strange as the terminal (inject process) didn't say anything but a new .rom file was created as expected. The RomTool went through it all and reported success.

If I look at the files I see the new rom is exactly the same size as the original (the one you made for me - 4 194 304bytes). Which I suppose seems to imply that the terminal process with DXEInject actually failed?

After injection the size is exactly the same, it's a whole flash dumped BootROM image, anything different in the size of the image and you did something wrong.

You can open the injected image with UEFITool NE 0.63 and check with the GUID search for the EnableGOP GUID 3FBA58B1-F8C0-41BC-ACD8-253043A3A17F.


Screen Shot 2023-12-15 at 15.32.12.png


If the GUID above is present, DXEInject did the job. Never inject twice/inject again to a already injected image.

Or RomTool reported success but did not actually do anything? IRC RomTool will not work if the Mac is not in the firmware mode?

You can only flash a Mac Pro that is with SIP disabled and was powered on with Firmware Programming Mode.

Could there be another thing I did wrong?

Double injection? Something blocking Fimrware Programming Mode, like some PCIe SATA cards? There are loads of things that can go wrong.
 
  • Like
Reactions: 0134168 and kkinto
OK thanks. That is very strange as the terminal (inject process) didn't say anything but a new .rom file was created as expected. The RomTool went through it all and reported success.

If I look at the files I see the new rom is exactly the same size as the original (the one you made for me - 4 194 304bytes). Which I suppose seems to imply that the terminal process with DXEInject actually failed?

Or RomTool reported success but did not actually do anything? IRC RomTool will not work if the Mac is not in the firmware mode?

Could there be another thing I did wrong?

You can use the Dumper to flash the firmware.

You will see the analyses of the firmware file before you flash, also it reads back and verifies bitwise. You had seen that EnableGop was not injected if you used the Dumper.

IMG_6243.jpeg




IMG_6244.jpeg


Dosdude RomTool gives very little response, you can easily overlook that it had not flashed at all, because of the firmware write lock was active.
 
Last edited:
  • Like
Reactions: kkinto
It took me a few minutes also to get it running (being a hardware design engineer myself it has been a while since I wrote my own code for my electronics).
Here we go with the fundamentals (many ways to Rome, but here's what worked for me)
* create a folder like "GOP" or the like in your user folder on your boot drive
* put these four files in there: EfiRom (the executable), EnableGop.efi (the additional code section for the vBios), UEFIRomExtract (another executable) and the vBiosInsert.sh (shell command script)
* open terminal
* cd into your new folder (i.e. "GOP") - you can drag and drop the folder to the command line after "cd "
* add the folder path to the PATH variable with command "export PATH=$PATH:<your GOP folder here>" (again drag&drop possible for convenience, no whitespace between : and folder path, of course also without quotation marks)
* the PATH variable does not "stick" this way, so you'd have to redo the last step each time you open a terminal session -> see here to make it permanent
* now ./vBiosInstert.sh ... ... ... will run provided with the right set of input and output files

Result should look like this:

./vBiosInsert.sh -n k420.rom EnableGop.efi k420GOP.rom
Auto-detecting GOP offset...
Compressing EFI using EfiRom...
Adding Nvidia header...
Combining...
Verifying (starting at 0xFA00)...
Found compressed EFI ROM start at 0x50
Input size: 162224, Output size: 57344, Scratch size: 13376

SUCCESS.

Done.
Hi, I did as you mentioned in the post, only it doesn't work for me.
Please tell me what I did wrong?
I'm trying to edit Quadro k4200
1702808061155.png
 
@tsialex, @macshrauber. Thank you for your assistance. I started again from NVRAM reset x4 and everything unplugged except PCIe card NVMEs and startup SSD (in sata dvd tray).

I first had a trouble to backup and flash with macshrauber tool. The I realised my downloads folder is symlink to a drive that was not attached and RomDump could not access it and failed with unknown errors! By deleting and replacing symlink with new Downloads folder (Mojave still allows) then both backup and flashing were succesful.

This time the analysis has EnableGOP inside. I have not rebooted yet because I need to shutdown and starup with disk that has the OC EFI to bless it. I will savour the short time with a never booted firmware ROM again!

Thank you both for help and your softwares!

Screenshot 2023-12-17 at 16.00.27.png

Screenshot 2023-12-17 at 15.32.16.png
 
Last edited:
@tsialex, @macshrauber. Thank you for your assistance. I started again from NVRAM reset x4 and everything unplugged except PCIe card NVMEs and startup SSD (in sata dvd tray).

I first had a trouble to backup and flash with macshrauber tool. The I realised my downloads folder is symlink to a drive that was not attached and RomDump could not access it and failed with unknown errors! By deleting and replacing symlink with new Downloads folder (Mojave still allows) then both backup and flashing were succesful.

This time the analysis has EnableGOP inside. I have not rebooted yet because I need to shutdown and starup with disk that has the OC EFI to bless it. I will savour the short time with a never booted firmware ROM again!

Thank you both for help and your softwares!

View attachment 2326032
View attachment 2326033

great,
another hint to check everything, a not available Downloads folder has not come into my mind.
 
Last edited:
your commands are wrong, cd is to change directory, also you set the dot wrong before vBiosInsert.sh.
Hi! again
I carefully read and did the same as you, but I encountered a new problem
"dyld: cannot load 'EfiRom' (load command 0x80000034 is unknown)"

here are the programs I used, GOP_Updater OpenCore-0.9.7
Please tell me what I need to do so that I can edit my vBIOS
NOTE:I do the whole procedure on Mac OS 10.11.6 VMware


1702844949794.png
 
Hi! again
I carefully read and did the same as you, but I encountered a new problem
"dyld: cannot load 'EfiRom' (load command 0x80000034 is unknown)"

here are the programs I used, GOP_Updater OpenCore-0.9.7
Please tell me what I need to do so that I can edit my vBIOS
NOTE:I do the whole procedure on Mac OS 10.11.6 VMware


View attachment 2326157
I guess you have not added the additional tools, see the spoiler in post 1.

no offense, but as you have trouble with the basics: Why dont you add the EnableGop module to the Mac firmware. It makes the box providing a bootscreen to a lot of GPUs you can throw in.

Its way easier.
 
  • Like
Reactions: Larsvonhier
I guess you have not added the additional tools, see the spoiler in post 1.
Thank you for your answer, I am in no way offended, I love criticism. Moreover, I am new to this field and in the end I managed to create an EFI rom
but after looking at the spoiler I realized that my Mac 3.1 does not support
 
  • Like
Reactions: Larsvonhier
Thank you for your answer, I am in no way offended, I love criticism. Moreover, I am new to this field and in the end I managed to create an EFI rom
but after looking at the spoiler I realized that my Mac 3.1 does not support
wow, that was close. I dont guess it came so far injecting EnableGop into the Mac Pro 3,1 firmware, but if you did so that possibly gave a brick.
 
wow, that was close. I dont guess it came so far injecting EnableGop into the Mac Pro 3,1 firmware, but if you did so that possibly gave a brick.
Hi!
I will try to explain myself,I recently bought several MP 1.1, 3.1, 4.1-flashing to 5.1
but I found that PC cards do not work on these systems,I climbed into the world wide web
to solve the problem and found the TheMacElite, there is a branch "Creating a Mac Pro EFI VBIOS with EnableGop", I have successfully completed all the steps except the last one "export PATH="$PATH:/path/to/folder"
I went online again and found post by @Larsvonhier,for which I thank him so much.
As I wrote above, I am new to this field, but I really enjoy learning and gaining knowledge

NOTE: I'm not trying to reflash a MP 3.1,I want to create my own EFI.rom for video cards
 
Last edited:
Hi!
I will try to explain myself,I recently bought several MP 1.1, 3.1, 4.1-flashing to 5.1
but I found that PC cards do not work on these systems,I climbed into the world wide web
to solve the problem and found the TheMacElite, there is a branch "Creating a Mac Pro EFI VBIOS with EnableGop", I have successfully completed all the steps except the last one "export PATH="$PATH:/path/to/folder"
I went online again and found post by @Larsvonhier,for which I thank him so much.
As I wrote above, I am new to this field, but I really enjoy learning and gaining knowledge

NOTE: I'm not trying to reflash a MP 3.1,I want to create my own EFI.rom for video cards
first post says it is not compatible with MP3,1:

NOT Supported:​

  • The current version of the driver is NOT compatible with the MacPro3,1, it will make the boot process hang and should not be installed there
 
Happy New Year, Radeon VII users!

With grateful thanks for support from the OCLP hardware fund, I now have a Radeon VII and I think I’ve got a solution to the Radeon VII GOP problems.

Additional research into PCI IO cache settings [following up on previous research on main mapped memory cache settings, which led to GopBurstMode but didn't fix the Radeon VII] and some feedback from Vit and Martin Lo has convinced me that this is really looking like a bug in the Radeon VII's GOP implementation, not a bug in OpenCore.

Then what? AMD Linux drivers are OpenSource, so it might be possible to find some info there, or it might be possible to reverse-engineer the GOP driver itself, to try to work out what setting AMD haven't set that they should have. (It still looks like the video memory cache settings are wrong, but it no longer looks like this is something fixable at the UEFI level.)

But before that, maybe there is a chance that there is another Vega 20 GOP implementation out there which already works? Apart from the different Radeon VII BIOS versions available, there is one unverified Radeon VII Pro BIOS available (at least, only one that I've seen), and it is a few months newer than the non-Pro BIOSes. So first things first, maybe it's worth trying to combine the UEFI GOP from the Radeon VII Pro BIOS with the legacy BIOS section of the non-Pro BIOS, and … well, it just works! With OpenCore and EnableGop. DirectGopRendering and EnableGopDirect are even no longer needed.

I’m not quite sure what AMD were playing at here - it at least looks very much like they knew something else needed fixing, but only fixed it in the Pro GOP version - but hey, finally, here is what it seems they should have released all along.

You can just flash this to your card with amdvbflash, as normal, and then add EnableGop to your machine's firmware as per the instructions on p1. You no longer need DirectGopRendering in OpenCore.

---

@ZNDK - Based on these results I think your best bet for your similar problem is to try upgrading your AMD RX Vega 56 video BIOS - especially since your card already seems to have worked for other users. Failing that, you could possibly try the same trick of taking the GOP from the Pro version of your card and using it to replace the GOP which you currently have.

NB This is the BIOS from my PowerColor Radeon VII, with just the GOP replaced, as described. Received wisdom is that all these cards are the same, so in theory this should work on any Radeon VII, but backup your video BIOS first, and worst case scenario be prepared to reflash your card with a hardware clip. Success or failure results welcome.
 

Attachments

  • radeon_vii.pro_gop.zip
    183.9 KB · Views: 183
Last edited:
Happy New Year, Radeon VII users!

With grateful thanks for support from the OCLP hardware fund, I now have a Radeon VII and I think I’ve got a solution to the Radeon VII GOP problems.

Additional research into PCI IO cache settings and some feedback from Vit and Martin Lo has convinced me that this is really looking like a bug in the Radeon VII's GOP implementation, not a bug in OpenCore.

Then what? AMD Linux drivers are OpenSource, so it might be possible to find some info there, or it might be possible to reverse-engineer the GOP driver itself, to try to work out what setting AMD haven't set that they should have. (It still looks like the video memory cache settings are wrong, but it no longer looks like this is something fixable at the UEFI level.)

But before that, maybe there is a chance that there is another Vega 20 GOP implementation out there which already works? Apart from the different Radeon VII BIOS versions available, there is one unverified Radeon VII Pro BIOS available (at least, only one that I've seen), and it is a few months newer than the non-Pro BIOSes. So first things first, maybe it's worth trying to combine the UEFI GOP from the Radeon VII Pro BIOS with the legacy BIOS section of the non-Pro BIOS, and … well, it just works! With OpenCore and EnableGop. DirectGopRendering and EnableGopDirect are even no longer needed.

I’m not quite sure what AMD were playing at here - it at least looks very much like they knew something else needed fixing, but only fixed it in the Pro GOP version - but hey, finally, here is what it seems they should have released all along.

You can just flash this to your card with amdvbflash, as normal, and then add EnableGop to your machine's firmware as per the instructions on p1. You no longer need DirectGopRendering in OpenCore.

---

@ZNDK - Based on these results I think your best bet for your similar problem is to try upgrading your AMD RX Vega 56 video BIOS - especially since your card already seems to have worked for other users. Failing that, you could possibly try the same trick of taking the GOP from the Pro version of your card and using it to replace the GOP which you currently have.

NB This is the BIOS from my PowerColor Radeon VII, with just the GOP replaced, as described. Received wisdom is that all these cards are the same, so in theory this should work on any Radeon VII, but backup your video BIOS first, and worst case scenario be prepared to reflash your card with a hardware clip. Success or failure results welcome.
For others info, this ROM image works flawlessly on my XFX Radeon VII.

I compared the VBIOS info of this ROM to my dumped ROM in amdvbflash, all info are identical.

Besides, when I compared them by using Hex Editor, the VBIOS part are also identical.

So, as Bmju pointed out, even that ROM's VBIOS part was dumped from a PowerColor card, it should work on all Radeon VII. So far, I haven't see any manufacture info in the VBIOS. It seems regardless of the branding, all Radeon VII share use the original Radeon VII VBIOS from AMD.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.