换了个小机型使用,拓展性优秀,折腾一下黑果子,显卡暂时没加,卡卡卡的,舒服~~~
存在问题
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-OpenCore
复制代码 4、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 [Zero] = One } If ((USBP == 0x0B)) { PCKG [Zero] = One PCKG [One] = 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]), Zero, 0x07, REV) REV = One CreateField (DerefOf (PCKG [Zero]), 0x40, One, VISI) VISI = Arg0 CreateField (DerefOf (PCKG [Zero]), 0x57, 0x08, GPOS) GPOS = Arg1 CreateField (DerefOf (PCKG [Zero]), 0x4A, 0x04, SHAP) SHAP = One CreateField (DerefOf (PCKG [Zero]), 0x20, 0x10, WID) WID = 0x08 CreateField (DerefOf (PCKG [Zero]), 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 [Zero] = Arg0 PCKG [One] = 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 } }//属于禁用无线部分}
复制代码 |