wayson0725 发表于 2023-10-15 19:08

AsusSMC的简单教程

更新时间2021.11.18
前言:
作为华硕笔记本用户,从玩黑苹果开始就对键盘快捷键以及键盘背光心有遗憾,虽然那时候玩的时候还是Clover,但是AsusSmc.kext却已经存在。但是纵观整个论坛,我几乎没有找到关于AsusSMC的任何食用教程,但是在各教程的kext中又有对AsusSMC对引用,却一直不知道怎么用。现在转到了OC,在研究过SSDT后再去看看AsusSMC,发现其实食用并不难。于是便有了今天这篇文章!


要求:
主要是华硕笔记本用户,对黑苹果有一定自己的研究(伸手党跟白嫖党),
熟悉OC的特性并会对Config进行一定对修改(照搬),
对DSDT与SSDT有一定对了解,最好是会一点语法基础,并能进行修改对,能看懂编译aml的错误代码并修改的人群(CTRL+C,CTRL+V)。

正片:
AsusSMC链接:https://github.com/hieplpvip/AsusSMC
Wiki:https://github.com/hieplpvip/AsusSMC/wiki/Installation-Instruction
Wiki里面是原作者对AsusSMC的食用说明教程,但是在阅读后发现这里面教程并没有更新到最新,还是针对DSDT进行修改,只适合用于Clover,而对于OC来说,直接加载DSDT已经不被推荐了,OC会对所有对操作系统注入ACPI。因此在只需要根据原作者的patches(DSDT补丁)制作对应的SSDT并加载,同时加载AsusSMC.kext,就可以食用大部分功能。下载仓库文件跟relesse版本的AsusSMC.kext。这里面比较重要就是patches,跟AsusSMC.kext内核驱动,接下来就是制作SSDT了。



首先是加载DSDT的补丁库,后来发现需要科学上网才能加载出来。因此推荐食用第二种方法,就是加载Patches里的补丁,两者补丁内容是一样里,因此在这里主要介绍加载本地补丁进行修改DSDT,并制作SSDT的方法。

1.修复键盘背光
请注意后面的操作以我的DSDT为例,
提取DSDT后用MaciASl打开后,根据CPU的平台选择对应的补丁,比如我的是i5-7200U,就选择kabylake这个补丁。
打开MaciASl->补丁库->应用本地补丁文件->选择对应丁补丁->应用




补丁打完之后,后面就需要根据这个内容制作SSDT。在打补丁的时候可以发现这个补丁并没有修改内容,而是增加了一段内容。在DSDT中搜索“SKBV”这个搜索内容就是刚刚补丁的内容,只需要定位到他的位置即可。

根据左下角可以知道路径,创建SSDT,创建Scope域并填写路径,在Scope下复制刚刚打上的补丁内容,并在Scope上面添加外部引用进行编译没有错误就行。

外部引用的方法这里就不罗列了。
https://xstar-dev.github.io/hackintosh_advanced/Guide_For_Battery_Hotpatch.html
这篇文章是关于电池热补丁的,非常有用,里面有详细的关于“引用外部声明”的内容。
打不开的话,开VPN再试试。
至此关于键盘背光的SSDT就完成了,是不是一点都不难。将SSDT添加到ACPI,AsusSMC.kext添加到kext目录下。Config关联,重启后就会发现键盘背光可以食用了,需要注意的时要在键盘设置里需要关闭【在光线较弱时调整键盘亮度】,这样在强光下也可以调整,不关闭的话在强光下无法调整。


2.键盘快捷键




关于键盘快捷键的教程推荐去看
https://blog.skk.moe/post/ssdt-map-fn-shortcuts/
该作者也是《从 Clover 到 OpenCore —— Clover 迁移 OpenCore 指南》的作者,小兵哥是转载,嘿嘿嘿,懂得!
按照教程的话,需要重新建立键盘映射,需要学习PS2跟ABD的扫描码,比较麻烦,而AsusSMC的作者已经将补丁弄好,我们只需要进行食用就行了,方便了许多
在食用键盘快捷键前,先看看Wiki里面对键盘对介绍,在食用AsusSMC的时候需要先移除AsusNBFnKeys,接下来就是制作SSDT了。
同理方法还是一样,先在DSDT中打上补丁后,复制补丁内容到新建的SSDT里,添加系统判断,外部引用,编译无误后就可以食用了。
后面操作以Fn+F3“调节键盘背光快捷键”为例,
选择F3的补丁,注意打补丁前后的区别,选择应用补丁,并且搜索“_SB.ATKD.IANE”定位到该补丁位置,发现Fn+F3对应到是“_Q0C”,“_Q0D”则对应Fn+F4,其余快捷键。可以查看对应补丁。

