Welcome to AMD OS X

Why not register now to gain full access.

If you've got your system running near to perfect then you can share your success story here.
#52387
Image

Interesting how this build came about (post is still pending completion)! AMD discord has been essential in getting this build working. I decided to embark on a mini-itx build since I am tired of machines taking up unneeded space. I decided to downsize as much as possible. I settled on a B450 board since I didn't need more than a few key pieces of hardware. Here is the build:

Hardware

  • CPU: AMD Ryzen 7 1700 running @ 3.6 GHz
  • Motherboard: ASRock B450 Gaming-ITX/AC
  • RAM: G.SKILL TridentZ Series 16GB (2x8GB) - F4-3600C16D-16GTZ
  • HDD: Mushkin Pilot-E NVMe M.2 SSD 1TB
  • USB : 3.X with USB-C (10gbps)
  • GPU: SAPPHIRE Radeon RX Vega 64
  • LAN: Intel 210T (smalltree Kext)
  • LAN: Broadcom BCM94360CS2 (Natively supported)
  • BT: BRCM20702
  • Sound: USB DAC


Working:
  • GPU
  • Intel NIC
  • WiFi
  • Bluetooth
  • All USB ports
  • OpenCore boot
  • Windows 10 install
  • Sleep


Not working:
  • DRM


Pending hardware:
  • DAN case


I was a bit frustrated with the USB situation on my previous AMD board. Therefore, I decided to make a custom SSDT for this board. I was able to pull the info of my ports' exact addresses / capabilities with USBDevTree in Windows. I printed out the text report and got to work. I have attached the SSDT to the post. Every port works with the proper speed. I am currently using numerous external drives with my main driver being a 512GB Samsumg Pro 960 in an USB 10gbps capable NVM enclosure.

Let me know if you guys would be interested in anything in my system or any requests.

Spoiler:
Code: Select all

