lovest.fdh 发表于 2022-5-10 01:01

[macOS 12.3.1]英特尔intel nuc9幽灵峡谷双网卡dnf红眼NUC9i9QNB/Intel NUC9i9QNX引导


换了个小机型使用,拓展性优秀,折腾一下黑果子,显卡暂时没加,卡卡卡的,舒服~~~

存在问题

1、雷电基本上是废的,雷电设备没测试过
1.1、usb正常,雷电口dp信号输出不正常,主要表现于
冷开机无显示,并且猜测应该是黑屏启动期间卡代码
解决方法,用唯一的hdmi接口!!!不会搞。。?
暂时也用不上。当然开机后两个雷电的dp信号正常输出

2、ax200无线暂时用不上,mac上ssdt禁止了设备

3、内置音频没测试,用的usb小蜗牛音响


使用说明

1、oc版本使用最新的0.8,系统版本看标题

2、几个gpu参数,注入在config设备信息和引导参数,针对4k屏

3、bios设置参照https://github.com/bemble/Hackintosh-NUC9I7QNX-OpenCore4、usb为ssdt定制方法,大佬教程https://blog.gzxiaobai.cn/5、双网卡219扔驱动,另一个210注入设备,添加空壳驱动

6、ssdt相关修补如下解释:





DefinitionBlock ("", "SSDT", 2, "XIAOLU", "HOTPATCH", 0x00000000)
{
    External (_SB_.PCI0, DeviceObj)
    External (_SB_.PCI0.LPCB, DeviceObj)
    External (_SB_.PCI0.RP01, DeviceObj)
    External (_SB_.PCI0.RP05, DeviceObj)
    External (_SB_.PCI0.RP05.PXSX, DeviceObj)
    External (_SB_.PCI0.SBUS, DeviceObj)
    External (_SB_.PCI0.XHC_.RHUB, DeviceObj)
    External (_SB_.PCI0.XHC_.RHUB.HS10, DeviceObj)
    External (_SB_.PCI0.XHC_.RHUB.SS05, DeviceObj)
    External (_SB_.PCI0.XHC_.RHUB.XUPC, MethodObj)    // 1 Arguments
    External (_SB_.PR00, ProcessorObj)
    External (STAS, IntObj)

    Scope (_SB)
    {
      If (_OSI ("Darwin"))
      {
            STAS = One
      }//启用rtc时钟

      Device (EC)
      {
            Name (_HID, "ACID0001")// _HID: Hardware ID
            Method (_STA, 0, NotSerialized)// _STA: Status
            {
                If (_OSI ("Darwin"))
                {
                  Return (0x0F)
                }
                Else
                {
                  Return (Zero)
                }
            }
      } //仿冒一个ec设备,据说解决卡代码问题
    }

    If (CondRefOf (\_SB.PR00))
    {
      If ((ObjectType (\_SB.PR00) == 0x0C))
      {
            Scope (\_SB.PR00)
            {
                Method (_DSM, 4, NotSerialized)// _DSM: Device-Specific Method
                {
                  Return (PMPM (Arg0, Arg1, Arg2, Arg3))
                }
            }
      }
    } //变频加载x86

    Scope (_SB.PCI0)
    {
      Scope (LPCB)
      {
            Device (PMCR)
            {
                Name (_HID, EisaId ("APP9876"))// _HID: Hardware ID
                Method (_STA, 0, NotSerialized)// _STA: Status
                {
                  If (_OSI ("Darwin"))
                  {
                        Return (0x0B)
                  }
                  Else
                  {
                        Return (Zero)
                  }
                }

                Name (_CRS, ResourceTemplate ()// _CRS: Current Resource Settings
                {
                  Memory32Fixed (ReadWrite,
                        0xFE000000,         // Address Base
                        0x00010000,         // Address Length
                        )
                })
            } //添加pmcr以支持原生nvram
      }

      Device (MCHC)
      {
            Name (_ADR, Zero)// _ADR: Address
            Method (_STA, 0, NotSerialized)// _STA: Status
            {
                If (_OSI ("Darwin"))
                {
                  Return (0x0F)
                }
                Else
                {
                  Return (Zero)
                }
            }//跟smbus一起的,不知干嘛用,白果也有
      }

      Scope (SBUS)
      {
            Device (BUS0)
            {
                Name (_CID, "smbus")// _CID: Compatible ID
                Name (_ADR, Zero)// _ADR: Address
                Device (DVL0)
                {
                  Name (_ADR, 0x57)// _ADR: Address
                  Name (_CID, "diagsvault")// _CID: Compatible ID
                  Method (_DSM, 4, NotSerialized)// _DSM: Device-Specific Method
                  {
                        If (!Arg2)
                        {
                            Return (Buffer (One)
                            {
                                 0x57                                             // W
                            })
                        }

                        Return (Package (0x02)
                        {
                            "address",
                            0x57
                        })
                  }
                }//smbus控制器

                Method (_STA, 0, NotSerialized)// _STA: Status
                {
                  If (_OSI ("Darwin"))
                  {
                        Return (0x0F)
                  }
                  Else
                  {
                        Return (Zero)
                  }
                }
            }
      }

      Scope (RP01)
      {
            OperationRegion (DE01, PCI_Config, 0x50, One)
            Field (DE01, AnyAcc, NoLock, Preserve)
            {
                  ,   4,
                DDDD,   1
            }

            Method (_STA, 0, Serialized)// _STA: Status
            {
                If (_OSI ("Darwin"))
                {
                  Return (Zero)
                }
                Else
                {
                  Return (0x0F)
                }
            }
      }//禁用无线ax200,本人不用
    }

    Scope (_SB.PCI0.XHC.RHUB)
    {
      Name (USBP, Zero)
      Method (GUPC, 1, Serialized)
      {
            If (_OSI ("Darwin"))
            {
                Name (PCKG, Package (0x04)
                {
                  Zero,
                  0x03,
                  Zero,
                  Zero
                })
                USBP += One
                If ((((USBP >= One) && (USBP <= 0x04)) || (
                  (USBP >= 0x0E) && (USBP <= 0x11))))
                {
                  PCKG = One
                }

                If ((USBP == 0x0B))
                {
                  PCKG = One
                  PCKG = 0xFF
                }

                Return (PCKG) /* \_SB_.PCI0.XHC_.RHUB.GUPC.PCKG */
            }
            Else
            {
                Return (XUPC (Arg0))
            }
      }//通过ssdt定制usb,好处是对于kext之流,安装引导盘usb也是正确驱动端口。
    }

    Scope (\_SB.PCI0.XHC.RHUB)
    {
      Scope (HS10)
      {
            Name (_UPC, Package (0x04)// _UPC: USB Port Capabilities
            {
                One,
                0x09,
                Zero,
                Zero
            })
            Name (_PLD, Package (0x01)// _PLD: Physical Location of Device
            {
                ToPLD (
                  PLD_Revision         = 0x1,
                  PLD_IgnoreColor      = 0x1,
                  PLD_Red                = 0x0,
                  PLD_Green            = 0x0,
                  PLD_Blue               = 0x0,
                  PLD_Width            = 0x0,
                  PLD_Height             = 0x0,
                  PLD_UserVisible      = 0x1,
                  PLD_Dock               = 0x0,
                  PLD_Lid                = 0x0,
                  PLD_Panel            = "UNKNOWN",
                  PLD_VerticalPosition   = "UPPER",
                  PLD_HorizontalPosition = "LEFT",
                  PLD_Shape            = "UNKNOWN",
                  PLD_GroupOrientation   = 0x0,
                  PLD_GroupToken         = 0x0,
                  PLD_GroupPosition      = 0x0,
                  PLD_Bay                = 0x0,
                  PLD_Ejectable          = 0x0,
                  PLD_EjectRequired      = 0x0,
                  PLD_CabinetNumber      = 0x0,
                  PLD_CardCageNumber   = 0x0,
                  PLD_Reference          = 0x0,
                  PLD_Rotation         = 0x0,
                  PLD_Order            = 0x0,
                  PLD_VerticalOffset   = 0x0,
                  PLD_HorizontalOffset   = 0x0)

            })
      }//侧边c口usb没调用upc方法,单独处理

      Scope (SS05)
      {
            Name (_UPC, Package (0x04)// _UPC: USB Port Capabilities
            {
                One,
                0x09,
                Zero,
                Zero
            })
            Name (_PLD, Package (0x01)// _PLD: Physical Location of Device
            {
                ToPLD (
                  PLD_Revision         = 0x1,
                  PLD_IgnoreColor      = 0x1,
                  PLD_Red                = 0x0,
                  PLD_Green            = 0x0,
                  PLD_Blue               = 0x0,
                  PLD_Width            = 0x0,
                  PLD_Height             = 0x0,
                  PLD_UserVisible      = 0x1,
                  PLD_Dock               = 0x0,
                  PLD_Lid                = 0x0,
                  PLD_Panel            = "UNKNOWN",
                  PLD_VerticalPosition   = "UPPER",
                  PLD_HorizontalPosition = "LEFT",
                  PLD_Shape            = "UNKNOWN",
                  PLD_GroupOrientation   = 0x0,
                  PLD_GroupToken         = 0x0,
                  PLD_GroupPosition      = 0x0,
                  PLD_Bay                = 0x0,
                  PLD_Ejectable          = 0x0,
                  PLD_EjectRequired      = 0x0,
                  PLD_CabinetNumber      = 0x0,
                  PLD_CardCageNumber   = 0x0,
                  PLD_Reference          = 0x0,
                  PLD_Rotation         = 0x0,
                  PLD_Order            = 0x0,
                  PLD_VerticalOffset   = 0x0,
                  PLD_HorizontalOffset   = 0x0)

            })
      }//同上,此为3.0端口
    }

    If (_OSI ("Darwin"))
    {
      Scope (\_SB.PCI0.RP05)
      {
            Scope (PXSX)
            {
                Name (_STA, Zero)// _STA: Status
            }

            Device (UPSB)
            {
                Name (_ADR, Zero)// _ADR: Address
                OperationRegion (A1E0, PCI_Config, Zero, 0x40)
                Field (A1E0, ByteAcc, NoLock, Preserve)
                {
                  AVND,   32,
                  BMIE,   3,
                  Offset (0x18),
                  PRIB,   8,
                  SECB,   8,
                  SUBB,   8,
                  Offset (0x1E),
                        ,   13,
                  MABT,   1
                }

                Method (_PRW, 0, NotSerialized)// _PRW: Power Resources for Wake
                {
                  Return (Package (0x02)
                  {
                        0x69,
                        0x03
                  })
                }

                Method (_BBN, 0, NotSerialized)// _BBN: BIOS Bus Number
                {
                  Return (SECB) /* \_SB_.PCI0.RP05.UPSB.SECB */
                }

                Method (_STA, 0, NotSerialized)// _STA: Status
                {
                  Return (0x0F)
                }

                Method (_RMV, 0, NotSerialized)// _RMV: Removal Status
                {
                  Return (Zero)
                }

                Method (_DSM, 4, NotSerialized)// _DSM: Device-Specific Method
                {
                  Local0 = Package (0x06)
                        {
                            "AAPL,slot-name",
                            Buffer (0x0C)
                            {
                              "Thunderbolt"
                            },

                            "built-in",
                            Buffer (One)
                            {
                                 0x00                                             // .
                            },

                            "PCI-Thunderbolt",
                            One
                        }
                  DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                  Return (Local0)
                }

                Device (TBDC)
                {
                  Name (_ADR, Zero)// _ADR: Address
                  Method (_RMV, 0, NotSerialized)// _RMV: Removal Status
                  {
                        Return (Zero)
                  }

                  Device (TBCC)
                  {
                        Name (_ADR, Zero)// _ADR: Address
                        Method (_RMV, 0, NotSerialized)// _RMV: Removal Status
                        {
                            Return (Zero)
                        }
                  }
                }

                Name (TURP, 0x05)
                Device (TBDU)
                {
                  Name (_ADR, 0x00020000)// _ADR: Address
                  Device (XHC1)
                  {
                        Name (_ADR, Zero)// _ADR: Address
                        Device (RHUB)
                        {
                            Name (_ADR, Zero)// _ADR: Address
                            Method (TPLD, 2, Serialized)
                            {
                              Name (PCKG, Package (0x01)
                              {
                                    Buffer (0x10){}
                              })
                              CreateField (DerefOf (PCKG ), Zero, 0x07, REV)
                              REV = One
                              CreateField (DerefOf (PCKG ), 0x40, One, VISI)
                              VISI = Arg0
                              CreateField (DerefOf (PCKG ), 0x57, 0x08, GPOS)
                              GPOS = Arg1
                              CreateField (DerefOf (PCKG ), 0x4A, 0x04, SHAP)
                              SHAP = One
                              CreateField (DerefOf (PCKG ), 0x20, 0x10, WID)
                              WID = 0x08
                              CreateField (DerefOf (PCKG ), 0x30, 0x10, HGT)
                              HGT = 0x03
                              Return (PCKG) /* \_SB_.PCI0.RP05.UPSB.TBDU.XHC1.RHUB.TPLD.PCKG */
                            }

                            Method (TUPC, 2, Serialized)
                            {
                              Name (PCKG, Package (0x04)
                              {
                                    One,
                                    Zero,
                                    Zero,
                                    Zero
                              })
                              PCKG = Arg0
                              PCKG = Arg1
                              Return (PCKG) /* \_SB_.PCI0.RP05.UPSB.TBDU.XHC1.RHUB.TUPC.PCKG */
                            }

                            Device (HS01)
                            {
                              Name (_ADR, One)// _ADR: Address
                              Method (_UPC, 0, NotSerialized)// _UPC: USB Port Capabilities
                              {
                                    Return (TUPC (Zero, 0xFF))
                              }
                            }

                            Device (HS02)
                            {
                              Name (_ADR, 0x02)// _ADR: Address
                              Method (_UPC, 0, NotSerialized)// _UPC: USB Port Capabilities
                              {
                                    Return (TUPC (Zero, 0xFF))
                              }
                            }

                            Device (SS01)
                            {
                              Name (_ADR, 0x03)// _ADR: Address
                              Method (_UPC, 0, NotSerialized)// _UPC: USB Port Capabilities
                              {
                                    Return (TUPC (One, 0x09))
                              }

                              Method (_PLD, 0, NotSerialized)// _PLD: Physical Location of Device
                              {
                                    Return (TPLD (One, 0x05))
                              }
                            }

                            Device (SS02)
                            {
                              Name (_ADR, 0x04)// _ADR: Address
                              Method (_UPC, 0, NotSerialized)// _UPC: USB Port Capabilities
                              {
                                    Return (TUPC (One, 0x09))
                              }

                              Method (_PLD, 0, NotSerialized)// _PLD: Physical Location of Device
                              {
                                    Return (TPLD (One, 0x06))
                              }
                            }
                        }
                  }
                }
            }
      }
    }//上面一堆是原系统的。雷电相关,重写改个名字,雷电的usb名字路径才正常,愿因可能时原生的判定对os不起效

    Method (DTGP, 5, NotSerialized)
    {
      If ((Arg0 == ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b") /* Unknown UUID */))
      {
            If ((Arg1 == One))
            {
                If ((Arg2 == Zero))
                {
                  Arg4 = Buffer (One)
                        {
                           0x03                                             // .
                        }
                  Return (One)
                }

                If ((Arg2 == One))
                {
                  Return (One)
                }
            }
      }//以上调用的函数

      Arg4 = Buffer (One)
            {
               0x00                                             // .
            }
      Return (Zero)
    }

    Method (PMPM, 4, NotSerialized)
    {
      If ((Arg2 == Zero))
      {
            Return (Buffer (One)
            {
               0x03                                             // .
            })
      }

      Return (Package (0x02)
      {
            "plugin-type",
            One
      })
    }//同上

    Scope (\)
    {
      If (_OSI ("Darwin"))
      {
            \_SB.PCI0.RP01.DDDD = One
      }
    }//属于禁用无线部分
}

keyabing520 发表于 2022-6-15 23:39

这机器不是蛮多的么

huhongyuan8 发表于 2023-5-14 12:46

可以请大佬抽空帮个忙么

https://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1967838&extra=page%3D1%26filter%3Dtypeid%26typeid%3D1467%26typeid%3D1467

langshibo 发表于 2023-5-16 06:42

我有这机器,9980hk。目前完美使用。

etyneqk720 发表于 2023-5-17 09:41

我也是这个机器,我的是nuc9 pro 石英峡谷,之前安装黑苹果我记得雷电是正常可以输出显示器的,我用了一根USBC转DP。不过目前已经改装成 all in boom了

电子中微子 发表于 2023-6-1 10:34

etyneqk720 发表于 2023-5-17 09:41 https://bbs.pcbeta.com/static/image/common/back.gif
我也是这个机器,我的是nuc9 pro 石英峡谷,之前安装黑苹果我记得雷电是正常可以输出显示器的,我用了一根U ...

哈哈哈哈,老哥这改装风格绝了!

etyneqk720 发表于 2023-6-2 09:00

电子中微子 发表于 2023-6-1 10:34 https://bbs.pcbeta.com/static/image/common/back.gif
哈哈哈哈,老哥这改装风格绝了!

就是折腾,哈哈哈

wjj384755750 发表于 2023-6-20 19:50

langshibo 发表于 2023-5-16 06:42 https://bbs.pcbeta.com/static/image/common/back.gif
我有这机器,9980hk。目前完美使用。

兄弟,发一个efi可行.   
saber_ll@foxmail.com

sgxinyuan 发表于 2023-6-29 23:07

NUC11目前安装成功。就是集显和声卡不能驱动。显存14M,雷电不能驱动。
页: [1]
查看完整版本: [macOS 12.3.1]英特尔intel nuc9幽灵峡谷双网卡dnf红眼NUC9i9QNB/Intel NUC9i9QNX引导