OpenCore引导触摸板驱动总结
前言: 此文在阅读@宪武大佬的OC补丁和@penghubingzho的帖子触摸板驱动基础上实践出来的,现结合自己遇到的一些问题与解决方法,分享出来给大家供大家参考,让需要的人少走弯路,在此感谢各位大佬,使用的方法是:屏蔽原有的触摸板,新建一个仿冒设备;1.在Clover引导界面提取DSDT,按F4提取1完成后会在EFI-ACPI-origin文件夹下面生成一堆后缀为AML的文件,将整个origin文件夹复制到桌面,接下来进行反编译操作,下载IASL文件,在桌面点击前往-前往文件夹-输入:/usr/local/bin没有这个文件夹的话,自己创建一个,将IASL文件放进去;https://bbs.pcbeta.com/data/attachment/album/202001/03/134329tfaszfxygt6g5djj.png
在终端输入:cd /Users/你的用户名/Desktop/originiasl -dl DSDT.aml SSDT*.aml 执行以下命令后,在origin文件夹会有DSL后缀格式的DSDT文件;https://bbs.pcbeta.com/data/attachment/album/202001/03/134505k2tv9eeec4vvpq74.png
2..打开DSDT.dsl,搜索以下关键词的查看你的触摸板名称是什么:触摸板:TPDX, ELAN, SYNA, CYPR, TPAD, ETPD触摸屏:
TPLX, ELAN, ETPD, SYNA, ATML
声明:以上触摸板和触摸屏的内容抄袭自@望海之州的博客。3.打开MaciASL软件查找,我的是TPD0,设备位于I2C1总线文件结构如下:https://bbs.pcbeta.com/data/attachment/album/202001/03/134510t3z2txtwxxx71200.png将_SB.PCI0.I2C1的所有内容复制,放入我提供的例程DSL文件里,然后结构如下:https://bbs.pcbeta.com/data/attachment/album/202001/03/134600jd77c0nxdato0dj9.png
确认你的触摸板设备ID,比如我的是SYNA2846,我让_INI这个方法只识别我的ID,屏蔽SRXO,IF只返回One:https://bbs.pcbeta.com/data/attachment/album/202001/03/134606qds7hwowkahw1gbd.png加入操作系统判断补丁,让_STA返回0xf,让MAC识别你的触摸板设备,此补丁只在MAC生效:https://bbs.pcbeta.com/data/attachment/album/202001/03/134638v8486glq0c48lh0c.png
接下修改_CRS方法只返回SBFG,使用GPI0中断模式:https://bbs.pcbeta.com/data/attachment/album/202001/03/134644wwipppopkpvhkbvp.png
接下来进行SSDT排错:https://bbs.pcbeta.com/data/attachment/album/202001/03/134650kqicutzl8i6uisa3.png查看你原有的DSDT搜索报错的名称添加外部引用比如:报错的(_SB.PCI0.I2C1)在DSDT的定义的是设备类型地址External (_SB_.PCI0.I2C1, DeviceObj)报错的(_SB_.PCI0.HIDD)在DSDT定义的是方法External (_SB_.PCI0.HIDD, MethodObj)
添加到声明处,其他报错的解决方法一致,可按以上解决https://bbs.pcbeta.com/data/attachment/album/202001/03/134723rhccmwc7mww44wh7.png只剩下一个警告,可以忽略,接下来屏蔽原有设备,将TPD0改为TPDX,然后添加如下:https://bbs.pcbeta.com/data/attachment/album/202001/03/134729r6yifxlsmep02y52.png可以看到,我原有的DSDT是通过TPTY进行数据调用,将TPTY = 0 就可以屏蔽原有的设备,修改完成后,将DSL编译为AML文件放入OpenCore配置文件里面https://bbs.pcbeta.com/data/attachment/album/202001/03/134735mzp6946eukd6k6d0.png
接下把voodI2C主驱动和卫星驱动voodi2cHID添加进OpenCore配置文件里面,如下:https://bbs.pcbeta.com/data/attachment/album/202001/03/134741qyob0jnj0i33iblj.png
值得一提OC的驱动加载是有顺序要求的,大家要注意一下,接下重启使用IORegistryExplorer查看设备的加载情况,可以看到系统已经识别了我们的仿冒设备TPDX,并且屏蔽的原有的设备TPD0,那为什么驱动不了呢?https://bbs.pcbeta.com/data/attachment/album/202001/03/134821ipaqwd4qy4qibwqi.png
接下要使用,MACLOG这个软件,查看系统的日志,帮助我们找到原因,打开MACLOG这个软件,加载完毕后,在右上角输入voodoo查看KEXT的加载情况和反馈的问题:https://bbs.pcbeta.com/data/attachment/album/202001/03/134827tzbtkayl7by7jk90.png我们可以从日志可以看到,系统出现以下字眼:2019-12-3011:01:52.397956+0200 0xe5 Default 0x0 0 0 kernel: (VoodooI2C)VoodooI2CControllerNub::pci8086,a369 SSCN not implemented in ACPI tables
2019-12-30 11:01:52.398296+0200 0xe5 Default 0x0 0 0 kernel: (VoodooI2C)VoodooI2CControllerNub::pci8086,a369 FMCN not implemented in ACPI tables
2019-12-30 11:01:52.398594+0200 0xe5 Default 0x0 0 0 kernel: (VoodooI2C)VoodooI2CControllerDriver::pci8086,a369 Warning: Error getting bus config,using defaults where necessary意思是,缺少总线速度等相关信息,因为我的DSDT本地没有SSCN+FMCN等相关的信息,需要手动添加,解决方法是在我们刚刚的仿冒的设备里面添加进去:https://bbs.pcbeta.com/data/attachment/album/202001/03/134834wfajj45m5gp03mfh.png
重启后,我们的触摸板就可以正常使用了;https://bbs.pcbeta.com/data/attachment/album/202001/03/134904b8u8xg1yuub1eg0x.pnghttps://bbs.pcbeta.com/data/attachment/album/202001/03/134911kv8dqdj5kwyvb5jp.pnghttps://bbs.pcbeta.com/data/attachment/album/202001/03/134917lwut4zoqotlaqwuo.png3.答疑:1.楼主,我看了很多教程,使用GPI0中断模式不是要计算GPI0的16进制引脚吗?为什么你的教程不用?
答:因为楼主的GPI0引脚在引导时,是bios自动填充的,因此不需要计算引脚。
2.那我的和你的不一样我要如何计算引脚呢?答:楼主以自己的APIC16进制引脚举个例子,大家参考一下:我使用IORegistryExplorer查看IOInterruptSpecifiers的值是<53 00 00 00 0300 00 00>APIC十六进制引脚数GPP_C11_IRQ 0x53
GPI0十进制引脚数GPP_C11 62 CNL_GPP(0,51,74,64), / * GPP_C * /
计算公式:计算如下:62-51=11+64=75转换为16进制=4B GPI0十六进制引脚数
而系统返回的正是0x4B,不知道正不正确,请各位大佬纠正,详细的教程可以去亚历山大的github查看GPI0固定指南,这里附上链接:
https://github.com/alexandred/VoodooI2C/blob/master/Documentation/GPIO%20Pinning.md总结:
以上教程实现的方法,是学习@宪武大佬的OC补丁和@penghubingzho的博客再结合自己的实际操作,总结得来,如有侵权,请联系删除,再次感谢各位大佬提供的教程,尾部提供本文使用的软件和例程下载,供大家参考,本文有不严谨之处,请各位大佬指出,欢迎大家加入群聊:857996987共同学习,谢谢!!
占楼上传附件 10代cpu的小米 也驱动不了看看能不能解决 这个教程总结的不错。 不错,支持一下技术贴,感谢分享 看得一头雾水主要是不懂编程 楼主终端代码好像是有点问题 应该是 ./iasl -dl DSDT.aml SSDT*.aml 我要试试呢 MyMarmot 发表于 2020-1-3 14:27
去帮一帮小新pro 的人去吧,他们的触控板这么久了都没驱动
♂小新pro 13难搞触摸板
欢迎加入小新pro 黑苹果,群聊号码:946132482 写的不错 支持一下 zhaobo0222 发表于 2020-1-3 17:24 https://www.pcbeta.com/static/image/common/back.gif
楼主终端代码好像是有点问题 应该是 ./iasl -dl DSDT.aml SSDT*.aml
刚试了,不用加./,没问题的,谢谢指出 技术贴需要支持一个! 谢谢共享正需要 {:5_264:}感谢楼主提供的教程,我的OC下通过查明,精减了一个DSM方法也不能驱动,加上去终于驱动了。 965987400abc 发表于 2020-1-3 14:15 https://www.pcbeta.com/static/image/common/back.gif
占楼上传附件
不错不错 看一下怎么玩 965987400abc 发表于 2020-1-3 21:14 https://www.pcbeta.com/static/image/common/back.gif
刚试了,不用加./,没问题的,谢谢指出
还有请教个问题,我的触摸板id是DELL08BC吗?我安装楼主的方法修改了,还是在触摸板界面空白的
965987400abc 发表于 2020-1-3 21:14 https://www.pcbeta.com/static/image/common/back.gif
刚试了,不用加./,没问题的,谢谢指出
我的bios设备,是不是直接修改\_SB.PCI0.I2C0.TPD0
965987400abc 发表于 2020-1-3 14:15 https://www.pcbeta.com/static/image/common/back.gif
占楼上传附件
还是不行 看下能不能修好