ACPI定制USB端口
描述
- 本方法通过修改 ACPI 文件实现USB端口的定制。
- 本方法操作过程需要 drop 某个 ACPI 文件。通常情况下,OpenCore 不建议 这样做,定制 USB 端口一般使用 Hackintool.app 工具。
- 本方法献给爱好者们。
适用范围
- XHC 以及它的
_UPC存在于单独的 ACPI 文件中 - 此方法不适用于
_UPC存在于 DSDT 中的设备 (e.g. 华硕)
_UPC 规范
_UPC, Package ()
{
xxxx,
yyyy,
0x00,
0x00
}
解释
xxxx0x00代表这个端口不存在- 其他值 (通常为
0x0F) 代表这个端口存在
yyyyyyyy处定义的是端口的类型, 参考下表|
yyyy| 端口类型 | | :------: | ----------------------------- | |0x00| USB TypeA| |0x01| USBMini-AB| |0x02| USB 智能卡 | |0x03| USB 3 标准 TypeA| |0x04| USB 3 标准 TypeB| |0x05| USB 3Micro-B| |0x06| USB 3Micro-AB| |0x07| USB 3Power-B| |0x08| USB TypeC(只有 USB 2) | |0x09| USB TypeC(带有转向器) | |0x0A| USB TypeC(不带转向器) | |0xFF| 内置 |如果 USB-C 正反两面插入在 Hackintool 都显示为同一个端口就说明这个端口有转向器
反之,如果正反两面占用了两个端口就说明没有转向器
USB定制过程
清除其他定制方法的补丁、驱动等。
drop ACPI文件
确认 XHC 并包括
_UPC的 ACPI 文件如 dell5480 的 SSDT-2-xh_OEMBD.aml
如 小新 PRO13(i5)的 SSDT-8-CB-01.aml (无独显机器是 SSDT-6-CB-01.aml )
config\ACPI\Delete\以TableLength(十进制)和TableSignature方式 drop ACPI 文件。如:dell5480:
TableLength=2001,TableSignature=53534454(SSDT)小新PRO13(i5):
TableLength=12565,TableSignature=53534454(SSDT)TableLength可以从该aml文件的表头处
Length中得到。
定制 SSDT 补丁文件
将需要 drop 的原始 ACPI 文件拖到桌面,建议:
- 另存为
.asl / .dsl格式 - 修改文件名。如: SSDT-xh_OEMBD_XHC.dsl, SSDT-CB-01_XHC.dsl
- 修改文件内的
OEM Table ID为自己喜欢的名字。 - 排除错误。
- 另存为
SSDT 文件中所有端口的
_UPC最前端添加以下代码:Method (_UPC, 0, NotSerialized) { If (_OSI ("Darwin")) { Return (Package () { xxxx, yyyy, 0x00, 0x00 }) } /* 以下是原内容 */ ... }根据
_UPC规范定制 USB 端口。即,修正 xxxx、yyyy 的值。- 如果端口不存在
xxxx=0x00yyyy=0x00
- 如果端口存在
xxxx=0xFFyyyy
参考上文的表格
- 如果端口不存在
排错、编译、补丁文件放至
ACPI、添加补丁列表。
参考示例
- SSDT-xh_OEMBD_XHC
- SSDT-CB-01_XHC