Contribute
Register

HDMI Audio GTX 1060 Razer Blade

Status
Not open for further replies.
Joined
Dec 7, 2011
Messages
545
Motherboard
Razer Blade 15 - Clover
CPU
i7-8750H
Graphics
UHD 630/GTX 1060 - 1920x1080
Mac
  1. MacBook Pro
Mobile Phone
  1. Android
Did a bunch of searching and all of the available fixes do not enable HDMI audio on my Razer Blade 2018 Laptop.

Nvidia GTX 1060
Intel UHD 630
i7-8750H
High Sierra Build 17G2307 (same problem existed on the 17G65 build)

Tried using the latest AppleALC kext, it provide the option for HDMI audio in Sound Preferences, but no audio is transmitted. Also tried using the SSDT-HDMI-NVIDIA-PEG0 (with and without the AppleALC kext), same result. Dug up an older HDMIAudio Kext, same result. Looked through the AppleHDA HDMI Audio thread, tried using the Clover patcher but it fails with a "No audio codec detected" even though AppleHDA.kext is in S-L-E. I even attempted to use the FakePCIID_Intel_HDMI_Audio kext just to troubleshoot, same thing no audio over HDMI.

I don't know where else to go from here.

Problem reporting files attached.
 

Attachments

  • debug_19959.zip
    2 MB · Views: 64
Did a bunch of searching and all of the available fixes do not enable HDMI audio on my Razer Blade 2018 Laptop.

Nvidia GTX 1060
Intel UHD 630
i7-8750H
High Sierra Build 17G2307 (same problem existed on the 17G65 build)

Tried using the latest AppleALC kext, it provide the option for HDMI audio in Sound Preferences, but no audio is transmitted. Also tried using the SSDT-HDMI-NVIDIA-PEG0 (with and without the AppleALC kext), same result. Dug up an older HDMIAudio Kext, same result. Looked through the AppleHDA HDMI Audio thread, tried using the Clover patcher but it fails with a "No audio codec detected" even though AppleHDA.kext is in S-L-E. I even attempted to use the FakePCIID_Intel_HDMI_Audio kext just to troubleshoot, same thing no audio over HDMI.

I don't know where else to go from here.

Problem reporting files attached.

It requires a bit of ACPI work to add "hda-gfx" and HDAU.

I use this one one of my (WIP) desktops with 1050Ti:
Code:
// Add HDMI audio support for Nvidia device at _SB.PCI0.PEG0.GFX0 (PEGP renamed to GFX0 by config.plist)

DefinitionBlock("", "SSDT", 2, "hack", "_NV1050Ti", 0)
{
    External(_SB.PCI0.PEG0, DeviceObj)
    External(_SB.PCI0.PEG0.GFX0, DeviceObj)

    Scope(_SB.PCI0.PEG0)
    {
        Scope(GFX0)
        {
            Name(_SUN, 1)
            Method(_DSM, 4)
            {
                If (!Arg2) { Return (Buffer() { 0x03 } ) }
                Return (Package()
                {
                    "hda-gfx", Buffer() { "onboard-2" },
                    //"@2,AAPL,boot-display", Buffer() { }, // change if your primary framebuffer is different
                    //"@0,connector-type", Buffer() { 0x00, 0x08, 0x00, 0x00 }, //DVI
                    //"@1,connector-type", Buffer() { 0x00, 0x08, 0x00, 0x00 }, //HDMI
                    //"@2,connector-type", Buffer() { 0x00, 0x04, 0x00, 0x00 }, //DP
                    #if 0
                    "@3,connector-type", Buffer() { 0x00, 0x08, 0x00, 0x00 },
                    "@4,connector-type", Buffer() { 0x00, 0x08, 0x00, 0x00 },
                    "@5,connector-type", Buffer() { 0x00, 0x08, 0x00, 0x00 },
                    #endif
                })
            }
        }
        Device(HDAU)
        {
            Name(_ADR, 1)
            Method(_DSM, 4)
            {
                If (!Arg2) { Return (Buffer() { 0x03 } ) }
                Return (Package()
                {
                    "hda-gfx", Buffer() { "onboard-2" },
                    "layout-id", Buffer() { 1, 0, 0, 0 },
                })
            }
        }
    }
}
EOF

Note: Requires matching ACPI paths/renames (I do a PEGP->GFX0 rename *after* GFX0->IGPU rename).
 
It requires a bit of ACPI work to add "hda-gfx" and HDAU.

I use this one one of my (WIP) desktops with 1050Ti:
Code:
// Add HDMI audio support for Nvidia device at _SB.PCI0.PEG0.GFX0 (PEGP renamed to GFX0 by config.plist)

DefinitionBlock("", "SSDT", 2, "hack", "_NV1050Ti", 0)
{
    External(_SB.PCI0.PEG0, DeviceObj)
    External(_SB.PCI0.PEG0.GFX0, DeviceObj)

    Scope(_SB.PCI0.PEG0)
    {
        Scope(GFX0)
        {
            Name(_SUN, 1)
            Method(_DSM, 4)
            {
                If (!Arg2) { Return (Buffer() { 0x03 } ) }
                Return (Package()
                {
                    "hda-gfx", Buffer() { "onboard-2" },
                    //"@2,AAPL,boot-display", Buffer() { }, // change if your primary framebuffer is different
                    //"@0,connector-type", Buffer() { 0x00, 0x08, 0x00, 0x00 }, //DVI
                    //"@1,connector-type", Buffer() { 0x00, 0x08, 0x00, 0x00 }, //HDMI
                    //"@2,connector-type", Buffer() { 0x00, 0x04, 0x00, 0x00 }, //DP
                    #if 0
                    "@3,connector-type", Buffer() { 0x00, 0x08, 0x00, 0x00 },
                    "@4,connector-type", Buffer() { 0x00, 0x08, 0x00, 0x00 },
                    "@5,connector-type", Buffer() { 0x00, 0x08, 0x00, 0x00 },
                    #endif
                })
            }
        }
        Device(HDAU)
        {
            Name(_ADR, 1)
            Method(_DSM, 4)
            {
                If (!Arg2) { Return (Buffer() { 0x03 } ) }
                Return (Package()
                {
                    "hda-gfx", Buffer() { "onboard-2" },
                    "layout-id", Buffer() { 1, 0, 0, 0 },
                })
            }
        }
    }
}
EOF