DefinitionBlock ("SSDT-ASrock-Fatal1ty-B450-Gaming-ITXAC.aml", "SSDT", 1, "ASRock","RyzenUSB", 0x00000001)
{
    // Define High speed ports
    External (\_SB_.PCI0.GPP2.PTXH.RHUB.HS01, DeviceObj)
    External (\_SB_.PCI0.GPP2.PTXH.RHUB.HS06, DeviceObj)
    External (\_SB_.PCI0.GPP2.PTXH.RHUB.HS11, DeviceObj)
    External (\_SB_.PCI0.GPP2.PTXH.RHUB.HS12, DeviceObj)
    
    // Define Super Speed ports
    External (\_SB_.PCI0.GPP2.PTXH.RHUB.SS01, DeviceObj)
    External (\_SB_.PCI0.GPP2.PTXH.RHUB.SS02, DeviceObj)
    External (\_SB_.PCI0.GPP2.PTXH.RHUB.SS03, DeviceObj)
    External (\_SB_.PCI0.GPP2.PTXH.RHUB.SS04, DeviceObj)
    
    // Define Rhub for Port injection 
    External (\_SB_.PCI0.GPP2.PTXH.RHUB, DeviceObj)

    // Drop HS ports - Reboot after enabling for testing with IORegistryExplorer
    Scope (\_SB_.PCI0.GPP2.PTXH.RHUB.HS01)
    {
        Name (_STA, Zero)
    }
    Scope (\_SB_.PCI0.GPP2.PTXH.RHUB.HS06)
    {
        Name (_STA, Zero)
    }
    Scope (\_SB_.PCI0.GPP2.PTXH.RHUB.HS11)
    {
        Name (_STA, Zero)
    }
    Scope (\_SB_.PCI0.GPP2.PTXH.RHUB.HS12)
    {
        Name (_STA, Zero)
    }
    
    // Drop SS ports
    Scope (\_SB_.PCI0.GPP2.PTXH.RHUB.SS01)
    {
        Name (_STA, Zero)
    }
    Scope (\_SB_.PCI0.GPP2.PTXH.RHUB.SS02)
    {
        Name (_STA, Zero)
    }
    Scope (\_SB_.PCI0.GPP2.PTXH.RHUB.SS03)
    {
        Name (_STA, Zero)
    }
    Scope (\_SB_.PCI0.GPP2.PTXH.RHUB.SS04)
    {
        Name (_STA, Zero)
    }

    // Now that we have dropped these ports, let's add ports to RHUB
    Scope (\_SB_.PCI0.GPP2.PTXH.RHUB)
    {
        // USB 3.1 Gen 2 - A connector
        Device (PT01)
        {
            // Assign address 1 per the report run by USBDEVTREE in windows
            Name (_ADR, 0x1)
                
            // Package payload
            // 0xFF = Connectable
            // 0x03 = USB 3 Standard-A connector
            // Zero = Reserving for future use. Must be Zero
            // Zero = Reserving for future use. Must be Zero                
            // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
            Name (_UPC, Package (0x04)
            {
                0xFF, 
                0x03, 
                Zero, 
                Zero
            })  
        }
        
        Device (PT02)
        {
            // Assign address 2 per the report run by USBDEVTREE in windows
            Name (_ADR, 0x2)
                
            // Package payload
            // 0xFF = Connectable
            // 0x09 = Type C connector - USB2 and SS with Switch
            // Zero = Reserving for future use. Must be Zero
            // Zero = Reserving for future use. Must be Zero                
            // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
            Name (_UPC, Package (0x04)
            {
                0xFF, 
                0x09, 
                Zero, 
                Zero
            })  
        }
        
        // USB 3.1 - Front panel, bottom
        Device (PT03)
        {
            // Assign address 3 per the report run by USBDEVTREE in windows
            Name (_ADR, 0x3)
                
            // Package payload
            // 0xFF = Connectable
            // 0x03 = USB 3 Standard-A connector
            // Zero = Reserving for future use. Must be Zero
            // Zero = Reserving for future use. Must be Zero                
            // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
            Name (_UPC, Package (0x04)
            {
                0xFF, 
                0x03, 
                Zero, 
                Zero
            })  
        }
        
        // USB 3.1 - Front panel, top
        Device (PT04)
        {
            // Assign address 4 per the report run by USBDEVTREE in windows
            Name (_ADR, 0x4)
                
            // Package payload
            // 0xFF = Connectable
            // 0x03 = USB 3 Standard-A connector
            // Zero = Reserving for future use. Must be Zero
            // Zero = Reserving for future use. Must be Zero                
            // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
            Name (_UPC, Package (0x04)
            {
                0xFF, 
                0x03, 
                Zero, 
                Zero
            })  
        }
        
        // USB 2.0 port on USB 3.1 Gen 2 - A connector
        Device (PT05)
        {
            // Assign address 5 per the report run by USBDEVTREE in windows
            Name (_ADR, 0x5)
                
            // Package payload
            // 0xFF = Connectable
            // Zero = USB 2 Standard-A connector
            // Zero = Reserving for future use. Must be Zero
            // Zero = Reserving for future use. Must be Zero                
            // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
            Name (_UPC, Package (0x04)
            {
                0xFF, 
                Zero, 
                Zero, 
                Zero
            })  
        }
        
        Device (PT06)
        {
            // Assign address 6 per the report run by USBDEVTREE in windows
            Name (_ADR, 0x6)
                
            // Package payload
            // 0xFF = Connectable
            // 0x08 = Type C connector - USB2-only
            // Zero = Reserving for future use. Must be Zero
            // Zero = Reserving for future use. Must be Zero                
            // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
            Name (_UPC, Package (0x04)
            {
                0xFF, 
                0x08, 
                Zero, 
                Zero
            })  
        }
        
        // USB 2.0 port - Front panel, bottom
        Device (PT07)
        {
            // Assign address 7 per the report run by USBDEVTREE in windows
            Name (_ADR, 0x7)
                
            // Package payload
            // 0xFF = Connectable
            // Zero = USB 2 Standard-A connector
            // Zero = Reserving for future use. Must be Zero
            // Zero = Reserving for future use. Must be Zero                
            // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
            Name (_UPC, Package (0x04)
            {
                0xFF, 
                Zero, 
                Zero, 
                Zero
            })  
        }
        
        // USB 2.0 port - Front panel, top
        Device (PT08)
        {
            // Assign address 8 per the report run by USBDEVTREE in windows
            Name (_ADR, 0x8)
                
            // Package payload
            // 0xFF = Connectable
            // Zero = USB 2 Standard-A connector
            // Zero = Reserving for future use. Must be Zero
            // Zero = Reserving for future use. Must be Zero                
            // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
            Name (_UPC, Package (0x04)
            {
                0xFF, 
                Zero, 
                Zero, 
                Zero
            })  
        }
        
        // Bluetooth internal
        Device (PT10)
        {
            // Assign address 10 per the report run by USBDEVTREE in windows
            Name (_ADR, 0xA)
                
            // Package payload
            // 0xFF = Connectable
            // 0xFF = Internal/Proprietary Connector
            // Zero = Reserving for future use. Must be Zero
            // Zero = Reserving for future use. Must be Zero                
            // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
            Name (_UPC, Package (0x04)
            {
                0xFF, 
                0xFF, 
                Zero, 
                Zero
            })  
        }
        
        // USB 2 above PS2 port
        Device (PT11)
        {
            // Assign address 11 per the report run by USBDEVTREE in windows
            Name (_ADR, 0xB)
                
            // Package payload
            // 0xFF = Connectable
            // Zero = USB 2 Standard-A connector
            // Zero = Reserving for future use. Must be Zero
            // Zero = Reserving for future use. Must be Zero                
            // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
            Name (_UPC, Package (0x04)
            {
                0xFF, 
                Zero, 
                Zero, 
                Zero
            })  
        }
        
        // USB above PS2 port
        Device (PT14)
        {
            // Assign address 14 per the report run by USBDEVTREE in windows
            Name (_ADR, 0xE)
                
            // Package payload
            // 0xFF = Connectable
            // Zero = USB 2 Standard-A connector
            // Zero = Reserving for future use. Must be Zero
            // Zero = Reserving for future use. Must be Zero                
            // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
            Name (_UPC, Package (0x04)
            {
                0xFF, 
                Zero, 
                Zero, 
                Zero
            })  
        }
    }
}

