Skip to content

Limitations

Ausdauersportler edited this page Jun 3, 2023 · 23 revisions

There are now two ways known to get an EFI picker working. The first method named EG2 are limited to graphics cards used in Apple systems because it reuses only drivers on macOS level but also three different EFI programs found within the Apple firmware, one is called EG2 driver. One can get those firmware parts from firmware updates included in macOS updates or by dumping the firmware from the fitting more recent Mac systems. Basically we transform these three EFI programs into BIOS code and replace the standard PC GOP part.

The second method used the OpenCore EnableGop driver (and I called this method EG).

Some Apple systems use different AMD GPU versions (like the MacPro6,1 uses AMD Tahiti), but there are no Tahiti based AMD MXM modules available (AFAIK).

The usable address space for all AMD vBIOS modifications is limited to the first 128k when to be used in the iMacs listed above (the same rule applies to AMD PCI cards used in MacPro systems) - regardless which BIOS chip size the particular MXM GPU offers. Unfortunately the three parts mentioned above need more space than the GOP driver found in most modern AMD vBIOS versions. So we were not able to simply replace the GOP with the EFI parts. We had to cut out unused parts from the vBIOS, which is the VGA driver.

So we sacrificed Windows accerelated mode (legacy Windows installation) in order to get an EFI boot picker for macOS only systems using the EG2 method. You can still use windows in VESA mode for most applications using this vBIOS versions including the tools listed below. This method has been developed to come around the more complicated firmware modification within the target system.

The EG method needs additional space within the first 128k, too. The EnableGop driver is too big to fit into together with still existing legacy and GOP BIOS drivers. But using the same VGA cutting technique we get here a vBIOS with EFI picker and Windows UEFI (aka GOP) support.

iMac12,1 and iMac12,2 problems

All GCN1-3 cards incompatible

No listed Venus, Saturn or Amethyst/Tonga card work in the iMac12,x systems properly regardless which BIOS version (GOP or EG2 or EFI) will be used. Those problems mentioned below are not related to the GOP, the EG2, OpenCore or to the more recent macOS systems. All problems can be detected using a simple legacy vBIOS running natively supported High Sierra.

Saturn and Tonga cards are of type MXM-B and will fit physically only in the big 27" models. Additionally the TDP of those cards is 75W minimum, input can only be supplied by the 310W 27" PSU, heat output can only be guaranteed by the bigger iMac12,2 MXM-B heat sink in conjunction with bigger space to get the hot air out of the closed system.

Only the MXM-A Venus cards are a fit for the iMac12,1 21.5" model, showing the same problems listed below.

We observed NVRAM corruption on each restart (needing a single or double to triple NVRAM reset on each boot), the inability to wake from system sleep. Currently no real fixes have been found. In comparison to the older iMac11,1 and iMac11,3 systems, where those cards work without any such problem, we are currently unable to spot the differences in hardware architecture or firmware programming responsible for this weird behavior.

You can have short periods in time with any of those problems, either a new PRAM reset or just by accident system crashes on boot, again. It can be a race condition on sleep and power down which confuses the system.

GCN4 VER1.0 cards incompatible

Ellesmere Ver 1.0 cards WX7100 and RX480 do not post in the iMac12,2 at all. While we found a hardware mod for the Baffin WX4150 to resolve this no post issue, currently no other workaround has been found for the Ver 1.0 cards. Only Ellesmere the Ver 1.1 WX7100 works perfectly in iMac12,2 systems.

LCD backlight and connector settings (solved)

But there were more limitations with the EFI and EG2 BIOS versions based on the stock modules we fetched from the iMac/Macbook firmware. Some versions offer only an invisible boot picker (on the main internal LCD, but the backlight will not be switched on), some a visible one only on an external display connected via display port and a few on the internal main LCD. To address this problem one would have to dig deeper in the EFI code gathered from the Mac firmware using a disassembler like IDA64.

