Contribute
Register

UtterDisbelief CL - Z370M-D3H, i3-8350K, RX560, 16GB, High Sierra

Status
Not open for further replies.

UtterDisbelief

Moderator
Joined
Feb 13, 2012
Messages
9,585
Motherboard
Gigabyte B760 Gaming X AX
CPU
i5-14600K
Graphics
RX 560
Mac
  1. iMac
  2. Mac mini
Classic Mac
  1. eMac
  2. iBook
Mobile Phone
  1. iOS
UtterDisbelief's Coffee Lake Build:

Gigabyte GA-Z370M-D3H - i3-8350K - Gigabyte RX560 2GB - Corsair LPX 16GB 3000ghz



LL1.jpg



Slightly messy inside and needs new cables (on the way)

L2.jpg



Components


Gigabyte Z370M-D3H LGA1151 M-ATX DDR4 Motherboard


Corsair Vengeance LPX 16GB kit (8GBx2) 3000mhz DIMM, DDR4


Intel Core i3 8350K Quad Core CPU Retail Socket 1151, 4.0GHz, 8MB cache


Be Quiet! Pure Rock 120mm CPU Cooler BK009


Gigabyte AMD RX560 OC 2GB GDDR5 DVI VGA HDMI PCI-E Graphics Card


Crucial MX200 250GB SSD - Main O/S Drive


Western Digital 500GB SATA III Black Data Drive


ABWB 802.11AC WI-FI With Bluetooth 4.0 PCI-Express (PCI-E) BCM943602CS Combo Card For Hackintosh (MAC OS X) Airport Computers, Supports Hands-off


Pioneer DVD-RW SATA Optical Drive


Lian LI PC-A04A PC Case MATX USB 3.0 Aluminium


Corsair CX500M ATX Power Supply Semi-Modular


Be Quiet Silent Wings 3 120mm case fan (Front)





Comments


Since I finished the Kaby Lake ATX build I tried my hand at an ITX system based on a 200-series, B250 ITX board and really didn't like the experience or result at all. Too small and cramped for my taste, although I can understand why they are so popular, taking up so little room. I began planning an MATX Coffee Lake build.


For this one I went back to my favourite case - the Lian Li PC-A04A MATX - and because it is becoming harder to get nowadays had to buy one from Germany. Happily it only took a week to arrive, which gave me time to get the other parts together. MATX Z370 boards aren't exactly thick on the ground but I'm used to working with Gigabyte so chose theirs. For a CPU I stuck to my favourite again - the i3 - but for Coffee Lake there's now a quad-core version running at 4.0ghz. Sounded interesting! The 8350K is unlocked and comes without heatsink and fan so I chose a Be Quiet! BK009 Pure Rock to cover it. RAM was again another favourite but this time I went for the fetching metallic blue colour.


Hardware build was straightforward and first boot was to my Windows 10 SSD for testing purposes. Given that Coffee Lake is very recent I knew there would be headaches along the way getting macOS running smoothly. Testing all the components were working as they should was just easier with Windows.


For the macOS build I used @tonymacx86 's default guide:

Installation Guide here at Tonymacx86 to install High Sierra

... on my SSD as it covers all you need to get going. I chose to use the older HFS+ format, deciding against the new APFS. Follow the guide carefully at the point where Terminal is used to accomplish this. That reboot and re-starting the installer is easy to get wrong. If, like me, you have another drive installed as a data drive then either turn-off and disconnect it before continuing, or easier, unmount it using Disk Utility. The script might fail if there's more than one drive available. @MacMan covers this in the guide comments a couple of pages in.


To be expected the first macOS boot resulted in a black screen because of the AMD RX560. There was a bit of head-scratching here in that I needed to copy Whatevergreen and Lilu kexts to my EFI partition to enable it, but I couldn't boot and see a screen to do that! For that I needed safe-mode and in safe-mode you can't mount an EFI partition... Then I realised I could just copy the kexts to Library/Extensions instead using KextBeast. Funny how you can forget the obvious! This worked as expected.

