Contribute
Register

[SUCCESS] Gigabyte Designare Z390 (Thunderbolt 3) + i7-9700K + AMD RX 580

@CaseSJ
I did everything you said and it worked! First, let me say thank you!

About the USBs (i didn't catch the changes and why we have USBPorts(kext) and ....v7.aml and how different they are.
I decided to use the most recent one (USBPorts.kext) and my fenvi stop working. I can't have my magic mouse working properly (and that was the main reason for all this mess. I use ethernet (never wifi) and the Bluetooth always very (annoyingly) laggy, the magic mouse the same (I bought a corsair mouse) because it became unbearable to me.
If you could point me the directions on how to really fix the USBs I appreciate it.
Glad to hear it's booting again. NOW IS A PERFECT TIME TO MAKE A FULL BOOTABLE BACKUP.

Regarding USB, it would be better to remove USBPorts.kext and use:
  • USBInjectAll.kext --> CLOVER/kexts/Other
  • SSDT-UIAC-DESIGNARE-Z390-V7.aml --> CLOVER/ACPI/patched
    • This SSDT should be in CLOVER/misc
About the unlocked MSR 0xE2, I don't what is it neither why is that for. The guide that you linked, it doesn't explain why.
I found this on google: CFG Lock prevents OS X from writing to a certain region in your BIOS. OS X does this for power management and other reasons, and if it can't access it, it will not boot.
But researching I got it. Here comes a question for you: I have F6 Bios version. What is the safest and more stable version to update for better results? (I'm asking this because I want to update the bios first and then unlock the CFG.
Again I appreciate all your help.
Fab
It's best to install F9g (download from here) because CFG-Lock is disabled by default. Then following the Native NVRAM guide below, but skip the steps for MSR 0xE2. Again, make a full bootable backup before doing this.
 
Last edited:
Hello CaseySJ,

Just a quick note to let you know that the RadeonBoost kext has dropped support for the AMD RX 5700 XT Cards. I am uncertain as to why however I have just read that at @CMMChris's thread on MacRumors
Thank you for letting us know!

P.S. Please un-quote the RadeonBoost mini-guide from your post -- use a link in its place.
 
Hello @CaseySJ,
Can you have a look there please?
BOOOM
My script for Thunderbolt DROM for Z390 Designare
Download Script Thunderbolt DROM.zip,
Open the "Script Thunderbolt DROM.html"
Click to STEP 1
So it just creates an entire SSDT with a random UID?

A couple issues:
1) The pasted text doesn't include indenting. Can you use <pre> instead of <li> for the text (or anything that can preserve indenting)?
2) The length bytes at 0x0E doesn't include the device name string. Change from 0x58 to 0x69 (changes the CRC-32c from 0x05091CDF to 0x211FDE47 = 0x47, 0xde, 0x1f, 0x21
3) Looks like you included all the CRC code from the CRC website. All you need is the CRC-8 function (without input or output reflection) unless you want to make changes to other parts of the drom.

Code:
# using result from Inqnuam's script at https://ravalian.com/thunderbolt/index.php?

source /Volumes/Work/Programming/ThunderboltProjects/Scripts/ThunderboltUtil.sh

#=========================================================================================
# first attempt

loaddslfile /Volumes/Work/Programming/ThunderboltProjects/Notes/examples/Inqnuamscriptresult.dsl
listdroms
usedromnum 1
dumpdrom

1)
thedrom=7B0073991464270000DF1C090501580001000D00010008818002800000000882900180000000088380048001000008849003800100000585500000058650000002870B88200100640000000000038980058A504000058B5040000B0147494741425954450011025A3339302044455349474E41524500
sources:
/Volumes/Work/Programming/ThunderboltProjects/Notes/examples/Inqnuamscriptresult.dsl:\_SB.PCI0.RP05.UPSB.DSB0.NHI0._DSM:ThunderboltDROM

0x01) UID: 0x0000276414997300
0x0d) Device ROM Revision: 1
0x10) Vendor ID: 0x1
0x12) Device ID: 0xD
0x14) Device Revision: 0x1
0x15) EEPROM Revision: 0
0x16)   1: 800280000000
0x1e)   2: 900180000000
0x26)   3: 800480010000
0x2e)   4: 900380010000
0x36)   5: 500000
0x3b)   6: 500000
0x40)   7:
0x42)   8: 200100640000000000
0x4d)   9: 80
0x50)   A: 504000
0x55)   B: 504000
0x5a)   1: "GIGABYTE"
      ============== (following bytes are unexpected)
0x65)   2: "Z390 DESIGNARE"
0x76) End

#=========================================================================================
# second attempt

loaddslfile /Volumes/Work/Programming/ThunderboltProjects/Notes/examples/Inqnuamscriptresult.dsl
listdroms
usedromnum 2
dumpdrom

