Contribute
Register

Gigabyte Z490 Vision D (Thunderbolt 3) + i5-10400 + AMD RX 580

Hi @CaseySJ,

I am building a new system, with Z490 Vision D, i7-10700, 32GB DRAM and Sabrent M.2. My question is it will be housed in the BeQuiet 900 Dark Base ATX Full Tower case and the latest Vision D zip you have, will that work? The case is a bit different than the 500 but for the most part it should install. My parts arrive this week so I will hopefully be more knowledgable after building it.
 
Hi @CaseySJ,

I explored more. I have been able to generate a custom USBmap.kext which only has Info.plist inside it (and not executable code), and used that to enable USB ports. I disabled all SSDT-UIAC-VISION-D-V*.aml. and USBInjectAll.kext. The ports were still working.

Having no extra code (through a kext) is a good thing, it lets OpenCore handles the port maps, since USBInjectAll is no longer maintained, this makes it even better and as dortania mentioned in my above post's quote, this makes it closer to "Real Mac" because Apple also uses similar method for port maps in real Macs.

I'll post more the proper custom USBMap.kext soon, which is very specific to our Vision D board. Dortania recommends having custom SSDTs and Port maps, as this reduces bloat and faster boot times compared to having generic SSDT and stuff, because those have to go through lots of of non-existing things to figure things our at start of the boot.

Current working config, without UIAC.aml's and no USBInjectAll.kext.

View attachment 524614View attachment 524615



Yes, that's correct. You will need either USBInjectAll.kext or a custom USB port map to enable proper working of the USB ports. This is because macOS is very poor in picking USB ports from ACPI tables. Thing is USBInjectAll.kext should be used temporarily while preparing config and booting into macOS for very first time. After that a custom map with limited no. of ports can be created (because macOS has limit of 15 ports limit, counting each hub as single unit). XhciPortLimit quirk is also meant to be temporary and be enabled while generating port map. After that, a new USBMap's plist should be used and both USBInjectAll.kext, XhciPortLimit should be removed. Even SSDT-UIAC-VISION-D-V*.aml ACPI tables shouldn't be needed as the new map can disable ports too.

@CaseySJ

I have attached the new USBMap.kext. Inside it, there's only Info.plist (and no executable binary) which can be either viewed in Text editor or any simple plist editor which other guides recommends. The best part is the ports can be commenting out the "port" keyword in the data structure. There's no need to remove it completely.