The Venus based cards M5100, M6000, and W5170M showed the EFI boot picker on an external display, only. You needed to press alt/option on boot to force the EFI boot picker on the external screen, otherwise normal booting went on and when OpenCore has been installed the external display showed the OC boot picker (if enabled in the OpenCore config.plist).

The Saturn and Amethyst based cards M6100, W6170M, W7170M, and S7100X used the internal LCD of the iMac (but did not enable the backlight) on boot for the EFI picker. So booting happened in the dark, but of course one could always force the EFI boot picker to work by pressing alt/option on boot and one can try to use it blindly. This was still better in some cases than no boot selection at all.

At least there is a hardware wire-mod known to enable the internal LCD (connecting the constant 3V from the power supply to the PWM input of the inverter board using a simple switch).

Amethyst and Saturn wire-mod

This way the EFI boot screen becomes visible with constant illumination, if the user wants to have a working brightness control one has to switch back to normal wiring after macOS boot has been completed and drivers took over control of the hardware.

@dfranetic developed a little PCB which is connected between the system board and backlight module which does the wire-mod switching on and off in fully automatic mode.

The Baffin and Ellesmere based cards W4130, W4150, W4170, RX480, and WX7100 enabled the internal LCD on boot if either an external display had been connected or a miniDP emulator stick had been plugged in. This came close to the original EFI boot picker functionality.

Finally all these problems have been solved by https://github.com/franetic as described on this page for all EG2 based vBIOS versions, except Tonga and Saturn still needing the PCB described above.

Windows 10 UEFI support

Thanks to @Nick[D]vB, who pointed out how to get Windows working with EG2 vBIOS, I can describe the short solution here available for UEFI Windows installations:

Simply add the AMDGOP.efi to the Drivers folder of your OpenCore installation. Add an entry within the config.plist to the OpenCore UEFI/Drivers section next to OpenCanopy and friends and finally set the value to true of the already existing variable named ReconnectGraphicsOnConnect. The config.plist would partially look like this, here the AMDGOP.efi entry in UEFI/Drivers

                        <dict>
                                <key>Arguments</key>
                                <string></string>
                                <key>Comment</key>
                                <string></string>
                                <key>Enabled</key>
                                <true/>
                                <key>Path</key>
                                <string>AMDGOP.efi</string>
                        </dict>

and for the ReconnectGraphicsOnConnect entry in the UEFI/Output section

                        <key>ReconnectGraphicsOnConnect</key>
                        <true/>

Unfortunately OpenCore has a small bug, when entering the EFI picker and selecting OpenCore the first time to boot the internal LCD becomes black. Just press enter to select the preselected boot option and wait until macOS has booted. On every subsequent boot the Bootscreen will work as expected. The sync problems with external display in macOS will have a come back, too.

After the initial AMD driver installation any EG2 vBIOS will come up with the error 43. The only know cure is to apply this driver signature patch. You need to download the tool and rename it according to the post to atikmdag-patcher-bios.exe, run it with administrator rights, this way it will patch out the BIOS signature check only. After a reboot I experienced accelerated Windows for the very first time using this card. This trick does not work with all AMD cards listed.

AMD cards without Windows support

Unfortunately no RX480_EG2 version let the AMD tools install the Windows 10 drivers. The subsystem IDs had to be modified within the legacy part to make the EFI picker working. Deleting the subsystem IDs from the EG2 driver made the EFI picker working, but now Windows comes up with the famous error 43. Experts may be able to install the correct driver manually by editing the corresponding INF files. Post on MR if you have success.

WX7100 support is not clear - have not tested it

Windows legacy support (DVD installation from EFI boot screen)

Have not tested any legacy installation myself. The limitations mentioned in the previous section will apply to legacy support, too. To enable this feature you have to patch the Apple BootCamp software to allow Windows 10 installation on an old iMac or you use OCLP and the iMacPro1,1 SMBIOS and use BootCamp from an OpenCore booted macOS. This is purely speculation. Never did this before.