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.
why not just start the installation of mojave ( with OpenCore, you can ignore the need of a metal card ) and just perform the 144.0.0.0 update, without installing mojave itself?
Yup, done that, worked, then flashed the firmware, it works ! :D MSI GTX 1070
 
  • Like
Reactions: h9826790
No! Completely untested and probably not. I would strongly advise upgrading to 144.0.0.0.0.

However, if you're happy to recover yourself from a brick if need be (desoldering followed CH341A + SOIC clip, or Matt card - and with a firmware backup taken before starting) then (but only then!) I'd be very happy to hear the result...
Done ! Working ! Thanks a lot !
 
  • Like
Reactions: Bmju
Update:

AMD support has been added to the EnableGop vBIOS insertion script.

In the case of AMD, considerably less space is normally available than with Nvidia, due to a strict limit of 128k for legacy and EFI parts of the potentially larger ROM image (the rest of which is only usable internally by the card itself). So far, there has largely been enough spare space on desktop format cards for Mac Pro, and not enough space on iMac cards. If there is not enough space (i.e. script reports data would be truncated) then it is necessary to strip some legacy VGA parts of the vBIOS, or check over on the iMac GPU threads here and here to see if this has already been done for your card.

EDIT: Don't forget, you can always inject EnableGop into the main system firmware instead of the GPU vBIOS - see the README.md file in the Utilities/EnableGop directory of the most recent OC builds, or here. In that case the AMD vBIOS limit does not matter.
 
Last edited:
BTW, on the Mac's with OpenCore, one can drop into the UEFI Shell at boot and use amdvbflash.efi command line tool to flash the AMD GPU instead of having to use Linux or Windows. I did that a while back to add UEFI to a legacy VBIOS.

See attached.
 

Attachments

  • amdvbflash_uefi.zip
    1,006.1 KB · Views: 169
Just modded a reconstructed 5,1 ROM image by using DXEInject with EnableGopDirect.ffs (my Radeon VII need DirectGopRendering), flashed the cMP, and a success. I can now hold Option key to boot.

So, you may update the "Tested GPU list" with Radeon VII (EnableGopDirect).
So in addition to DXEInject, we don't add Enablegop.ffs to the terminal command, but rather EnableGopDirect.ffs? Then the command for Radeon VII Flashing looks like this: ./dxeinject oldrom.bin newrom.bin enablegopdirect ffs
This is correct?
I did it with enablegop.ffs. Unfortunately, it's not the best, but it still works.
Thanks!
 
So in addition to DXEInject, we don't add Enablegop.ffs to the terminal command, but rather EnableGopDirect.ffs? Then the command for Radeon VII Flashing looks like this: ./dxeinject oldrom.bin newrom.bin enablegopdirect ffs
This is correct?
I did it with enablegop.ffs. Unfortunately, it's not the best, but it still works.
Thanks!

This is the exact command I used to mod the cMP's ROM image.
Screenshot 2023-02-28 at 15.12.25.png
 
Update:

AMD support has been added to the EnableGop vBIOS insertion script.

In the case of AMD, considerably less space is normally available than with Nvidia, due to a strict limit of 128k for legacy and EFI parts of the potentially larger ROM image (the rest of which is only usable internally by the card itself). So far, there has largely been enough spare space on desktop format cards for Mac Pro, and not enough space on iMac cards. If there is not enough space (i.e. script reports data would be truncated) then it is necessary to strip some legacy VGA parts of the vBIOS, or check over on the iMac GPU threads here and here to see if this has already been done for your card.

EDIT: Don't forget, you can always inject EnableGop into the main system firmware instead of the GPU vBIOS - see the README.md file in the Utilities/EnableGop directory of the most recent OC builds, or here. In that case the AMD vBIOS limit does not matter.
At the same time as the above update, the script was also updated to auto-detect the GOP offset - no more manually searching in a hex editor for F1 0E 00 00 and the preceding 55 AA

Searching for byte sequences in binary files is a bit fiddly to do reliably in a shell script, even more so on macOS (non-GNU grep), even more so in older macOS (other quirks in variable parsing, and in the even older grep), but this is working and tested back to OS X 10.11 El Capitan. (It could probably go back further, say to 10.7, but the script also uses the EDK-II EfiRom tool, and I haven't grabbed (or built) a version of that which works back further than 10.11.)
 
Last edited:
Unfortunately, it's not perfect either. Not all drives are visible. They come when you move the mouse. The image falls apart while loading. Not bad for a start...
Did I catch you say before that you got the same result with EnableGop.ffs, that you've got now with EnableGopDirect.ffs? i.e. Works but not perfect, and the same with either?

The imperfection itself is known - it actually only applies to this card - and there is an outstanding TODO to try again to resolve it!
 
Did I catch you say before that you got the same result with EnableGop.ffs, that you've got now with EnableGopDirect.ffs? i.e. Works but not perfect, and the same with either?

The imperfection itself is known - it actually only applies to this card - and there is an outstanding TODO to try again to resolve it!
Yes, same result, both. I hope it will be better :)
 