找到补丁位置后,新建SSDT文件,在SSDT文件中新建Scope域,路径方法同上。

可以看到这里我是已经添加了系统判断,如果操作系统是Mac就继续,如果不是就执行XQ0C。因此需要对原DSDT中对_Q0C重命名成XQ0C,这样当不是Mac系统时实际执行当就是原DSDT的_Q0C(重命名成XQ0C)。其余的快捷键的操作方法一样。需要注意的是每个快捷键对应的值是不一样的。更新一下需要注意的是Else的位置,是跟系统判断的IF 同级别,正确的已修改。如图蓝色框的部分。之前用OC引导进Windows后发现快捷键不能用,查看SSDT后,发现位置错了,导致在Windows下没有返回更名后的函数(XQ0C)。
重命名的方法请参考上面那篇《电池补丁教程》
完成之后就需要进行添加外部引用,编译无误后,就可以放进ACPI里加载了。


3.环境光传感器
OC-little里面的仿冒环境光传感器可以直接食用,有问题的在根据补丁修改吧,方法还是一样,这种只要懂了,一通百通,这里就不赘述了。

后面是修复完成的截图,最新Monterey照样可以用。







SSDT-ATKD.AML (键盘背光)
DefinitionBlock ("", "SSDT", 2, "ACDT", "ATKD", 0x00000000){    External (_SB_.ATKD, DeviceObj)    External (_SB_.KBLV, FieldUnitObj)    External (_SB_.PCI0.LPCB.EC0_.ST9E, MethodObj)    // 3 Arguments    External (_SB_.PCI0.LPCB.EC0_.WRAM, MethodObj)    // 2 Arguments    Scope (\_SB.ATKD)    {      Method (SKBV, 1, NotSerialized)      {            ^^PCI0.LPCB.EC0.WRAM (0x09F0, ^^KBLV)            ^^PCI0.LPCB.EC0.ST9E (0x1F, 0xFF, Arg0)            Return (Arg0)      }    }}
SSDT-ALS0(环境光传感器)
DefinitionBlock ("", "SSDT", 2, "ACDT", "ALS0", 0x00000000){    Scope (_SB)    {      Device (ALS0)      {            Name (_HID, "ACPI0008" /* Ambient Light Sensor Device */)// _HID: Hardware ID            Name (_CID, "smc-als")// _CID: Compatible ID            Name (_ALI, 0x012C)// _ALI: Ambient Light Illuminance            Name (_ALR, Package (0x01)// _ALR: Ambient Light Response            {                Package (0x02)                {                  0x64,                     0x012C                }            })            Method (_STA, 0, NotSerialized)// _STA: Status            {                If (_OSI ("Darwin"))                {                  Return (0x0F)                }                Else                {                  Return (Zero)                }            }      }    }}SSDT-FN.aml(Fn快捷键)
代码有点多,放进去超字节了,这里快捷键我只选取了我用得到了。
F3 键盘背光减弱
F4 键盘背光增加
F5 屏幕背光减弱
F6 屏幕背光增加
F9 触摸板开关
F10 静音
F11 音量减
F12 音量加
Ps:F1睡眠我试了一下,添加后没有反应,

cylhhm 发表于 2023-10-15 19:08

很好的教程

hungryfish110 发表于 2023-10-15 19:09

这个必须顶上去

alan_801 发表于 2023-10-15 19:09

很牛叉的教程呀,谢谢大神

flydancing 发表于 2023-10-15 19:10

一点一点看完了,有点尴尬,一点语法基础都没有实在食用不了,楼主能否帮助我制作一下SSDT。有时间的话,没时间就罢了。
提供上我的DSDT文件:

zjw0925 发表于 2023-10-15 19:11

华硕笔记本型号

忧伤吉他 发表于 2023-10-15 19:12

支持技术党。。。

nazimg42 发表于 2023-10-15 19:12

华硕N550JV 四代笔记本 i7-4700HQ

小咀咀 发表于 2023-10-15 19:13

你试一下,看看

calmlj 发表于 2023-10-15 19:14

非常感谢,已经起作用了;另外我想问一下,_Q0E to XQ0E和_Q0F to XQ0F对应的是F5+F6对吗?
页: [1] 2 3 4 5 6
查看完整版本: AsusSMC的简单教程