Jump to content

[SUCCESS] Asrock H370M-ITX/ac and getting RX560 or RX580 to work with Intel graphics for full hardware acceleration on Mojave (and maybe High Sierra 10.13.6)


28 posts in this topic

Recommended Posts

Please notice: Due to my recent switching to M1, I have sold or retired most of my Hackintosh stuff. So I‘m unable to answer specific questions concerning this build.
 

Mojave (and maybe High Sierra 10.13.6) on Asrock H370M-ITX/ac and getting RX560 or RX580 to work with Intel graphics for full hardware acceleration

 

Components used:

 

Core i7 8700, UHD 630

Gigabyte Radeon RX560

Wifi/BT BCM943602BAED (DW1830) M.2

Sapphire Nitro RX 580

Samsung PM961 NVMe SSD

 

*This guide requires you to know the basics, meaning how to create a macOS install drive, installing and using Clover. There are great beginners guides out there! As always you need at least FakeSMC to boot, every other kext I’ve used is mentioned in the guide. For Mojave beta you need to be enlisted with your Apple-ID in Apple’s beta programme. What is described here may work for High Sierra 10.13.6, but I doubt it to be reliable. Even in early beta status (PB3) Mojave runs much more stable and smoother than High Sierra ever did for me.* 

 

*UPDATE Mojave final*

For the final release of Mojave you can use my attached Clover folder as a reference. If you don't have a Radeon RX 580 installed or you prefer WhatEverGreen just use the DSDT_no_graphics.aml and rename it to DSDT.aml. You need to have updated to BIOS V3.00 to use it.  

 

*UPDATE*

I've updated to BIOS Revision 3.00 which seems to work fine in contrast to 1.50. Already compiled a new DSDT and uploaded it alongside a new config.plist. You can use both if you like. If you don't use a RX 580 you need to edit the PEG0-PEGP section in the DSDT to adjust it to your graphics hardware. With this DSDT and config in place you'll only need FakeSMC, IntelMausiEthernet, USBinjectall plus XHCI-300-Injector, Lilu plus AppleALC for Sound. You can add Shiki for iTunes DRM playback if you like, I've uploaded the latest version as well. Avoid Whatevergreen at this time.

 

UEFI-BIOS settings:

 

The board comes with BIOS version 1.20, there is an update 1.50 on the Asrock website. Usually it is good to stay updated but in this case I’ll recommend to stay on 1.20, because the 1.50 version seems to be unstable and I had restarts upon wake and things like that I couldn’t get fixed even with dsdt patches. So I just downgraded to 1.20 which runs fine.

Settings needed: Just the usual. Disable fast boot and security boot (everything Windows-related), disable vt-d and enable XHCI hand-off. Activate multi monitor support and set VRAM to 64MB to activate the Intel IGPU. From what I’ve read most people recommend 128MB but I find the 64MB setting to be more reliable, getting artifacts with settings below or above 64MB. 128MB may be needed for 4k support, though. *Update* BIOS V 3.00 with Mojave final release works fine with 128MB. As for nVidia users: You may have to disable the Intel graphics. I’m using an AMD card and that is the brand to go these days since Apple decided to work with AMD

 

Clover and power management:

 

I recommend upgrading to 4586. It seems that Aptiomemoryfix is now working with H370 chipsets. I stayed on OsxAptiomemoryfix2 together with Emuvariable and it works. Feel free to experiment. *Update* Now using OsxAptioV3.  

For power management with your CoffeeLake cpu you can just tick plugin type within Clover or compile a ssdt with Pikeralphas script. Mojave reports my cpu correctly as Core i7 since PB3, before that it is just “Unknown” but that is just cosmetic. 

 

Graphics:

 

*UPDATE*

Whatevergreen 1.2.3 now supports Displayport on Nitro RX580. Still recommend DSDT or SSDT port activation instead as it runs more reliable and faster than WhatEverGreen.

 

*UPDATE*

I updated to PB4/DP5 and switched to a Sapphire Nitro RX 580. You don't need to spoof Kabylake anymore, SMBIOS 18,x now works and can use my attached DSDT_RX580 for your convenience! You'll need it for displayport to work as primary display or else you get black screen on boot and can use only HDMI. Problems are the same as written below in the graphics section. If you need iTunes you absolutely need to keep a copy of the latest Shiki that is available, because it is discontinued. The newest WhatEverGreen-Fix (1.2.0/1.2.1) does not work! If you want to use Final Cut and don't need iTunes just stay away from Shiki or Whatevergreen. 

 

 

