Jump to content

[Guide] HaC Mini - OSX Mojave on Intel Hades Canyon (NUC8i7HVK/NUC8i7HNK)


230 posts in this topic

Recommended Posts

 

Do any of you still have these NUC models with ALC700 as codec??? I have a new layout to try 22 with this Kext.


 

320672380-94364b6c-efae-4f5f-8fab-df4e7a3e2424.png

320672396-bbab08f4-5c9d-4cc7-a231-2cddc42fe855.png

 

AppleALC.Layout.22.kext.zip

 

 

This is how I found the nodes, obviously everything works on Windows, but on Linux the front jack doesn't work because it isn't mapped correctly. The Windows dump is the key.

Wid=XX  Codec=Native codec nodes  Drv=Codec nodes after Windows Driver intervention

 

 

Screenshot 2024-04-24 alle 20.07.02.png

 

Dump Linux

Dump Linux.png

 

Dump Windows

Dump Windows.png

 

 

Edited by Baio77
  • Like 1
  • 2 weeks later...
On 4/24/2024 at 11:32 PM, Baio77 said:

 

Do any of you still have these NUC models with ALC700 as codec??? I have a new layout to try 22 with this Kext.


 

320672380-94364b6c-efae-4f5f-8fab-df4e7a3e2424.png

320672396-bbab08f4-5c9d-4cc7-a231-2cddc42fe855.png

 

AppleALC.Layout.22.kext.zip 63.68 kB · 1 download

 

 

This is how I found the nodes, obviously everything works on Windows, but on Linux the front jack doesn't work because it isn't mapped correctly. The Windows dump is the key.

Wid=XX  Codec=Native codec nodes  Drv=Codec nodes after Windows Driver intervention

 

 

Screenshot 2024-04-24 alle 20.07.02.png

 

Dump Linux

Dump Linux.png

 

Dump Windows

Dump Windows.png

yes i am using it 

Thanks @Baio77

  • 1 month later...
  • 4 weeks later...
On 6/15/2024 at 5:19 PM, Baio77 said:

Layout22 https://github.com/acidanthera/AppleALC/actions Fix HP OUT sound on wake

image?url=https%3A%2F%2F3392802902-files@Baio77Have you patch Thunderbolt Firmware & system profiler shows TB3 like this ?

  • 1 year later...

Now I've truly solved the problems plaguing this particular NUC. In the end, I followed the OEM ACPI route, applying as few patches as possible. RP05 is now populated from the first bot. Hotplug depends on the Device properties: PCI-Thunderbolt One on the PXSX branch enables hotplug but breaks EGPU. Therefore, for EGPU to work, the property must be removed from the configplist, at the expense of the Hotplug function.

 

Quote