0x01) UID: 0x0000591868829000
0x0d) Device ROM Revision: 1
0x10) Vendor ID: 0x1
0x12) Device ID: 0xD
0x14) Device Revision: 0x1
0x15) EEPROM Revision: 0
0x16)   1: 800280000000
0x1e)   2: 900180000000
0x26)   3: 800480010000
0x2e)   4: 900380010000
0x36)   5: 500000
0x3b)   6: 500000
0x40)   7:
0x42)   8: 200100640000000000
0x4d)   9: 80
0x50)   A: 504000
0x55)   B: 504000
0x5a)   1: "GIGABYTE"
      ============== (following bytes are unexpected)
0x65)   2: "Z390 DESIGNARE"
0x76) End


# fix it
setstring 2 "Z390 DESIGNARE"
dumpdrom
makedromdsl

    "ThunderboltDROM",
    Buffer (0x76)
    {
        /* 0x00     */  0x40,                                           // CRC8 checksum: 0x40
        /* 0x01     */  0x00, 0x90, 0x82, 0x68, 0x18, 0x59, 0x00, 0x00, // Thunderbolt Bus 0, UID: 0x0000591868829000
        /* 0x09     */  0x47, 0xde, 0x1f, 0x21,                         // CRC32c checksum: 0x211FDE47
        /* 0x0D     */  0x01,                                           // Device ROM Revision: 1
        /* 0x0E     */  0x69, 0x00,                                     // Length: 105 (starting from previous byte)
        /* 0x10     */  0x01, 0x00,                                     // Vendor ID: 0x1
        /* 0x12     */  0x0D, 0x00,                                     // Device ID: 0xD
        /* 0x14     */  0x01,                                           // Device Revision: 0x1
        /* 0x15     */  0x00,                                           // EEPROM Revision: 0
        /* 0x16   1 */  0x08, 0x81, 0x80, 0x02, 0x80, 0x00, 0x00, 0x00,
        /* 0x1E   2 */  0x08, 0x82, 0x90, 0x01, 0x80, 0x00, 0x00, 0x00,
        /* 0x26   3 */  0x08, 0x83, 0x80, 0x04, 0x80, 0x01, 0x00, 0x00,
        /* 0x2E   4 */  0x08, 0x84, 0x90, 0x03, 0x80, 0x01, 0x00, 0x00,
        /* 0x36   5 */  0x05, 0x85, 0x50, 0x00, 0x00,
        /* 0x3B   6 */  0x05, 0x86, 0x50, 0x00, 0x00,
        /* 0x40   7 */  0x02, 0x87,
        /* 0x42   8 */  0x0b, 0x88, 0x20, 0x01, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00,
        /* 0x4D   9 */  0x03, 0x89, 0x80, // PCIe xx:04.0
        /* 0x50   A */  0x05, 0x8a, 0x50, 0x40, 0x00,
        /* 0x55   B */  0x05, 0x8b, 0x50, 0x40, 0x00,
        /* 0x5A   1 */  0x0b, 0x01, 0x47, 0x49, 0x47, 0x41, 0x42, 0x59, 0x54, 0x45, 0x00, // Vendor Name: "GIGABYTE"
        /* 0x65   2 */  0x11, 0x02, 0x5a, 0x33, 0x39, 0x30, 0x20, 0x44, 0x45, 0x53, 0x49, 0x47, 0x4e, 0x41, 0x52, 0x45, 0x00, // Device Name: "Z390 DESIGNARE"
    },

crc () {
local bits=$(($1))
local inputreflected=$(($2))
local outputreflected=$(($3))
local polynomial=$(($4))
local crc=$(($5))
local finalxor=$(($6))
for data in $(xxd -p -c 1 | {
if (( inputreflected )); then
rev | tr '0123456789abcdef' '084c2a6e195d3b7f'
else
cat
fi
}); do
((crc ^= (0x$data << (bits-8))))
for ((i=0;i<8;i++)); do
if ((crc >> (bits-1))); then
((crc = (crc << 1) ^ polynomial))
else
((crc <<= 1))
fi
((crc &= ((1 << $bits)-1)))
done
done
printf "%0$(((bits+3) / 4))x" $((crc ^ finalxor)) | {
if (( outputreflected )); then
rev | tr '0123456789abcdef' '084c2a6e195d3b7f'
else
cat
fi
}
}

crc8uid () {
crc 8 0 0 7 0 0xdb
}

crc32c () {
crc 32 1 1 0x1edc6f41 0xffffffff 0xffffffff
}
yes sir


Let me edit this right now!

Yes sir!
Try again please.


This is what I get now:
 
Hello @CaseySJ,
Can you have a look there please?
The new version is awesome!!

It is truly 1-click to generate a new DROM (with new UID and CRC-8 checksum) for Designare Z390.

Do you plan to support other DROMs such as the ones below? If so, I can insert your HTML into each one of the DROM Mini-Guides as Option #1.

Screen Shot 2020-07-02 at 5.02.10 AM.png


I'll also create a Mini-Guide for @joevt's ThunderboltUtil because that allows us to customize the two text strings at the end of the DROM and also edit any byte in any part of the DROM. Because it calculates CRC-32, ThunderboltUtil is particularly beneficial for any new firmware we encounter in the future. For example, the new Asus Z490 Pro-Art Creator has built-in Thunderbolt. When someone extracts the firmware, we can use ThunderboltUtil to enable Thunderbolt Switch and recalculate CRC-32.
 