This is the worst part. Getting the Radeon to run correctly alongside the Intel graphics took me weeks to figure out. 

 

While RX570 and 580 run out of the box in most cases, the RX560 models often do not or at least not correctly. Apple even banned them from eGPU use. For my approach you cannot use “Whatevergreen.kext”, it simply didn’t work for me the way I needed it. Instead I added some fixes to my DSDT to set the correct number of ports used (DP, HDMI, DVI) and tell macOS to use the correct frambuffer. For those who are not into dsdt editing I added my DSDT, look at the “PEGP” section how it is done. This works for the RX560 using the “Acre” framebuffer, you can replace it with “Radeon”, that works too. Other cards need a different framebuffer and a different number of ports. You can do it!   BTW: Do not buy this Gigabytecard!!! It has some weird VBIOS on it, which caused me nightmares before I got the card to work! Buy a Sapphire card instead, they are used by Apple too.   

 

To get full hardware acceleration for encoding videos you have to have the Intel graphics enabled alongside your AMD card. Problem is, you cannot have it running simply as a second graphics card but you’ll need to “hide” it, means telling macOS that it doesn’t have any display connectors. Otherwise you’ll have screen artifacts or in the worst case just constant crashes. This can be done by adding a certain ig-platform-id in Clover. If you use 59120003 the Intel graphics will not show up in system profiler but it is there. You can check it with iStats or HWMonitor or look if the Kaby Lake graphics kexts are loaded.  This ID makes the CoffeeLake UHD 630 to be recognized as a Kaby Lake gpu that has no display ports, is just used as a helper card.

 

You’ll need it as a helper card for video encoding. That is what Intel graphics are used for in Macs, to support video encoding on the hardware side. You can check if hardware encoding is supposedly enabled by using MacX Video Converter Pro and VDADecoderChecker. If both say “yes” and “fully supported” this is a good start. But despite the widespread belief this doesn’t mean everything is set correctly! You now have to find out, how to get both cards working together. This is the moment where you have to choose between work and fun: Are you using FinalCut Pro for video editing or are you planning to use iTunes for entertainment? Up until this day (Mojave PB3 PB4/DP5, High Sierra 10.13.6) you cannot have both working correctly! I’ll show you how it is done both ways. 

 

The best settings for Final Cut:

 

Use the DSDT I’ve added with the respective AMD settings for the RX560 or modify them for your graphics card.

 

Use SMBIOS for iMac17,1 (14,2 does work but picture over DP port is ugly, iMac 18,1/2/3 do not work *Since Mojave PB4 they do work at least for RX580*) in Clover.

 

Have AppleIntelKBLGraphicsFramebufferInjector_3e9x.kextin your Clover/kexts/Other folder.

 

Until Mojave PB2 (may work on High Sierra 10.13.6):

 

Fake-ID 3E928086 plus ig-platform-id 59120003

 

These are the correct setting when installing Mojave (usually you will start with PB1 as the full installer).

 

For Mojave PB3 and higher:

 

Fake-ID 59128086 plus ig-platform-id 59120003

 

After upgrading to PB3 you will get a black screen with 3E92 fake id because PB3 introduces Coffee Lake kexts and macOS will use these kexts instead but that doesn’t work with our ig-platform-id. So you can download the update to PB3 but before installing it you’ll need to change the fake-id to a usual Kaby Lake id. While this didn’t work in High Sierra and the first two Mojave betas (meaning you didn’t get full hardware encoding) it is now magically working with PB3. It is safe to remove AppleIntelKBLGraphicsFramebufferInjector_3e9x.kext after upgrading to PB3.

 

For Mojave PB4 and higher (including final release):

Only add ig-platform-id 3E920003 and inject Intel = Yes in Clover, no need for spoofing a fake id anymore. Now iMac18,3 works best with AMD. Intel only users should use iMac18,1 instead.

 

The best setting for iTunes and why it is the worst for Final Cut:

Just do the same thing as for FinalCut, put Shiki.kext into your Clover/kexts/other folder and add -shikigva boot argument. You can use -shikigva=1 or 2 or 12 it will work either way. Now you can watch movies with iTunes, yay! But it has some sideeffects. You cannot use this setting when seriously editing with Final Cut.

 

While this works by tricking macOS to use the IntelGraphics to play protected video content, it doesn’t seem to be the way real Macs are doing this. As soon as you open FinalCut you will notice (check this with iStats or HWMonitor) that the Intel graphics is not or only barely utilized under certain circumstances depending on your material. Instead cpu usage skyrockets, indicating that slow software rendering is used instead of hardware encoding through Intel graphics. To make it worse the Radeon still “thinks” there is an Intel graphics helping so it does not run at highest potential. 

 

Wifi and Bluetooth

 

*UPDATE*

With Mojave PB4/DP5 Bluetooth stopped working with Rehabman's kext, my MagicMouse simply isn't connecting anymore. I decided to finally remove the card because handoff isn't working anyway these days with M.2 or NGFF bluetooth on High Sierra or Mojave (tried several ones "the internet" claims they would work oob but they do not ;)). That is what I wanted Bluetooth for. If you need Wifi I recommend you go with a cheap Wifi-only card, you don't need to pay 30 or 40 $ for dual cards that won't work the way they were intended to work. If you are on a micro ATX board and can have a graphics card plus PCIe Wifi/BT-card that actually connects to a physical USB port on you're board then you may be lucky enough to have handoff working as expected. I'm having a wifi repeater laying around with an ethernet port in case I may need wifi someday on my hack. 

 

I swapped the Intel Wifi card that was coming with the mainboard plugged into the onboard M.2 port with a compatible Dell card. The DW1830 or BCM943602BAED. The wifi part runs half way out of the box, but if you want the card to appear as Apple AirportExtreme and set the country code according to your country you need to put FakePCIID_Broadcom_WiFi.kext into Clover/kexts/other and add some Clover kext-to-patches by PMHeart. 

 

Name: com.apple.driver.AirPort.BrcmNIC

Find: 75166644 3BA3581A 0000750C 4183FE04 7406

Replace: 66906644 3BA3581A 00006690 4183FE04 6690

Comment: AirPortBrcmNIC - PCIe in 10.13.x

 

Name: com.apple.driver.AirPort.BrcmNIC

Find: 4183FCFF 7435488D 55D0

Replace: 66C70644 45EB348D 55D0    (*this is for DE country code, change for your need)

Comment: BCM4352-Country Code 

 

Bluetooth will work thanks to Rehabman’s kexts. You’ll need BrcmPatchRAM2.kext and BrcmFirmwareData.kext OR BrcmFirmwareRepo.kext. The Data.kext can be injected through Clover, just throw it into the kexts/other folder, the Repo.kext has to be installed in /Library/Extensions on your mac drive, it won’t work with Clover. I had issues with the Data.kext, Bluetooth was gone on every second or third reboot. The Repo.kext is more reliable, haven’t had any issues yet. I really don’t like the kexts to be installed in my system but I guess I have to live with it for the time being.

 

Oh, handoff and continuity don’t work, doesn’t matter that system profiler shows them as enabled. At least it works in one way: the mac can handoff Safari pages to my iPhone, but not the other way around. Documents opened on my phone show up in the dock, but they are not loaded. 

This issue is around since at least High Sierra and from what I’ve read Rehabman is not going to fix this, because he founds this features not worth it. I have to disagree, these are very convenient and valuable features if you work with desktop, laptop and tablet in different situations, I miss this capability very much!    

 

Audio

 

Audio works with Lilu.kext plus AppleALC.kext and you need to inject Layout ID=1 in Clover if you don't use a patched DSDT. For Mojave use the boot setting -lilubetaall to force the kexts to load. If you like to have DP or HDMI audio add a HDAU device to your dsdt (see mine for reference). There's an audio patch already added in my DSDT, so you don't need to use the Clover patch.

 

Credits:

Credits go to this great community! I hope I mentioned everyone in this guide whose insights made this hack possible. If I have forgotten someone please let me know!

 

 

 

 

CLOVER_Mojave_Final.zip

CLOVER_Mojave_Final.zip

Edited by macinsane