Yes, same result, both. I hope it will be better :)
Yes, I hope so too!

I just asked because I thought that card was supposed to work with DirectGopRendering only - @h9826790 I guess your instance of it is still DirectGopRendering only, right?
 
Yes, I hope so too!

I just asked because I thought that card was supposed to work with DirectGopRendering only - @h9826790 I guess your instance of it is still DirectGopRendering only, right?
Ok, thinking all the way backward, now I have a clue what's going on.

In fact, both EnableGop and EnableGopDirect works for the Radeon VII. However, when I performed the test (almost 3 years ago) initially, when using EnableGop via OpenCore, the screen was black, no boot picker showed up. Therefore, I assume it's not working. However, I was wrong. The Radeon VII was actually activated, but just the glitches cause nothing to show up on the screen. If I use the mouse to "paint" the screen. It should be working.

On the other hand, when I perform the test after set EnableGopDirect to true. That gitches went away magically, and I can see all the icons without any extra user input. Therefore, I deeply believed that Radeon VII need EnableGopDirect to work.

However, actually, from the very beginning, both works, it's the bug causing me have that conclusion.

So, the actual fully working condition now for RadeonVII is "EnableGopDirect via OC config".

And all "EnableGop in BootROM", "EnableGopDirect in BootROM" and "EnableGop via OC config" can activate the Radeon VII, but suffer from the same glitches. Need user input via the mouse to "paint" the icon.
 
  • Like
Reactions: roobarb! and Bmju
Thanks for your hard work here @Bmju

I just got a Vega 56, and since you updated the vbios flashing script yesterday I figured I would try to inject the EnableGop.efi via that route as opposed to messing with my cMP bootrom.

I got the vBiosInsert.sh script you linked and managed to track down copies of EfiRom and UEFIRomExtract. Got EnableGop.efi from the OpenCore 0.8.9 release.

I dumped my Vega 56 rom via AMDVBFlash on Windows, named it vega56.rom and brought it over to my Mac Pro.

I'm issuing the command:
./vBiosInsert.sh -a vega56.rom EnableGop.efi vega56Gop.rom

The output I get:
Code:
Auto-detecting GOP offset...
Compressing EFI using EfiRom...
Combining...
hexdump: temp/truncated.rom: No such file or directory
hexdump: temp/truncated.rom: Bad file descriptor
hexdump: temp/truncated.rom: No such file or directory
hexdump: temp/truncated.rom: Bad file descriptor
 - Not enough space within 128k limit - aborting!

I know you said the 128k issue is largely with iMacs. Plus, the preceding errors make me think that it's some other issue.

Any ideas? I also tried a copy of the newest ROM for my card from techpowerup and got the same exact result.

Edit: I should note that I was running the script on my cMP 5,1 running Mojave. Maybe a problem due to the old OS? Also, I just noticed that the version of EfiRom I found dates back to 2009. Couldn't find anything newer--I see the source on the EDK2 GitHub but not sure how to compile it.
 
Last edited:
Ok, thinking all the way backward, now I have a clue what's going on.

In fact, both EnableGop and EnableGopDirect works for the Radeon VII. However, when I performed the test (almost 3 years ago) initially, when using EnableGop via OpenCore, the screen was black, no boot picker showed up. Therefore, I assume it's not working. However, I was wrong. The Radeon VII was actually activated, but just the glitches cause nothing to show up on the screen. If I use the mouse to "paint" the screen. It should be working.

On the other hand, when I perform the test after set EnableGopDirect to true. That gitches went away magically, and I can see all the icons without any extra user input. Therefore, I deeply believed that Radeon VII need EnableGopDirect to work.

However, actually, from the very beginning, both works, it's the bug causing me have that conclusion.

So, the actual fully working condition now for RadeonVII is "EnableGopDirect via OC config".

And all "EnableGop in BootROM", "EnableGopDirect in BootROM" and "EnableGop via OC config" can activate the Radeon VII, but suffer from the same glitches. Need user input via the mouse to "paint" the icon.
Is it expected to improve later (eg opencore 0.9.0)?
 
Thanks for your hard work here @Bmju

I just got a Vega 56, and since you updated the vbios flashing script yesterday I figured I would try to inject the EnableGop.efi via that route as opposed to messing with my cMP bootrom.