(EDIT: See post #4 Update no.1 for a new way forward initialising AMD graphics).


Now my tip here is don't sign in to your Apple account when you're prompted to. I'd give it a miss for now.


Next to sort was USB. Copying my old Kaby Lake config.plist into the boot EFI just caused all ports to die on boot. They worked fine when I booted using the UniBeast HS installer stick. I tried all manner of kexts and edits but nothing was working. In the end I just copied the UniBeast EFI folder to my SSD drive's EFI partition. That got me booting with a functional keyboard and made a solid starting-point for the rest of the installation.


Now was time to bring MultiBeast v10.2 into play. I used it to install Sound, Network, FakeSMC and a system definition of iMac14,2.


On reboot Sound still didn't work and there were no devices except my monitor's HDMI output (which happily worked). To get around this I had to re-install the MultiBeast ALC892 option, choose Audio ID=2 and HDAS to HDEF rename tick-boxes AND, to get the sound actually coming out through the speakers, put FakePCIID.kext and it's brother FakePCIID_Intel_HDMI_Audio.kext in the EFI/EFI/CLOVER/kexts/Other folder. Both from @RehabMan .


I now needed to check serial numbers and UUIDs. As I mentioned above, I hadn't yet signed in with my Apple ID. The default serial number of the build so far is a dummy and if you alter the system definition you can change even that number. This might cause problems with your account, and require you to enter security information to unlock your ID for use. Risky in my view. It has certainly happened to me but because I had set up security questions I have been able to unlock it from the keyboard, rather than by ringing up.

Anyway, now that I had a stable system I could re-input the serial numbers etc from the SMBIOS section of my old build. These also help the configuration of iMessage and Continuity and Handoff. I was keeping the same system-definition. If you need to set up iMessage from scratch then I recommend you read the guide by @P1LGRIM here:

https://www.tonymacx86.com/threads/an-idiots-guide-to-imessage.196827/

Another tip here - ensure you have the EmuVariableUefi-64.efi file installed in your EFI/CLOVER/Drivers64UEFI folder (use the Clover installer if not) and also the RC Scripts. This is all in @P1LGRIM 's thread but worth repeating. iMessage obviously needs NVRAM to store its setup locally.

iMessage and Continuity & Handoff are all working fine on this build.

Remember to check twice, press the button once!


Finally a couple of edits using Textedit. I'll explain:

To set the CPU power management you no-longer need to create an SSDT but can simply tick a box using Clover Configurator. It's on the ACPI tab. Go to the right side and find the pane labelled SSDT. Check - Generate Options - PluginType. Tick it.

Also on the same tab FixShutdown needs ticking to stop a bounce awake when you shutdown the PC.

I copied a dummy config.plist and initially made the edits to that using Clover Configurator to see what changes were made to the file. Then I copied just those edits into my working config.plist. Fiddly I know but the reason I did this is because it seems Clover Configurator "cleans" a lot of usually surplus code from the config. I could see a big difference in the two files. Considering the USB problem I had at the beginning I didn't want to upset the applecart. There is clearly some code I needed that might possibly be erased. Until I've spotted exactly what it is, I was being safe. Don't let that put you off using Clover Configurator, it's a great utility.



Coffee Lake motherboard/CPU specifics:


I had an annoying problem with the BIOS. My Z370M-D3H came with F3 installed. I wanted to use the "SmartFan 5" option to control the two cooling fans I have - the CPU and Be Quiet! case fan at the bottom of the front panel in front of the drives (I am not running the second fan above this. One should be enough I feel). The trouble was that although the CPU fan worked as expected, rotating around 500rpm at idle, the case fan, when in "Silent" mode, would switch up to full-speed (1334RPM) once the OS was running. Very windy and no way silent! I tried every setting there was but this problem wouldn't go away. That is until I flashed the BIOS with new version F4. That cures it.


No CPU Fake IDs are needed. Coffee Lake is now native in High Sierra (Interesting!).


The temperatures have been surprisingly good. The CPU is rated at 91W, pretty much like the older i5s and i7s so I was expecting a slight rise compared to my last dual core 4.1ghz i3. Well so far - with no gaming or intensive graphics stuff, so I can at least compare like with like, I have a CPU which hasn't yet gone above 28-degrees-C. The hottest part of the motherboard is the VRM which I've seen at 35-degrees-C. I'm sure if I punished the hardware these temps would rise significantly, but the point is my previous i3-7320 4.1ghz would run at 32+. Admittedly I've changed the CPU cooler, so maybe that's helping. Whatever the reason it's good news for a quad-core. All temps taken from BIOS.


Work to do:


As per @RehabMan 's post about Generating an SSDT for Coffee Lake, and my note above, there's no need to create an SSDT for the CPU, so my next job will be to create a proper definition for the USB ports.



What wasn't working and how it was fixed:


1) iTunes DRM video - Lilu.kext and Shiki.kext placed in EFI/CLOVER/kexts/Other EFI partition folder.