Is this to say you're using Shiki and WhateverGreen 1.2.X+ together? Since 1.2.0, Shiki is now part of WhateverGreen. I would think you're either using Shiki + older WhateverGreen, or just WhateverGreen 1.2.X by itself.

No, I don't use WhateverGreen, as I've written in the guide I've patched my DSDT for graphics. Sometimes I use Shiki to enable iTunes if I wish to. WEG in its new form does not enable DRM playback and should be avoided, maybe it gets fixed in the future. If you are planning to use FinalCut you should avoid using WEG anyway, it is not so complicated to add corresponding patches to your DSDT.

  • 2 weeks later...
On 8/10/2018 at 2:55 PM, macinsane said:

No, I don't use WhateverGreen, as I've written in the guide I've patched my DSDT for graphics. Sometimes I use Shiki to enable iTunes if I wish to. WEG in its new form does not enable DRM playback and should be avoided, maybe it gets fixed in the future. If you are planning to use FinalCut you should avoid using WEG anyway, it is not so complicated to add corresponding patches to your DSDT.

What patches are you talking about?

What I mean is this:

Device (PEGP)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Name (_SUN, One)  // _SUN: Slot User Number
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        If (LEqual (Arg2, Zero))
                        {
                            Return (Buffer (One)
                            {
                                 0x03                                           
                            })
                        }

                        Return (Package (0x10)
                        {
                            "AAPL,slot-name", 
                            Buffer (0x07)
                            {
                                "Slot-0"
                            }, 

                            "@0,name", 
                            Buffer (0x0C)
                            {
                                "ATY,Orinoco"
                            }, 

                            "@0,AAPL,boot-display", 
                            Buffer (One)
                            {
                                 0x00                                           
                            }, 

                            "model", 
                            Buffer (0x12)
                            {
                                "AMD Radeon RX 580"
                            }, 

                            "hda-gfx", 
                            Buffer (0x0A)
                            {
                                "onboard-2"
                            }, 

                            "ATY,Copyright", 
                            Buffer (0x33)
                            {
                                "(C) 1988-2017, AMD Technologies Inc."
                            }, 

                            "ATY,VendorID", 
                            Buffer (0x02)
                            {
                                 0x02, 0x10                                     
                            }, 

                            "ATY,DeviceID", 
                            Buffer (0x02)
                            {
                                 0xDF, 0x67                                     
                            }
                        })
                    }
                }

With this you can tell Mac OS which display to initialise and which framebuffer to use.

On 10/14/2018 at 12:32 PM, macinsane said:

What I mean is this:


Device (PEGP)
                {
                    Name (_ADR, Zero)  // _ADR: Address
                    Name (_SUN, One)  // _SUN: Slot User Number
                    Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                    {
                        If (LEqual (Arg2, Zero))
                        {
                            Return (Buffer (One)
                            {
                                 0x03                                           
                            })
                        }

                        Return (Package (0x10)
                        {
                            "AAPL,slot-name", 
                            Buffer (0x07)
                            {
                                "Slot-0"
                            }, 

                            "@0,name", 
                            Buffer (0x0C)
                            {
                                "ATY,Orinoco"
                            }, 

                            "@0,AAPL,boot-display", 
                            Buffer (One)
                            {
                                 0x00                                           
                            }, 

                            "model", 
                            Buffer (0x12)
                            {
                                "AMD Radeon RX 580"
                            }, 

                            "hda-gfx", 
                            Buffer (0x0A)
                            {
                                "onboard-2"
                            }, 

                            "ATY,Copyright", 
                            Buffer (0x33)
                            {
                                "(C) 1988-2017, AMD Technologies Inc."
                            }, 

                            "ATY,VendorID", 
                            Buffer (0x02)
                            {
                                 0x02, 0x10                                     
                            }, 

                            "ATY,DeviceID", 
                            Buffer (0x02)
                            {
                                 0xDF, 0x67                                     
                            }
                        })
                    }
                }

With this you can tell Mac OS which display to initialise and which framebuffer to use.

 

Is it possible I can try using this code for my Asus ROG RX580? When I'm not using Lilu & Whatevergreen only my HDMI works, no displayport. If I use the kexts displayport works but there is some odd tiny glitching on text that goes away when swapped to HDMI so it suggests whatevergreen isn't quite 100% configured. 

 

