- 积分
- 230
- 最后登录
- 2023-4-13
- 精华
- 0
- 阅读权限
- 30
- 主题
- 1
- UID
- 4345656
- 帖子
- 500
- PB币
- 1098
- 威望
- 5
- 贡献
- 0
- 技术
- 0
- 活跃
- 897
- UID
- 4345656
- 帖子
- 500
- PB币
- 1098
- 贡献
- 0
- 技术
- 0
- 活跃
- 897
|
发表于 2016-8-9 11:52:46
IP属地上海
|显示全部楼层
本帖最后由 xiaoxiami003 于 2016-9-1 18:07 编辑
六、 提取原始DSDT&SSDT及编译错误 1. 提取原始DSDT&SSDT
在Windows下使用AIDA64 Business提取DSDT及所有SSDT,得到DSDT.aml,SSDT.aml,SSDT-1.aml,SSDT-2.aml,SSDT-3.aml;
- aida64 business v5.30.3500.rar
- http://pan.baidu.com/s/1bTSCmM 提取码:6s1j
复制代码 2. 反编译原始DSDT&SSDT
在Mac下使用iasl对DSDT及所有SSDT进行反编译,得到DSDT.dsl,SSDT.dsl,SSDT-1.dsl,SSDT-2.dsl,SSDT-3.dsl,参阅:[分享] (2015.1.13 更新)联合DSDT和SSDT进行反编译——减少DSDT和SSDT错误的尝试;
将iasl放入/usr/local/bin中
提取到的aml文件放入桌面新建的acpi中
cd Desktop/acpi
iasl -da -dl *.aml
3. 修复错误
(1). 在Mac下打开MaciASL,在偏好设置-选择编译器版本中,选择ACPI 5.0;
(2). 在MaciASL中打开DSDT.dsl,点击编译按钮,返回3个错误;
(3). 分别定位到错误
删除这一大堆Zero即可修复此错误;
删除Arg0这一行即可修复此错误;
七、 对DSDT打补丁
1. DTGP函数
- Method (DTGP, 5, NotSerialized)
- {
- If (LEqual (Arg0, Buffer (0x10)
- {
- /* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44,
- /* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B
- }))
- {
- If (LEqual (Arg1, One))
- {
- If (LEqual (Arg2, Zero))
- {
- Store (Buffer (One)
- {
- 0x03
- }, Arg4)
- Return (One)
- }
- If (LEqual (Arg2, One))
- {
- Return (One)
- }
- }
- }
- Store (Buffer (One)
- {
- 0x00
- }, Arg4)
- Return (Zero)
- }
复制代码
2. 仿冒LPC的ID,以加载AppleLPC
Windows设备管理中查看得知LPC硬件ID为0x80868c50,这个ID并不在AppleLPC的原生支持ID的列表内
选择尽量接近的ID,决定仿冒成0x80868c4b
在DSDT中搜索 Device (LPCB) 或者 0x001F0000
加入以下代码
- Method (_DSM, 4, NotSerialized)
- {
- Store (Package (0x06)
- {
- "device-id",
- Buffer (0x04)
- {
- 0x4b, 0x8c, 0x00, 0x00
- },
- "name",
- Buffer (0x0D)
- {
- "pci8086,8c4b"
- },
- "compatible",
- Buffer (0x0D)
- {
- "pci8086,8c4b"
- }
- }, Local0)
- DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
- Return (Local0)
- }
复制代码
3. 修复BIOS重置问题--RTC
在DSDT中搜索 Device (RTC) 或者 PNP0B00
- Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings
- {
- IO (Decode16,
- 0x0070, // Range Minimum
- 0x0070, // Range Maximum
- 0x01, // Alignment
- 0x08, // Length
- )
- IRQNoFlags ()
- {8}
- })
复制代码 把0x08改成0x02。
4. HPET Fix
在DSDT中搜索 Device (HPET) 或者 PNP0103
加入以下代码
- IRQNoFlags ()
- {0}
- IRQNoFlags ()
- {8}
复制代码 修改结果为
- Name (BUF0, ResourceTemplate ()
- {
- IRQNoFlags ()
- {0}
- IRQNoFlags ()
- {8}
- Memory32Fixed (ReadWrite,
- 0xFED00000, // Address Base
- 0x00000400, // Address Length
- _Y0F)
- })
复制代码
八、 通过修改DSDT修复USB问题
参考阅读:[教程] 【翻译】修复 OS X El Capitan的USB端口
[分享] 从技术角度谈谈10.11的USB驱动机制,兼论10.11 USB安装盘的花屏禁行问题
这里采用的方法来自 [分享] 10.11 USB问题之下篇,一步一步教你解决USB问题 文中 Part3:DSDT中的USB端口信息的修改;
1. 确认有效可用的USB端口
清点外部USB接口数量,机箱后:usb2.0接口4个,usb3.0接口2个。机箱前:usb2.0接口3个,usb3.0接口2个;
合计usb2.0接口7个,usb3.0接口4个。7+4x2=15,也就是需要15个USB端口,刚好没有超过15个端口的数量限制;
通过插拔USB设备的方式,在AIDA64中查看外部接口对应的端口号--->
USB2.0:01、02、03、04、05、06、07、09、10、11、12
USB3.0:16、17、20、21
2. 去除DSDT中无效的USB端口,保留需要的15个端口
未修改的DSDT XHC中定义了15个HS(USB2.0)端口,6个SSP(USB3.0)端口,超过15个端口限制
拜读上方贴出的大神的帖子得知--->
Device (HS01)
{
Name (_ADR, One) // _ADR: Address
Name (_STA, 0x0F) // _STA: Status
Method (_UPC, 0, Serialized) // _UPC: USB Port Capabilities
{
Name (UPCP, Package (0x04)
{
0xFF, //0xFF表示可连接,Zero表示不可连接
0x03, //Zero代表USB2.0 typeA型母口,0x02代表type miniAB USB2.0,0x03代表USB3.0 typeA型母口,0xFF代表特殊接口
Zero,
Zero
})
Name (PLDP, Package (0x01)
{
Buffer (0x10)
{
/* 0000 */ 0x01, 0xC6, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 0008 */ 0x69, 0x0C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 //0表示不可见,1表示可见
}
})
因此对于不需要的端口,将其修改为 不可连接&不可见 如端口08 --> (Name (_ADR, 0x08)),作如下修改--->
端口13 --> 0x0D
端口14 --> (_ADR, 0x0E)
端口15 --> (_ADR, 0x0F)
端口18 --> (_ADR, 0x12)
端口19 --> (_ADR, 0x13)
九、 SSDT、变频 与 X86PlatformPlugin
LPC电源管理加载完毕后,需要为自己的CPU生成一份合适的SSDT用于加载X86PlatformPlugin 以及让变频正常工作。
借助 Pike R. Alpha 的 ssdtPRGen.sh 脚本来生成一份适合我们当前的CPU以及当前SMBios的SSDT。https://github.com/Piker-Alpha/ssdtPRGen.sh
打开终端
- cd Desktop/
- curl -o ssdtPRGen.sh https://raw.githubusercontent.com/Piker-Alpha/ssdtPRGen.sh/Beta/ssdtPRGen.sh
- chmod +x ssdtPRGen.sh
- ./ssdtPRGen.sh
复制代码 分行解释下:
第一行:进入 Desktop 目录,这样Pike的脚本就下载到桌面上了
第二行:从 Pike 的 Github 上下载最新版本的 ssdtPRGen.sh
第三行:修改脚本的权限,防止因权限问题而无法执行。
第四行:运行脚本
运行后脚本会自动生成 SSDT.aml,可以在 /Users/xiaoxiami/Library/ssdtPRGen/ 下找到生成好的 SSDT.aml;
用此SSDT.aml替换之前提取的Tabel ID为 CpuPm的SSDT-1.aml
加上Table ID为Cpu0Ist的SSDT以及提取的其他SSDT一起放入/EFI/CLOVER/ACPI/patched/;
为了加载SSDT,需要设置 --->
至此,SSDT部分就完事了,X86PlatformPlugin 加载成功,变频工作也完成了
十、 细节完善部分
1. CPU识别
E3-1231 v3 默认会被识别为i7处理器;
在Clover Configurator的CPU模块 Type中填入0x0501,即可识别 --->
2. 内存识别
由于开启了XMPDetection=Yes内存侦测之后,关于本机 中内存频率识别错误,因此XMPDetection=No选择关闭内存侦测,手动填入内存参数 --->
3. 开启TRIM支持
方法一:终端中敲入
方法二:通过Clover给kext打补丁,在KextsToPatch中加入以下代码
- <dict>
- <key>Comment</key>
- <string>Enable Trim</string>
- <key>Disabled</key>
- <false/>
- <key>Find</key>
- <data>
- QVBQTEUgU1NEAA==
- </data>
- <key>Name</key>
- <string>IOAHCIBlockStorage</string>
- <key>Replace</key>
- <data>
- AAAAAAAAAAAAAA==
- </data>
- </dict>
复制代码
4. 橙色硬盘图标问题
在BIOS中开启Hot-plug后,会出现硬盘图标变为橙色的问题,在KextsToPatch中加入以下代码
- <dict>
- <key>Comment</key>
- <string>External icons patch</string>
- <key>Disabled</key>
- <false/>
- <key>Find</key>
- <data>
- RXh0ZXJuYWw=
- </data>
- <key>Name</key>
- <string>AppleAHCIPort</string>
- <key>Replace</key>
- <data>
- SW50ZXJuYWw=
- </data>
- </dict>
复制代码
5. 仿冒Apple usb鼠标
在硬件信息中找到usb鼠标的ID
产品ID: 0x0701 厂商ID:0x25a7 转换为十进制 --->
0x0701 --> 1793 0x25a7 --> 9639
将AppleUSBHIDMouse.kext拷贝出来
搜索product,将搜索到的数值修改为上面对应的十进制数。将修改好的驱动改名放入S/L/E中。
|
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
|