Note: Requires matching ACPI paths/renames (I do a PEGP->GFX0 rename *after* GFX0->IGPU rename).


Couple of quick questions in regards to this:

For the PEG0->GFX0 rename, what patch is that? I did some searching and can't seem to find the patch to add into the config.plist and I have no idea where to start to make my own patch lol. Also not sure if it makes a difference with the patch or not, but in my IORG my PEG0 is actually named PEG0@1 and GFX0 is named GFX0@0


Also, the code you posted looks to be the same as the one for the SSDT-HDMI-NVIDIA-PEG0 that I have already. So my issue probably revolves around the fact that I don't have the PEG0->GFX0 rename taken care of.
 
Couple of quick questions in regards to this:

For the PEG0->GFX0 rename, what patch is that? I did some searching and can't seem to find the patch to add into the config.plist and I have no idea where to start to make my own patch lol. Also not sure if it makes a difference with the patch or not, but in my IORG my PEG0 is actually named PEG0@1 and GFX0 is named GFX0@0

I do PEGP->GFX0 rename via config.plist/ACPI/DSDT/Patches.
Read my ACPI hot patch guide for an understanding of the fundamentals:
http://www.tonymacx86.com/threads/guide-using-clover-to-hotpatch-acpi.200137/
(rename patches are the easiest hotpatch to understand and implement)

I think you will find that if you check your native ACPI that it does not use GFX0.
WhateverGreen is playing tricks on you with ioreg, so you can't trust what you read there.

Also, the code you posted looks to be the same as the one for the SSDT-HDMI-NVIDIA-PEG0 that I have already. So my issue probably revolves around the fact that I don't have the PEG0->GFX0 rename taken care of.

It is not exactly the same. Mine depends on renames via config.plist/ACPI/DSDT/Patches. The one you have relies on other tricks (setting _ADR in an _INI).

I don't like to use such tricks.
 
I do PEGP->GFX0 rename via config.plist/ACPI/DSDT/Patches.
Read my ACPI hot patch guide for an understanding of the fundamentals:
http://www.tonymacx86.com/threads/guide-using-clover-to-hotpatch-acpi.200137/
(rename patches are the easiest hotpatch to understand and implement)

I think you will find that if you check your native ACPI that it does not use GFX0.
WhateverGreen is playing tricks on you with ioreg, so you can't trust what you read there.



It is not exactly the same. Mine depends on renames via config.plist/ACPI/DSDT/Patches. The one you have relies on other tricks (setting _ADR in an _INI).

I don't like to use such tricks.


I'll make a a new SSDT with your code if that's the case.

But going back to hot patching, I understand how to implement it, it's super easy to add to the config.plist but what I can't seem to find/understand is how you find the hex values to make the patch. Is there a guide to follow to retrieve those hex values? The ones in your guide are already provided and there isn't one for PEG0->GFX0
 
but what I can't seem to find/understand is how you find the hex values to make the patch.

It is covered in the guide.
Note:
Code:
NUC6i7KYK:~ rehabman$ echo -n PEGP|xxd
00000000: 5045 4750                                PEGP
NUC6i7KYK:~ rehabman$ echo -n GFX0|xxd
00000000: 4746 5830                                GFX0

No rocket science here, just ASCII.
 
It is covered in the guide.
Note:
Code:
NUC6i7KYK:~ rehabman$ echo -n PEGP|xxd
00000000: 5045 4750                                PEGP
NUC6i7KYK:~ rehabman$ echo -n GFX0|xxd
00000000: 4746 5830                                GFX0

No rocket science here, just ASCII.

Honestly don't know how I missed that.

Anyways, did the hotpatch, used your SSDT edit and put it to the test and I'm still not getting any sound over HDMI. I've tried both the HDMI port and the Mini Display port. Attached updated PR files to see if I did something wrong.
 

Attachments

  • debug_18254.zip
    2.8 MB · Views: 80
Honestly don't know how I missed that.

Anyways, did the hotpatch, used your SSDT edit and put it to the test and I'm still not getting any sound over HDMI. I've tried both the HDMI port and the Mini Display port. Attached updated PR files to see if I did something wrong.

Why are you renaming PEG0 to GFX0?
Perhaps you should read my post carefully.
 
Why are you renaming PEG0 to GFX0?
Perhaps you should read my post carefully.

Noted, corrected. Still nothing. Updated PR files attached.
 

Attachments

  • debug_4334.zip
    3 MB · Views: 60
Noted, corrected. Still nothing. Updated PR files attached.

Your OEM tables do not use _SB.PCI0.PEGP.
They use _SB.PCI0.PEG0.

Must code SSDT-HDMI-NVIDIA-PEGP.aml appropriately (and probably should rename it to *PEG0).
 
Status
Not open for further replies.
Back
Top