If I were to try this code where does it go? In the patches section of clover configurator? Thank you for any help. I've read about manually trying to patch the framebuffer to see if that works better for me than whatevergreen but its quite involved for myself. 

4 hours ago, NGF86 said:

If I were to try this code where does it go? In the patches section of clover configurator? Thank you for any help. I've read about manually trying to patch the framebuffer to see if that works better for me than whatevergreen but its quite involved for myself. 

No, this is code for the DSDT.aml file that "represents" your computer's main Acpi table. You could say this is what the UEFI or BIOS tells any operating systems (be it Windows or Mac OS) what kind of PC it is, which and where devices are present and many other things. If you have no idea what I'm talking about you should start reading guides about "How-to-patch-DSDT" to get yourself familiar with the topic. This is generally a good thing to know if you are hackintoshing.

But if you don't care at the moment you could try to just tick "Inject ATI" and "RadeonDeinit" in CloverConfiguartor and see if that gives you a picture on the Displayport for a start. Remove Whatevergreen before that.

1 hour ago, macinsane said:

No, this is code for the DSDT.aml file that "represents" your computer's main Acpi table. You could say this is what the UEFI or BIOS tells any operating systems (be it Windows or Mac OS) what kind of PC it is, which and where devices are present and many other things. If you have no idea what I'm talking about you should start reading guides about "How-to-patch-DSDT" to get yourself familiar with the topic. This is generally a good thing to know if you are hackintoshing.

But if you don't care at the moment you could try to just tick "Inject ATI" and "RadeonDeinit" in CloverConfiguartor and see if that gives you a picture on the Displayport for a start. Remove Whatevergreen before that.

 

I get that now, as I had looked up how to patch DSDT so that makes sense. Still probably a bit advanced for me atm. Just wasn't sure where or what the code was actually for. Might try ATI and Radeon first as suggested. Thanks 

  • 2 months later...
On 7/18/2018 at 12:17 PM, macinsane said:

If you like to have DP

Just update to 10.14.2, everything works fine except usb 2.0 and usb 3.0 port not functioning, the weird thing is usb 3.1 port works well. Really need help here. 

3 hours ago, macinsane said:

Have you installed USBinjectall.kext?

Finally solve the problem with the default config.plist, it is so weird that usb 2.0 not functioning when I use both of your DSDT.aml and config.plist together. Now I'm using your DSDT.aml(no graphic one) with default config.plist and some necessary kext patches, everything works perfectly now, thanks again!

Now I'm working on building SSDT file for usb port(It's not necessary, just in case), and still figuring out how can I modified your DSDT file to fit my 4gb RX 570 video card, I tried to google it but only found very limited resources about it. Anyway RX 570 works just fine with latest whatevergreen. 