DefinitionBlock ("", "SSDT", 2, "HACK", "TB3", 0x00000003)
{
    External (_GPE.OSUP, MethodObj)    // 1 Arguments
    External (_GPE.TINO, MethodObj)    // 2 Arguments
    External (_SB_.PCI0.RP05, DeviceObj)
    External (_SB_.PCI0.RP05.PXSX, DeviceObj)
    External (_SB_.PCI0.RP05.PXSX.TBDU, DeviceObj)
    External (_SB_.PCI0.RP05.PXSX.TBDU.THC_, DeviceObj)
    External (_SB_.PCI0.RP05.PXSX.TBDU.THC_.RHUB, DeviceObj)
    External (_SB_.PCI0.RP05.PXSX.TBDU.THC_.RHUB.SS01, DeviceObj)
    External (_SB_.PCI0.RP05.PXSX.TBDU.THC_.RHUB.SS02, DeviceObj)
    External (_SB_.PCI0.RP05.PXSX.XRMV, MethodObj)    // 0 Arguments
    External (_SB_.PCI0.RP05.XINI, MethodObj)    // 0 Arguments
    External (_SB_.TBFP, MethodObj)    // 1 Arguments
    External (ADBG, MethodObj)    // 1 Arguments
    External (MMRP, MethodObj)    // 1 Arguments
    External (MMTB, MethodObj)    // 1 Arguments
    External (TBSE, FieldUnitObj)

 These variables already put RP05 in optimal condition for MacOS 
   Scope (\)
    {
        If (_OSI ("Darwin"))
        {
            TWIN = Zero
            SOHP = One
            TNAT = One
        }

    }
    Scope (\_GPE)
    {
        Method (TINI, 2, Serialized)
        {
            If (_OSI ("Darwin"))
            {
                ADBG ("TINI(W)enter")
                ADBG (Concatenate ("Arg0=", ToHexString (Arg0)))
                ADBG (Concatenate ("Arg1=", ToHexString (Arg1)))
                If ((Arg1 == 0x03))
                {
                    ADBG ("Arg1=03")
                    Local0 = MMRP (Arg0)
                    ADBG (Concatenate ("MMRP=", ToHexString (Local0)))
                    OperationRegion (RP_X, SystemMemory, Local0, 0x20)
                    Field (RP_X, DWordAcc, NoLock, Preserve)
                    {
                        REG0,   32, 
                        REG1,   32, 
                        REG2,   32, 
                        REG3,   32, 
                        REG4,   32, 
                        REG5,   32, 
                        REG6,   32, 
                        REG7,   32
                    }

                    Local1 = REG6 /* \_GPE.TINI.REG6 */
                    ADBG (Concatenate ("REG6-Before=", ToHexString (Local1)))
                    REG6 = 0x003F3F00
                    ADBG (Concatenate ("REG6-AfterSet=", ToHexString (REG6)))
                }
                Else
                {
                    ADBG ("Arg1!=03")
                }

                In TINI I do FPWR as it is one of the first methods to generate initialization problems.
                ADBG ("TINI call TBFP(1)")
                \_SB.TBFP (One)
                Sleep (0x64)
                ADBG ("TINI after TBFP")

                Local2 = MMTB (Arg0)
                ADBG (Concatenate ("MMTB=", ToHexString (Local2)))
                ADBG ("Call OSUP")
                Local3 = OSUP (Local2)
                ADBG (Concatenate ("OSUP-RET=", ToHexString (Local3)))
                If ((Arg1 == 0x03))
                {
                    ADBG ("Restore REG6")
                    REG6 = Local1
                    ADBG (Concatenate ("REG6-Restore=", ToHexString (REG6)))
                }

                ADBG ("End-of-TINI(W)")
                Return (Local3)
            }

            Return (\_GPE.TINO (Arg0, Arg1))
        }
    }

    Scope (\_SB.PCI0.RP05)
    {
       TBON taken from OSY, stripped down to the bare minimum, is essential to have RP05 populated.
        Method (TBON, 0, Serialized)
        {
            If (_OSI ("Darwin"))
            {
                ADBG ("RP05.TBON enter")
                ADBG ("WaitCtrl")
                Local3 = MMTB (TBSE)
                ADBG (Concatenate ("MMTB=", ToHexString (Local3)))
                OperationRegion (UPS0, SystemMemory, Local3, 0x04)
                Field (UPS0, DWordAcc, NoLock, Preserve)
                {
                    UPV0,   32
                }

                Local1 = (Timer + 0x02FAF080)
                While (((Timer < Local1) && (UPV0 == 0xFFFFFFFF)))
                {
                    Sleep (0x64)
                }

                ADBG (Concatenate ("UPV0=", ToHexString (UPV0)))
                If ((UPV0 != 0xFFFFFFFF))
                {
                    ADBG ("SeenCtrl")
                    Return (One)
                }

                ADBG ("Failed")
                Return (Zero)
            }

            Return (Zero)
        }

 

       INI calls TBON

        Method (_INI, 0, NotSerialized)  // _INI: Initialize
        {
            \_SB.PCI0.RP05.XINI ()
            If (_OSI ("Darwin"))
            {
                ADBG ("RP05_INI.TBON enter")
                TBON ()
            }
        }

        Scope (PXSX)
        {

 

            RMV OEM PXSX is not stable, I chose to stabilize it this way. 

            Method (_RMV, 0, NotSerialized)  // _RMV: Removal Status
            {
                If (_OSI ("Darwin"))
                {
                    Return (Zero)
                }
                Else
                {
                    Return (\_SB.PCI0.RP05.PXSX.XRMV ())
                }
            }

            Scope (TBDU)
            {
                Here I set Companion XHC THC patch after running rename in config.
                Scope (THC)
                {
                    Name (HS, Package (0x01)
                    {
                        "XHC"
                    })
                    Name (FS, Package (0x01)
                    {
                        "XHC"
                    })
                    Name (LS, Package (0x01)
                    {
                        "XHC"
                    })
                    Method (_PRW, 0, NotSerialized)  // _PRW: Power Resources for Wake
                    {
                        Return (Package (0x02)
                        {
                            0x6D, 
                            0x04
                        })
                    }

                    Method (_PS0, 0, Serialized)  // _PS0: Power State 0
                    {
                        Sleep (0xC8)
                    }

                    Method (_PS3, 0, Serialized)  // _PS3: Power State 3
                    {
                        Sleep (0xC8)
                    }

                    Scope (RHUB)
                    {
                        Scope (SS01)
                        {
                            Name (HS, Package (0x02)
                            {
                                "XHC", 
                                0x0C
                            })
                            Name (FS, Package (0x02)
                            {
                                "XHC", 
                                0x0C
                            })
                            Name (LS, Package (0x02)
                            {
                                "XHC", 
                                0x0C
                            })
                            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                            {
                                If (_OSI ("Darwin"))
                                {
                                    If ((Arg2 == Zero))
                                    {
                                        Return (Buffer (One)
                                        {
                                             0x03                                             // .
                                        })
                                    }

                                    Return (Package (0x0A)
                                    {
                                        "UsbCPortNumber", 
                                        One, 
                                        "UsbPowerSource", 
                                        0x02, 
                                        "kUSBWakePortCurrentLimit", 
                                        0x0BB8, 
                                        "kUSBSleepPortCurrentLimit", 
                                        0x0BB8, 
                                        "UsbCompanionPortPresent", 
                                        One
                                    })
                                }

                                Return (Zero)
                            }
                        }

                        Scope (SS02)
                        {
                            Name (HS, Package (0x02)
                            {
                                "XHC", 
                                0x0D
                            })
                            Name (FS, Package (0x02)
                            {
                                "XHC", 
                                0x0D
                            })
                            Name (LS, Package (0x02)
                            {
                                "XHC", 
                                0x0D
                            })
                            Method (_DSM, 4, NotSerialized)  // _DSM: Device-Specific Method
                            {
                                If (_OSI ("Darwin"))
                                {
                                    If ((Arg2 == Zero))
                                    {
                                        Return (Buffer (One)
                                        {
                                             0x03                                             // .
                                        })
                                    }

                                    Return (Package (0x0A)
                                    {
                                        "UsbCPortNumber", 
                                        0x02, 
                                        "UsbPowerSource", 
                                        0x02, 
                                        "kUSBWakePortCurrentLimit", 
                                        0x0BB8, 
                                        "kUSBSleepPortCurrentLimit", 
                                        0x0BB8, 
                                        "UsbCompanionPortPresent", 
                                        One
                                    })
                                }

                                Return (Zero)
                            }
                        }
                    }
                }
            }
        }
    }
}

 

Screenshot 2026-03-22 alle 11.17.41.png

SSDT-NUC8i7HVK.dsl SSDT-RP05_TB3.dsl

Edited by Baio77
×
×
  • Create New...