(EDIT: See post #4 Update no.1 for new developments without the need for the Shiki kext)


2) Wake from sleep - still checking ... but very short-term sleep wakes to log-in screen with no problems.


3) for the Radeon Graphics I copied the latest WhateverGreen.kext into the HS EFI/CLOVER/kexts/Other folder (along with Lilu.kext mentioned above). Eventually - to get around that annoying catch-22 mentioned above - I also put them in Library/Extensions using KextBeast.

https://github.com/vit9696/Lilu/releases

https://github.com/vit9696/WhateverGreen/releases

(EDIT: See post #4 Update no.1 for a new way to initialise AMD graphics)



I'm still using System Definition iMac14,2.


So that's it so far. A powerful and quiet mackintosh based on the Coffee Lake platform.


I'll post updates as things occur or change.

:)

---

Edit no. 1 : to clarify iMessage section

Edit no. 2 : Below is a picture of the BIOS temperatures after the PC had been running for a couple of hours. Ambient room at 18-degrees-C.


temps.jpg


Still surprised by how cool this Coffee Lake hardware runs. I used Arctic Silver 5 thermal paste between CPU and heatsink.

Edit no. 3 : Changed front-panel photo now the DVD bezel door has arrived.

:)
 
Last edited:
That's great news. I decided to take a gamble on that motherboard and ordered my own Coffee Lake system around it. Should be arriving one of these days.
 
That's great news. I decided to take a gamble on that motherboard and ordered my own Coffee Lake system around it. Should be arriving one of these days.

I'm sure you'll have a great system. :)
 
Update no. 1:

There's a new way to initialise AMD graphics, instead of using the Lilu and Whatevergreen kexts I mention in the build.

All you now need to do is add a key to the Graphics section of your config.plist.

Code:
<key>Graphics</key>
<dict>
    <key>RadeonDeInit</key>
    <true/>

More info can be found in the first post of the thread:

Radeon Compatibility Guide - ATI/AMD Graphics Cards

It's in Section 2. Compatibility Chart towards the end after the actual charts.

All works as advertised except the GPU is no longer recognised as an RX 560 but it's generic forebear the "R9 xxx 2GB".

Trials are ongoing to see if using the "AMD Injection" option causes any problems while helping correctly identify the GPU.

Uninjected it's a small point that doesn't seem to be other than cosmetic and saves the builder from having to add yet more extra kexts.

So the choice is now there.

An Update to the Update:

iTunes DRM/Bought video now plays without any black-screen or other problems! Previously I had to use Lilu and Shiki kexts to get that working. Been that way since my Nvidia builds. Apparently the magic that has been worked by the Clover devs (Slice etc) has included mending the broken video playback issue many of us have had for years.

:)
 
Last edited:
Update no. 2 USB port definition

I completed the USB port definition using two threads here on Tonymacx86 -

@ammulder 's Skylake thread from Section 7.2 on -

https://www.tonymacx86.com/threads/10-11-0-10-11-3-skylake-starter-guide.179221/

& @RehabMan 's here -

https://www.tonymacx86.com/threads/guide-creating-a-custom-ssdt-for-usbinjectall-kext.211311/

Basically, either way, you're going to include certain of your motherboards physical USB ports and exclude others to keep your configuration within Apple's arbitrary 15-port limit. To do this you create a text file stating which ports you need, running at what speeds.

A few pointers might be useful:

The Gigabyte Z370M-D3H board has four USB 2 ports as headers, all the external ones are now USB 3, although obviously these can be used for either type of devices. Because USB 3 ports have extra contacts, you still choose the "UsbConnector" value of "3" for USB 3, when setting up the USB 2 ports.

On my board there is one USB-C socket so it is set as "UsbConnector" value "10".

The Bluetooth header is a "UsbConnector" value "255".

In total my board comes with 13 physical ports, each one having two options as a USB 2 or USB 3/3.1 port, for a total of 26 ports. Whittling these down to the 15 we are limited to is the time-consuming part and you test each one as per the guides above.