After doing a lot research online(I'm new to hackintosh), there are four parts(just in this case) need to be modified to fit a different model of AMD card in DSDT.

 

Available ports: I only use display port, will test it later, seems like relate to @0, name; @1, name; @2, name

 

Framebuffer: orinoco for RX 570 with dp+hdmi+2dvi. As same as some RX 580

 

VRAM size: could not find in your code, probably not necessary here. (I might be wrong here)

 

Device Id: 0xDF, 0x67. As same as RX 580

 

RX 570 works perfectly fine now without whatevergreen.

On 7/19/2018 at 2:17 AM, macinsane said:

For Mojave PB4 and higher (including final release):

Only add ig-platform-id 3E920003 and inject Intel = Yes in Clover, no need for spoofing a fake id anymore. Now iMac18,3 works best with AMD. Intel only users should use iMac18,1 instead.

 

Hi, 

 

New to DSDT Patching here and using my Hack primarily for Photo/Video Editing.  I believe that my current configuration isn't using graphic acceleration to it's max potential and not sure where to really start.

 

Everything is working with latest Whatevergreen, and exports/renders are very quick in Final Cut, but only 5-10% usage is being shown in iStats, and System profiler does not show the Intel UHD 630 (ioreg does).  If I try and remove WEG, no signal over DP, which makes sense as I'm currently not patching the DSDT.

 

Current setup is

SMBOIS 18,3 using a headless IGPU 3E920003

Sapphire Nitro+ Limited Edition RX 580

ASUS Maximus X Code

i8700k

 

I know I can't use this DSDT you've provided in your clover zip as it won't apply to my motherboard, but what do I do to achieve the same result of disabling Whatevergreen and creating a DSDT patch?  Or could this be done within clover as a Device Property for the PCIRoot

 

I've attached my current config.plist

 

Any guidance be great!

config-NOSN.plist

9 hours ago, valueimagery said:

 

Hi, 

 

New to DSDT Patching here and using my Hack primarily for Photo/Video Editing.  I believe that my current configuration isn't using graphic acceleration to it's max potential and not sure where to really start.

 

Everything is working with latest Whatevergreen, and exports/renders are very quick in Final Cut, but only 5-10% usage is being shown in iStats, and System profiler does not show the Intel UHD 630 (ioreg does).  If I try and remove WEG, no signal over DP, which makes sense as I'm currently not patching the DSDT.

 

Current setup is

SMBOIS 18,3 using a headless IGPU 3E920003

Sapphire Nitro+ Limited Edition RX 580

ASUS Maximus X Code

i8700k

 

I know I can't use this DSDT you've provided in your clover zip as it won't apply to my motherboard, but what do I do to achieve the same result of disabling Whatevergreen and creating a DSDT patch?  Or could this be done within clover as a Device Property for the PCIRoot

 

I've attached my current config.plist

 

Any guidance be great!

config-NOSN.plist

Generate a DSDT.aml file for your own motherboard.(There are different ways, I use ubuntu here, very simple)

Patch the necessary sections for your original DSDT.aml with MaciASL (you can try copying the code from this post, just modified the framebuffer ,slot, device id sections to fit your MB).

Im new to DSDT patching too, still figuring out which patch is necessary for the original DSDT files.

  • 2 weeks later...

I'm about to buy the ASRock H370 Fatal1ty Performance motherboard to go along with the i7 8700 and its onboard graphics. Do you think the process in this guide will apply to those components as well? I'm a little hesitant because this is the only guide i can find for a ASRock H370 motherboard

I tried to customized my own usb ssdt but couldn't make it work, I put the ssdt file into patched/ folder but nothing changed(The problem may related to 10.14.2). But I found another way by customized my own usb kekt, 11x usb 2.0 (480Mb/s) for 8 rear usb ports, internal bluetooth and 2 front usb 3.0 ports (if it exist on your case), 4x usb 3.0 (5Gb/s) for 2 rear usb 3.0 ports (close to the usb2.0) and 2 front usb 3.0 ports. After patching this, I deleted USBInjectAll.kext and XHCI-300-series-injector.kext, everything works perfectly now.

USBPorts.kext.zip

  • 4 weeks later...
  • 2 weeks later...

InsanelyMac Geek, I currently have nearly the same build only I have a 8600k and a RX560 which you had originally.  I tried adding the clover file you uploaded and while the current config loads the iGPU just fine, I get a kernel panic when it tried to load the driver for the dGPU.  I'm assuming this is because the DSDT section is setup for a 580? Do you have the hex settings specifically for the 560 still?

  • 1 month later...
  • 1 month later...

@macinsane

MB: GB Z370N WIFI (BIOS F10)
CPU: i7-8700
GPU: SAPPHIRE RX 580 8GB PULSE
RAM: CRUCIAL BALLISTIX SPORT LT (32GB (2x16GB) 2666MHz DDR4)
SSD: SANDISK PLUS 240 GB

 

The above hardware is compatible with?:

CLOVER_Mojave_Final.zip
Edited October 4, 2018 by macinsane

 

Thank you very much.
 

 

Edited by webipsum
  • 2 months later...

Has anybody managed to install 10.14.5? As I am completely new to hackintoshs I would be very grateful if somebody could post his full clover. I managed to install the os using the original clover but the usb ports don't work.

 

--Edit

 

So I manged to get the usb porrts working with the fixes provided above.

Edited by belnen
  • 5 months later...

I dunno HOW, but this is the only Clover config that works with my ASRock m360 itx/ac + i5 9400f + RX 560!!
Especially only with your DSDT.aml

Many thanks to you!

So I plan to replace DSDT.aml for my board.

What kind of patches did you do except graphics?

×
×
  • Create New...