I have tested it throughly, it is based on V2.aml but I removed the front panel ports but feel free to enable those to match it with V3 or V1. To try it yourself, add it as a kext in OpenCore config and remove USBInjectAll and disable XhciPortLimit, and also disable all SSDT-UIAC-VISION-D-V*.aml files. The new port map will be loaded by OpenCore. No need of any other external hacks. To confirm the ports are correctly enabled open IORegisteryExplorer, search for XHC, you should see 15 ports under 1 bus and 2 more under another (this is Titan Ridge's 3.1 Gen 2 USB-C ports - named SSP1 and SSP2 in first post).

Tested on Monterey, latest beta, config based upon EFI 0.7.1.

NOTE: In case you didn't know, since it is non executable kext, the kextstat won't be showing it in the list of loaded modules. The Info.plist mentions model as iMac20,1, if it doesn't work/load properly, you may need to change that iMac19,1 since they resembles so much.
 

Attachments

  • USBMap.kext.zip
    1.7 KB · Views: 47
Last edited:
Hi @CaseySJ,

I explored more. I have been able to generate a custom USBmap.kext which only has Info.plist inside it (and not executable code), and used that to enable USB ports. I disabled all SSDT-UIAC-VISION-D-V*.aml. and USBInjectAll.kext. The ports were still working.

Having no extra code (through a kext) is a good thing, it lets OpenCore handles the port maps, since USBInjectAll is no longer maintained, this makes it even better and as dortania mentioned in my above post's quote, this makes it closer to "Real Mac" because Apple also uses similar method for port maps in real Macs.

I'll post more the proper custom USBMap.kext soon, which is very specific to our Vision D board. Dortania recommends having custom SSDTs and Port maps, as this reduces bloat and faster boot times compared to having generic SSDT and stuff, because those have to go through lots of of non-existing things to figure things our at start of the boot.

Current working config, without UIAC.aml's and no USBInjectAll.kext.

View attachment 524614View attachment 524615



Yes, that's correct. You will need either USBInjectAll.kext or a custom USB port map to enable proper working of the USB ports. This is because macOS is very poor in picking USB ports from ACPI tables. Thing is USBInjectAll.kext should be used temporarily while preparing config and booting into macOS for very first time. After that a custom map with limited no. of ports can be created (because macOS has limit of 15 ports limit, counting each hub as single unit). XhciPortLimit quirk is also meant to be temporary and be enabled while generating port map. After that, a new USBMap's plist should be used and both USBInjectAll.kext, XhciPortLimit should be removed. Even SSDT-UIAC-VISION-D-V*.aml ACPI tables shouldn't be needed as the new map can disable ports too.
I'm a bit confused with this new configuration in OC 0.7.1. I'm running iMac 19,1, BIOS F5 on the Vision-D. I enabled USBInjectALL.kext and that fixed everything for me, but it is unclear to me whether OC creates this USBmap.kext during the first boot or if I'm supposed to create it. If OC is supposed to create it, it didn't, at least not in the kext directory. From your description, it sounds like it has to be created by the user. Would appreciate some additional clarification.

Thanks dsingh!

Rand
 
I'm a bit confused with this new configuration in OC 0.7.1. I'm running iMac 19,1, BIOS F5 on the Vision-D. I enabled USBInjectALL.kext and that fixed everything for me, but it is unclear to me whether OC creates this USBmap.kext during the first boot or if I'm supposed to create it. If OC is supposed to create it, it didn't, at least not in the kext directory. From your description, it sounds like it has to be created by the user. Would appreciate some additional clarification.

Thanks dsingh!

Rand
It is supposed to be created by the user. It is custom to every board. Here's the guide I followed: https://dortania.github.io/OpenCore-Post-Install/usb/intel-mapping/intel.html

Most of the work can be handled by the script they referred in the guide. But still requires a bit of careful work of assigning the port types manually. It also adds ports which doesn't exist or are not mapped to board, for example HS01, SS08-10. Those doesn't map anything on the board, so they need to be disabled. I made the map based on SSDT-UIAC-VISION-D-V2.aml[*]. Check out my previous post and feel free to try it out!

Cheers

EDIT: [*] I disabled only the front panel ports and none of the back. This is a bit different than V1 and V3. You can configure any ports anyhow by just editing the Info.plist. Refer to Post 1 for port names and locations.
 
Last edited:
It is supposed to be created by the user. It is custom to every board. Here's the guide I followed: https://dortania.github.io/OpenCore-Post-Install/usb/intel-mapping/intel.html

Most of the work can be handled by the script they referred in the guide. But still requires a bit of careful work of assigning the port types manually. It also adds ports which doesn't exist or are not mapped to board, for example HS01, SS08-10. Those doesn't map anything on the board, so they need to be disabled. I made the map based on SSDT-UIAC-VISION-D-V2.aml[*]. Check out my previous post and feel free to try it out!

Cheers

EDIT: [*] I disabled only the front panel ports and none of the back. This is a bit different than V1 and V3. You can configure any ports anyhow by just editing the Info.plist. Refer to Post 1 for port names and locations.
Thanks @dsingh. I found a project on GitHub called USBMap which will automate the process. https://github.com/corpnewt/USBMap. So I've got a USBMap.kext made by that program. It does work. I can boot but some of my USB ports are not working. (I turned everything on.) I think I need to to back to SSDT-UIAC-VISION-D-V2.ami[*] and figure out what to turn off.

Thanks again for your help.

Rand
 
Thanks @dsingh. I found a project on GitHub called USBMap which will automate the process. https://github.com/corpnewt/USBMap. So I've got a USBMap.kext made by that program. It does work. I can boot but some of my USB ports are not working. (I turned everything on.) I think I need to to back to SSDT-UIAC-VISION-D-V2.ami[*] and figure out what to turn off.

Thanks again for your help.

Rand
The things to look for are - in last column when you are Discovering ports using that tool, the port types are correctly displayed (when USBInjectAll and V2, XhciPortLimit are temporarily enabled), it will range from 0, 3, 9 and 255. But for some reason, when generating the kext, it picks up and makes everything to 3. I had to manually set the types from Discovery section. Perhaps you can disable HS14 which is internal Intel WiFi (assuming you are not using that). If you are not going to modify RGB Fusion values on macOS, you can remove HS12. HS11 is internal header USB 2.0 Hub at the bottom of the board. If you have nothing plugged in there (Fenvi card usually go there) you can turn that off. Also disable HS02 because it doesn't map to anything, same goes with SS08, SS09, SS10 (maybe SS11 if it exists). You'll now only need to remove 2-3 more ports, that may need some care.
 
@CaseySJ

I have attached the new USBMap.kext. Inside it, there's only Info.plist (and no executable binary) which can be either viewed in Text editor or any simple plist editor which other guides recommends. The best part is the ports can be commenting out the "port" keyword in the data structure. There's no need to remove it completely.

I have tested it throughly, it is based on V2.aml but I removed the front panel ports but feel free to enable those to match it with V3 or V1. To try it yourself, add it as a kext in OpenCore config and remove USBInjectAll and disable XhciPortLimit, and also disable all SSDT-UIAC-VISION-D-V*.aml files. The new port map will be loaded by OpenCore. No need of any other external hacks. To confirm the ports are correctly enabled open IORegisteryExplorer, search for XHC, you should see 15 ports under 1 bus and 2 more under another (this is Titan Ridge's 3.1 Gen 2 USB-C ports - named SSP1 and SSP2 in first post).

Tested on Monterey, latest beta, config based upon EFI 0.7.1.

NOTE: In case you didn't know, since it is non executable kext, the kextstat won't be showing it in the list of loaded modules. The Info.plist mentions model as iMac20,1, if it doesn't work/load properly, you may need to change that iMac19,1 since they resembles so much.
Would this be compatible with all Gigabyte Z490 Vision D boards?
 
@CaseySJ

I have attached the new USBMap.kext. Inside it, there's only Info.plist (and no executable binary) which can be either viewed in Text editor or any simple plist editor which other guides recommends. The best part is the ports can be commenting out the "port" keyword in the data structure. There's no need to remove it completely.

I have tested it throughly, it is based on V2.aml but I removed the front panel ports but feel free to enable those to match it with V3 or V1. To try it yourself, add it as a kext in OpenCore config and remove USBInjectAll and disable XhciPortLimit, and also disable all SSDT-UIAC-VISION-D-V*.aml files. The new port map will be loaded by OpenCore. No need of any other external hacks. To confirm the ports are correctly enabled open IORegisteryExplorer, search for XHC, you should see 15 ports under 1 bus and 2 more under another (this is Titan Ridge's 3.1 Gen 2 USB-C ports - named SSP1 and SSP2 in first post).

Tested on Monterey, latest beta, config based upon EFI 0.7.1.

NOTE: In case you didn't know, since it is non executable kext, the kextstat won't be showing it in the list of loaded modules. The Info.plist mentions model as iMac20,1, if it doesn't work/load properly, you may need to change that iMac19,1 since they resembles so much.
The below is what it shows in Hackintool after using the usbmap.kext and disabling the v2.aml. All my ports now show as Internal- Why?
Screen Shot 2021-07-15 at 4.14.33 PM.png
 
Hi @CaseySJ
Can you please advise me. I changed my M.2 today to a 2TB and the speed of the drive is miserably slow. I see that it shows the link width only as X1 and the other 2 M.2 show as x4, is there any way to change this to X4. The previous M.2 was very fast. The brands are the same Crucial.
Screen Shot 2021-07-15 at 8.55.35 PM.png


Screen Shot 2021-07-15 at 8.56.11 PM.png
 
This was the issue:

in the OC 0.7.1 config.plist file USBInjectAll was disabled. Enabling that and rebooting enabled USB ports again and my USB mouse now works again.

Reason:

1. Casey's downloaded configuration plist files has USBInjectALL enabled.
2. Using OpenCore Configurator Version 2.48.1.0 with preferences Configuration Properties set to OC 0.7.1 Release Version disables USBInjectAll
3. So the issue was with the version of OpenCore Configurator, even with Properties set to 0.7.1 disabling USBInjectAll.

So if anyone else is having this problem, make sure that USBInjectAll is enabled in Kernel.

Rand
Thank you for finding this!! It’s been a very busy week at the office; will follow-up soon.
 
Back
Top