I also noticed , after some chat, I did not map all of my ports properly. I have two USB chipsets. Here is the accompanying SSDT for the alternate chipset:
Spoiler:
Code: Select all
DefinitionBlock ("SSDT-ASrock-Fatal1ty-B450-Gaming-ITXAC-XHC0fix.aml", "SSDT", 1, "ASRock","XHC0fix", 0x00000001)
{
    
        
    // Step 1 - drop ports
    // We need port 3,4,7,8
    // Therefore we drop 1,2,5,6
    // define ports to zero out
    //External (\_SB_.PCI0.GP17.XHC0.RHUB.PRT1, DeviceObj)
    //External (\_SB_.PCI0.GP17.XHC0.RHUB.PRT2, DeviceObj)
    //External (\_SB_.PCI0.GP17.XHC0.RHUB.PRT5, DeviceObj)
    //External (\_SB_.PCI0.GP17.XHC0.RHUB.PRT6, DeviceObj)
    // define RHUB
    //External (\_SB_.PCI0.GP17.XHC0.RHUB, DeviceObj)
    
    // 2nd attempt
    // Define GP17
    External (_SB_.PCI0.GP17, DeviceObj)
    External (_SB_.PCI0.GP17.XHC0, DeviceObj)
    
    Scope (\_SB.PCI0.GP17.XHC0)
    {
        Method (_STA, 0, NotSerialized)  // _STA: Status
        {
            Return (Zero)
        }
    }
    
    Scope (\_SB.PCI0.GP17)
    {
        Device (HACK)
        {
            Name (_ADR, 0x03)  // _ADR: Address
            Method (_STA, 0, NotSerialized)  // _STA: Status
            {
                Return (0x0F)
            }
            Device (RHUB)
            {
                Name (_ADR, Zero)  // _ADR: Address
                // USB 2.0 support (ports 3 and 4)
                Device (PRT3)
                {
                    // Assign address 3 per the report
                    Name (_ADR, 0x3)
                
                    // Package payload
                    // 0xFF = Connectable
                    // Zero = USB 2 Standard-A connector
                    // Zero = Reserving for future use. Must be Zero
                    // Zero = Reserving for future use. Must be Zero                
                    // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
                    Name (_UPC, Package (0x04)
                    {
                        0xFF, 
                        Zero, 
                        Zero, 
                        Zero
                    })  
                }
                Device (PRT4)
                {
                    // Assign address 4 per the report
                    Name (_ADR, 0x4)
                
                    // Package payload
                    // 0xFF = Connectable
                    // Zero = USB 2 Standard-A connector
                    // Zero = Reserving for future use. Must be Zero
                    // Zero = Reserving for future use. Must be Zero                
                    // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
                    Name (_UPC, Package (0x04)
                    {
                        0xFF, 
                        Zero, 
                        Zero, 
                        Zero
                    })  
                }
                
                // USB 3.0 support (ports 7 and 8)
                Device (PRT7)
                {
                    // Assign address 3 per the report run by USBDEVTREE in windows
                    Name (_ADR, 0x7)
                
                    // Package payload
                    // 0xFF = Connectable
                    // 0x03 = USB 3 Standard-A connector
                    // Zero = Reserving for future use. Must be Zero
                    // Zero = Reserving for future use. Must be Zero                
                    // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
                    Name (_UPC, Package (0x04)
                    {
                        0xFF, 
                        0x03, 
                        Zero, 
                        Zero
                    })  
                }
                Device (PRT8)
                {
                    // Assign address 3 per the report run by USBDEVTREE in windows
                    Name (_ADR, 0x8)
                
                    // Package payload
                    // 0xFF = Connectable
                    // 0x03 = USB 3 Standard-A connector
                    // Zero = Reserving for future use. Must be Zero
                    // Zero = Reserving for future use. Must be Zero                
                    // ^ https://uefi.org/sites/default/files/resources/ACPI_6_3_final_Jan30.pdf
                    Name (_UPC, Package (0x04)
                    {
                        0xFF, 
                        0x03, 
                        Zero, 
                        Zero
                    })  
                } 
            }
        }
    }
}
Last edited by mexpat911 on Wed Mar 25, 2020 1:31 pm, edited 1 time in total.
karistuck liked this

 Advertising

#53518
Could you share more about your configuration. I'm also using the ASRock B450 ITX and am having memory addressing issues.
#55367
I have not abandoned this thread. My machine has been pretty much perfect up until my USB hub died. Sleep is no longer working. I have more time to get back to this. Please reach out to me on Discord.

I will not share my EFI directory because OpenCore requires you to read the docs in order fully grasp the options/feature sets you wish to enable.

I'll be happy to answer any questions on discord/this thread.
#55375
I’m trying to get a halfway working usb map as that was the only thing I’ve struggled with. Also what kext are you running with your build. Most people share oc files with serial and board id redacted.

What’s your discord username? I’d love to try and get this one going
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]