Jump to content

AMD WX4170 dGPU on ZBook G5 17 Laptop Catalina


4 posts in this topic

Recommended Posts

I've finally hit a wall after 100's of hours trying to make this work.

This machine is probably the best hack laptop I've ever made. Battery, Sleep, Keyboard shortcuts, CPU and GPU power management, native nvram, speaker, microphone, headphones, usb3, thunderbolt usb-c with hotplug, touchpad w/5 finger gestures, external displays, wifi, LAN, webcam, SD Card, bluetooth, nvme and sata drives, IGPU with apple firmware loaded, hdmi with audio, dvi, thunderbolt video, DRM, GVA, filevault.
Basically the works!

Here's the catch...
Under High Sierra and Mojave I have a dual GPU system, the dGPU (AMD WX-1470) works and I've tested (2x 4k external displays) and if I disable the IGPU with whatevergreen bootflag igfxgl=1, I can force the dGPU to handle all the metal and opengl stuff even on the internal display, and DRM works, h264 hardware acceleration encoding, while the igpu handles h265, etc... a Dream basically.

Now for Catalina (and Big Sur)
Something changed... The same Open Core configuration stalls just as the display switches to apple logo and the progress bar gets to about 70%, then the GPU (secondary) fan starts spinning (which is odd behavior) and then nothing....
I can run the installer, and no problem.
I can boot Catalina and Big Sur with bootflag -radvesa or if I change the Bios to turn off the DGPU and everything is great, all of the above minus the AMD dGPU work fine.
So something in the AMD drivers is not working, and it doesn't matter if I use Hybrid or Discrete mode, OSX 10.15+ just refuses to work with the dGPU.
(In discrete mode I get a black screen and nothing changes that. pikera, vit9696, radeon deinit, etc...) only -radvesa works, but obviously no acceleration. Also in discrete mode the black screen is before login, and I can't remote log in (screen share) I believe it is stuck in the same spot as with the IGPU on, but there is no IGPU to draw a frozen screen.

 

With the flag -radvesa using IORegistryExplorer I can see the GFX0 device and the AMD9500 Controller kext loaded, so the device is there and fine, but I guess it could be AMDRadeonX4000 or AMD Frame buffer causing trouble?

I tried different fake id's, and ROM's on the AMD card, and one ROM actually booted, but the display connectors and sense ID's were wrong so basically the OS/drivers did not load. As soon as I edited the connectors or injected an edited framebuffer with connectors that would work, then Catalina boot would Kernel Panic or stall again.

I also tried different SMBioses but that didn't change any of my previous results.

There's not a lot of documentation regarding how the AMD patching works with Whatevergreen and especially for dual GPU unicorns like this laptop.

My current workaround is to have 2 hard drives with 2 Open Core efi's, One for Mojave with dual GPU's and one with DGPU off for Catalina and I switch them at boot. But I really want to be able to use the dGPU on Catalina.

 

Ive tried patching AGDP kext directly and nothing.
Could it be something in the VBIOS ROM?
The card should work, as I know this same model is being used in some older imac's to make them work with newer OS's, but they're just using a different ROM (the one I tested above with the wrong connectors)
Or could it be something T2 related?

 

After some more tests, I flashed the "imac compatible" rom to my card and it managed to boot Catalina and it loaded the AMD kexts, but the connectors are all wrong and so I had no way of testing if the display part of the GPU was actually working, OpenGL test worked and It seemed to be doing something in Activity monitor, but I tried patching the outputs in the ROM and then I get the same stall as with my normal ROM, so no go. Also can't test with this ROM in discrete mode since it won't post (I guess the connectors need to work for the Bios to recognize as the only display adapter) and I have to remove the card, then reset the bios, then put Bios in Hybrid, then put the card in again to re-flash it to a compatible (with my laptop) ROM.
I did however manage to get a bunch of logs using this "bootable" ROM, and hope someone can help me figure this out.

 

417293446_ScreenShot2021-03-05at7_06_27PM.thumb.png.f52c661478a5ee66565ab729c5c483b5.png

 

1334017140_ScreenShot2021-03-05at7_06_46PM.thumb.png.8c04aa372dfa306c1447eae19ba56da0.png

 

969305623_ScreenShot2021-03-05at7_04_58PM.thumb.png.efd3b8aeda478ea61443817df8e757c0.png

 

1248402064_ScreenShot2021-03-05at7_04_31PM.thumb.png.5ffaa7206054ec63c31af5cf5f8de86d.png

 

481135677_ScreenShot2021-03-22at11_23_11PM.thumb.png.803ef4fe83d0f9cc686598add70c8d64.png


199022847_ScreenShot2021-03-22at11_24_08PM.thumb.png.363354d9e08462cb497f48c47b65048a.png

 


I appreciate any expert help with this.

Logs.zip LOGS-CATA.txt

Maybe you need to experiment with the framebuffer personalities pertaining your AMD controller, whichever it is. Different personalities provide different connector arrangements. You can inject personalities through device property injection in OpenCore as per the usual process. For syntax details, you may refer to this post.

 

Thank you for taking interest, I've tried different framebuffer personalities, and actually the Palena framebuffer was the better match (still had to manually patch some connectors) but the power management and HDCP to internal LCD was a nice discovery. Unfortunately this only worked in Mojave, but for Catalina and Big Sur the result was the same as above, stalled at the apple logo.

  • 2 months later...
×
×
  • Create New...