tuou 发表于 2023-5-14 13:31

[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      }    }//属于禁用无线部分}

web740422 发表于 2023-5-14 13:32

这机器不是蛮多的么

highlyfly 发表于 2023-5-14 13:32

可以请大佬抽空帮个忙么

https://bbs.pcbeta.com/forum.php ... 467%26typeid%3D1467

wyl0205 发表于 2023-5-14 14:47

我喜欢黑妹,可以约起来吗

spower 发表于 2023-5-14 16:10

:lol20年水粉

huafu 发表于 2023-5-14 17:17

不错,支持下楼主

ezhangjianwei 发表于 2023-5-14 18:22

我喜欢黑妹,可以约起来吗

suose 发表于 2023-5-14 20:25

:lol20年水粉

lxc997778 发表于 2023-5-14 22:16

我是来抢楼的

taoelr 发表于 2023-5-14 23:33

我是来抢楼的
页: [1] 2
查看完整版本: [macOS 12.3.1]英特尔intel nuc9幽灵峡谷双网卡dnf红眼NUC9i9QNB/Intel NUC9i9QNX引导