I decided I wasn't likely to use the keyboard USB, nor the one next to it under the PS/2 socket on the back-panel, as anything other than USB 2, because the Apple wired keyboard I have is a USB 2 device. The one next to it I have a USB 2 extension cable fitted to bring the port to my desktop. No need for USB 3 there, so = 2x configs. The other four physical USB 3 ports on the panel I chose to fully configure as dual-use, so 4x ports = 8x configs. The motherboard 30-pin USB 3 header runs one USB 2 and one USB2/3 port on my case top. = 3 configs. Of the remaining 2x motherboard headers with 4x ports, I was only using one to run the Bluetooth radio = 1x config. Lastly the USB-C socket needed 1x config. Total configs needed = 15.

Editing the SSDT-USB.dsl template file is done using the MaciASL compiler. Again check the guides.

Important: for this board the USB PCI Vendor ID is 0x8086 and the PCI Device ID is 0xa2af so you need to change the value in the template to match or it won't work, so: "8086_a2af", Package()

Once your work is done you "Compile" the template dsl to check for errors. Assuming none, you can save your work as an "ACPI Machine Language Binary" file, or an *.aml file to you and me. This is your patch that then needs to go in the EFI/CLOVER/ACPI/patched folder on your EFI partition.

Once you have rebooted you can use IORegistryExplorer to check that your ports are configured as you wanted them:


IO.jpeg


(Note: populated items, triangles, in the list denote HS05, the keyboard, and HS14 the Bluetooth adapter)​


If everything has worked then you can remove the Port-limit raising patch from your config.plist. If not, then you need to debug - I know because it took me a couple of attempts to get it right. Watch for missing commas and curly brackets. Check your "port count" is set to the value of the highest port you've chosen.

If it helps, here's my commented template dsl file:

Code:
DefinitionBlock ("SSDT-USB.aml", "SSDT", 1, "sample", "USBFix", 0x00003000)
{
    // "USBInjectAllConfiguration" : override settings for USBInjectAll.kext
    Device(UIAC)
    {
        Name(_HID, "UIA00000")
        // "RehabManConFiguration"
        Name(RMCF, Package()
        {
            // XHC overrides for 100-series boards
            "8086_a2af", Package()
            {
                "port-count", Buffer() { 0x19, 0, 0, 0}, // Highest port number is SS09 at 0x19
                "ports", Package()
                {   // TO COMPLETE THIS FILE, ADD ALL YOUR PORTS BELOW HERE, THEN SET port-count ABOVE
                    "HS01", Package() // USB3 port bottom next to sound, port <01 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x01, 0, 0, 0 },
                    },
                    "HS02", Package() // USB3 port top next to sound, port <02 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x02, 0, 0, 0 },
                    },
                    "HS03", Package() // USB3 port bottom above HDMI, port <03 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x03, 0, 0, 0 },
                    },
                    "HS04", Package() // USB3 port top above HDMI, port <04 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x04, 0, 0, 0 },
                    },
                    "HS05", Package() // USB2 keyboard port bottom under PS2, port <05 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x05, 0, 0, 0 },
                    },
                    "HS06", Package() // USB2 port top under PS2, port <06 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x06, 0, 0, 0 },
                    },
                    "HS07", Package() // USB2 port on case top, port <07 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x07, 0, 0, 0 },
                    },
                    "HS08", Package() // USB3 port on case top, port <08 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x08, 0, 0, 0 },
                    },
                    "HS14", Package() // USB 2 Bluetooth adapter on motherboard header, port <0e 00 00 00>
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 0x0e, 0, 0, 0 },
                    },

                    "SS01", Package() // USB3 port bottom next to sound, port <11 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x11, 0, 0, 0 },
                    },
                    "SS02", Package() // USB3 port top next to sound, port <12 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x12, 0, 0, 0 },
                    },
                    "SS03", Package() // USB3 port bottom above HDMI, port <13 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x13, 0, 0, 0 },
                    },
                    "SS04", Package() // USB3 port top above HDMI, port <14 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x14, 0, 0, 0 },
                    },
                    "SS08", Package() // USB3 port on case top, port <18 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 0x18, 0, 0, 0 },
                    },
                    "SS09", Package() // USB3 port as USB-C back panel, port <19 00 00 00>
                    {
                        "UsbConnector", 10,
                        "port", Buffer() { 0x19, 0, 0, 0 },
                    },
                },
            },
        })
    }
}