The Inateck card seems to be more stable than the motherboard - I had a crash today (before trying the USB reset mentioned) and the onboard ports stopped working, so I plugged everything into the Inateck card and everything worked, whereas previously my only option was to screen-share and restart. I'm currently using the Inateck card for internal BT and my RME Fireface, and one of the onboard USB 2 ports for everything else. Waiting to see how stable that is.

CC: @ziggenpuss @bmoney @brousseau6933 @boob @verendus @evithoma @CaseySJ

Another update - the Inateck card is working fine, and doesn't crash when the onboard USB ports crash (currently posting this just after all of the onboard USB ports have stopped working). So I'm currently running everything from the two ports on the Inateck card. As I don't use much in the way of USB 3 devices other than the occasional SSD (which I can plug into the TB/USB-C ports if necessary) it looks like this is the way I'm going to go for the moment. Shame we can't find out the reason (@CaseySJ, could you point me towards how I discover which driver is loaded for the Inateck card, please? Maybe it's a driver issue?), but it seems to be stable, which is the most important thing!

TL;DR can recommend the Inateck 2 Port PCI-E USB 3.0 Express Card, Mini PCI-E USB 3.0 Hub Controller Adapter, with Internal USB 3.0 20-PIN Connector should you be having USB problems. It'll only leave you with 2 external USB ports (and those ports may not run at USB 3.0 speeds - you have been warned) but it should work.
 
CC: @ziggenpuss @bmoney @brousseau6933 @boob @verendus @evithoma @CaseySJ

Another update - the Inateck card is working fine, and doesn't crash when the onboard USB ports crash (currently posting this just after all of the onboard USB ports have stopped working). So I'm currently running everything from the two ports on the Inateck card. As I don't use much in the way of USB 3 devices other than the occasional SSD (which I can plug into the TB/USB-C ports if necessary) it looks like this is the way I'm going to go for the moment. Shame we can't find out the reason (@CaseySJ, could you point me towards how I discover which driver is loaded for the Inateck card, please? Maybe it's a driver issue?), but it seems to be stable, which is the most important thing!

TL;DR can recommend the Inateck 2 Port PCI-E USB 3.0 Express Card, Mini PCI-E USB 3.0 Hub Controller Adapter, with Internal USB 3.0 20-PIN Connector should you be having USB problems. It'll only leave you with 2 external USB ports (and those ports may not run at USB 3.0 speeds - you have been warned) but it should work.
One way to determine which driver is loaded is by running IORegistryExplorer and scrolling down to the section belonging to the Inatek card. There should be a RHUB or XHC or similar sub-device. Then on the right side we look for CFBundleIdentifier. Here's an example:
Screen Shot 2020-07-02 at 5.15.47 AM.png

I suspect that the same driver will be tied to the Inatek, but let's check and confirm.

Also, please post an Amazon or NewEgg link to the specific Inatek card you're using.
 
One way to determine which driver is loaded is by running IORegistryExplorer and scrolling down to the section belonging to the Inatek card. There should be a RHUB or XHC or similar sub-device. Then on the right side we look for CFBundleIdentifier. Here's an example:
View attachment 478846
I suspect that the same driver will be tied to the Inatek, but let's check and confirm.

Also, please post an Amazon or NewEgg link to the specific Inatek card you're using.

Hmmm - it's the same driver, but to my untrained eye it doesn't look like it's coming up as an RHUB or XHC device:

Screenshot 2020-07-02 13.29.55.png


You can see the (empty) onboard USB ports below.

Amazon link here: https://www.amazon.co.uk/gp/product/B00JEVLEFQ/?tag=tonymacx86-21
 
Hmmm - it's the same driver, but to my untrained eye it doesn't look like it's coming up as an RHUB or XHC device:

View attachment 478847

You can see the (empty) onboard USB ports below.

Amazon link here: https://www.amazon.co.uk/gp/product/B00JEVLEFQ/?tag=tonymacx86-21
I should add that it's perfectly okay that the same driver is being used (as expected). The differences are:
  • The driver is talking to a different USB controller (Fresco Logic)
  • The driver may be using different functions or classes internally to manage the Fresco Logic controller
 
Do you plan to support other DROMs such as the ones below?
YES SIR! I'm already working on them! By opening the same HTML as attached in the post you'll have an option to choose your Thundrbolt and it will automatically generate a new SSDT with UID.

I'll also create a Mini-Guide for @joevt's ThunderboltUtil because that allows us to customize the two text strings at the end of the DROM and also edit any byte in any part of the DROM. Because it calculates CRC-32, ThunderboltUtil is particularly beneficial for any new firmware we encounter in the future. For example, the new Asus Z490 Pro-Art Creator has built-in Thunderbolt. When someone extracts the firmware, we can use ThunderboltUtil to enable Thunderbolt Switch and recalculate CRC-32.
I'll work with him to import these features directly to the HTML
 
Back
Top