I got the vBiosInsert.sh script you linked and managed to track down copies of EfiRom and UEFIRomExtract. Got EnableGop.efi from the OpenCore 0.8.9 release.

I dumped my Vega 56 rom via AMDVBFlash on Windows, named it vega56.rom and brought it over to my Mac Pro.

I'm issuing the command:


The output I get:
Code:
Auto-detecting GOP offset...
Compressing EFI using EfiRom...
Combining...
hexdump: temp/truncated.rom: No such file or directory
hexdump: temp/truncated.rom: Bad file descriptor
hexdump: temp/truncated.rom: No such file or directory
hexdump: temp/truncated.rom: Bad file descriptor
 - Not enough space within 128k limit - aborting!

I know you said the 128k issue is largely with iMacs. Plus, the preceding errors make me think that it's some other issue.

Any ideas? I also tried a copy of the newest ROM for my card from techpowerup and got the same exact result.

Edit: I should note that I was running the script on my cMP 5,1 running Mojave. Maybe a problem due to the old OS? Also, I just noticed that the version of EfiRom I found dates back to 2009. Couldn't find anything newer--I see the source on the EDK2 GitHub but not sure how to compile it.

Thanks for the report. I've just put up a bugfix. Please can you try the fixed version and report back.
 
Even now you flashed your cMP. As long as DirectGopRendering is enabled in OpenCore, the Radeon VII should able to provide a fully functional boot picker.
... in OpenCore, and a usable (though could be improved) recovery option with ALT key.

EDIT: And - I'm repeating myself - the graphical issue here only applies to this particular, more problematic than usual, card.
 
  • Like
Reactions: h9826790
Even now you flashed your cMP. As long as DirectGopRendering is enabled in OpenCore, the Radeon VII should able to provide a fully functional boot picker.
Unfortunately, I have OCLP, I don't know how to enable it. Do you need the same as yours? Thank!
 
... in OpenCore, and a usable (though could be improved) recovery option with ALT key.

EDIT: And - I'm repeating myself - the graphical issue here only applies to this particular, more problematic than usual, card.
Thanks for the great work, I can confirm it also works greatly with my Radeon VII to provide the Apple early boot screen. Very exiting progress, I have missed the early boot screen!

As @h9826790 earlier has pointed out, I get the exact same issue with the Radeon VII. It behaves exactly like OpenCore has behaved whenever DirectGopRendring has been set to false, with the Radeon VII. So, it seems it is not providing the direct rendering in the .ffs like it does in OpenCore.

I was thinking to try to flash the vBIOS with the updated script, and see if it then works without the artifacts and delayed drawing (only draws new update under the mousepointer - have to “paint” with it to see updated graphics). However, maybe not supported on the Radeon VII as I understand its vBIOS is encrypted..


I’m on the verge of pulling the trigger for a Radeon RX 7900 XTX, reference design. Will report how that one displays at boot.
Of course, it can only be used in Linux and Windows.. probably never OS X, unfortunately.

Thanks again!
 
Last edited:
  • Like
Reactions: h9826790
Thanks for the report. I've just put up a bugfix. Please can you try the fixed version and report back.
Thanks! OK, got further this time. Here's the result:

Auto-detecting GOP offset...
Compressing EFI using EfiRom...
Combining...
Verifying (starting at 0xEE00)...
Found compressed EFI ROM start at 0x34
Input size: 201164, Output size: 40960, Scratch size: 13376
- 0 EFI parts in original ROM, and detected 0 EFI parts in modified ROM, expected 1!
*** WARNING - FAIL ***
Done.

The two files are definitely different in a hex editor, but I'm not skilled enough to know if the ROM was modified correctly and the issue is with the script's ability to verify it, or if the ROM was not modified correctly. I will PM you both files if you can take a look for me.
 
Thanks! OK, got further this time. Here's the result:



The two files are definitely different in a hex editor, but I'm not skilled enough to know if the ROM was modified correctly and the issue is with the script's ability to verify it, or if the ROM was not modified correctly. I will PM you both files if you can take a look for me.
Thanks for PM-ing me the files, I'll report the issue here, just in case it bites anybody else:

This is actually due to a bug in the very old (2007 copyright) version of efirom which you were using - it is treating filenames which start with / (i.e. filenames specified starting at root) as options (!) and then complaining it is an invalid option. (You can test it, e.g. efirom -d /foo/bar says Invalid option specified: -foo/bar.)

You can actually work round this, even with that version of efirom, by using the script's -t option, e.g. ./vBiosInsert.sh -t temp -a vega56.rom EnableGop.efi vega56Gop.rom will work. You can remove the temp dir and files afterwards.
 
Last edited:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.