Next work to be done is Wake from Sleep ...

:)
 
Last edited:
Update no. 3 - Sleep and Wake

Thanks to @Gigamaxx and @bortoni for the pointers here.

With the RadeonDeInit flag set to "true" and no extra kexts the system worked well, was fully accelerated but putting it to sleep turned-off the display, wound-down the hard disk and left the motherboard on, LEDs glowing. The keyboard had no response so wake didn't happen. A reset was needed.

With RadeonDeInit set to "false" AND the Lilu and Whatevergreen kexts in my EFI/CLOVER/kexts/Other directory the system went to sleep but woke instantly to the log-in screen. I also tried the kexts in the L/E directory on my SSD. No difference.

Neither gave me proper sleep and wake.

There is a lot out there to read-up on this subject so I'll whittle it down to what worked for me on this build.

Remove or set the RadeonDeInit flag to "false" in the config.plist.
Put the latest Lilu and Whatevergreen kexts in your EFI/CLOVER/kexts/Other folder.

Add this code to your config.plist under the Devices key. It adds a data value of "03" ("Aw==") for this card:

Code:
<key>Arbitrary</key>
        <array>
            <dict>
                <key>Comment</key>
                <string>AMD Sleep Patch</string>
                <key>CustomProperties</key>
                <array>
                    <dict>
                        <key>Disabled</key>
                        <false/>
                        <key>Key</key>
                        <string>CFG,CFG_FB_LIMIT</string>
                        <key>Value</key>
                        <data>
                        Aw==
                        </data>
                    </dict>
                </array>
                <key>PciAddr</key>
                <string>01:00.00</string>
            </dict>
        </array>


Now sleep and wake works as it should. A press of the space-bar brings the machine back - with sound. Although sound can be temperamental and take time to reinitialise. Maybe CodecCommander is needed. Will check.

Though I chose not to use it in the end, if you are interested there's also GPU renaming patch, to set your own choice for System Report:

Code:
<key>Arbitrary</key>
        <array>
            <dict>
                <key>Comment</key>
                <string>GPU Rename</string>
                <key>CustomProperties</key>
                <array>
                    <dict>
                        <key>Disabled</key>
                        <false/>
                        <key>Key</key>
                        <string>CFG,model</string>
                        <key>Value</key>
                        <string>Radeon RX560 OC</string>
                    </dict>
                </array>
                <key>PciAddr</key>
                <string>01:00.00</string>
            </dict>

The default Whatevergreen model name is "Radeon Pro 560" which is close enough for me.

This guidance originally came from @shuhung at post #7 here and @jb007 at post #10.


:)
 
Last edited:
Update no. 2 USB port definition



If it helps, here's my commented template dsl file:

Code:
DefinitionBlock ("SSDT-USB.aml", "SSDT", 1, "sample", "USBFix", 0x00003000)
{
    // "USBInjectAllConfiguration" : override settings for USBInjectAll.kext
    Device(UIAC)
    {
        Name(_HID, "UIA00000")
        // "RehabManConFiguration"
        Name(RMCF, Package()
        {
            // XHC overrides for 100-series boards
            "8086_a2af", Package()

:)

Can you clarify code comment that 8086_a2af is for 100-series boards (// XHC overrides for 100-series boards) ? RehabMan say that 200-series chipset XHC controller, 8086:a2af.
100-series 8086:a12f ?
 
Can you clarify code comment that 8086_a2af is for 100-series boards (// XHC overrides for 100-series boards) ? RehabMan say that 200-series chipset XHC controller, 8086:a2af.
100-series 8086:a12f ?

Hello. Sorry for the confusion there. You have to ignore the text about 100-series boards. I didn't mention that bit, nor write it. It is a part of the original template you need to download and use. (Although you could write your own from scratch instead).

I checked and my hardware -Z370M-D3H - uses the 8086 a2af USB IDs as I have said.

Hope that helps
:)
 
Utter, thanks for putting this together, did you run a GeekBench on the I3 yet? Also i assume you can use the onboard intelGPU (630 i think) if i dont want to add a dedicated for now.
 
Status
Not open for further replies.
Back
Top