Jump to content

Fixing fan speed issues with Vega cards in Mojave...


2 posts in this topic

Recommended Posts

I've finally made the switch to the dark side and sold off my GTX 1070 for a Vega 56 :gun:

It's running almost OOB on 10.14.4 since I already had WEG/Lilu installed for the IGPU and it configured everything for the Vega.


However, once the fans spins up beyond 50% they don't spin down while the clocks drop to idle. This is a big issue. It's not intolerable, but it's also not Nvidia FE blower quiet since mine's an open-air card. So let's fix that since at idle the fans shouldn't even be spinning.


The pinned thread gives a general outline of what needs to be done. Dig through the VBIOS ROM, find the power play info, inject it. Follow this guide to the 2:00 mark for the power play info. Once you know the offset and length of the region, you can do the rest with hex editors in macOS.


The thread's pinned solutions suggest modding vanilla kexts or using injector kexts, neither of which I really like doing. Later on a SSDT DSM injection is shown to work; I'd also rather not have SSDTs where they're not needed.


So let's try injecting with Clover.




Unlike the IGPU entry which has a straightforward address in the PCIe tree, the Vega card is PCI0/PEG0@1/PEGP/(bridge device)/GFX0. So assuming that the card is already properly injected but fans dysfunctional, use gfxutil to find the address of GFX0:

gfxutil -f GFX0

which returns:

DevicePath = PciRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)/Pci(0x0,0x0)

Copy and paste the power play hex data in Xcode as a data entry like above, or convert to base64 and insert it directly with a text editor.




It has been injected properly. The fan now spins past 50%, up to 55%! Still doesn't spin down though...any ideas?


On another note, what do the PP_FuzzyFanControl do? PP_DisablePowerContainment seems to do something with the power restrictions on the card as needed for overclocking, not sure about the fuzzy fan control.

Edited by shrieken213
Link to comment
Share on other sites

I've found strange behavior with the injections. Another person apparently had the exact same issue with the exact same card. His solution did not work even when followed to the letter.


Analyzing the PPT he uploaded it is apparent that the VGTab application disables zero fan at idle, which serves as a nice way to check if it loaded. Sure enough injecting via Clover loads all of his settings fine including his PPT (fans stay at a low 400 RPM at idle), but is still unable to spin down from the specified full speed.


So I removed all of his settings. I was surprised to find that some of the PP settings are persistent. I've tried reinjecting the property, but it seems it's not overwriting the previous settings. Removing the setting entirely also does not change a thing.



Note how the property PP_PhmSoftPowerPlayTable is not there, showing I've deleted it entirely from my config. I've done the same with the PP_DisableULV, PP_Falcon_QuickTransitionEnable and a couple others, yet they're still in IOReg.


I'm kinda lost now...

Edited by shrieken213
Link to comment
Share on other sites


  • Create New...