Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问下FAN在DSDT EC块里如何定位是那个变量存储控制的? #5

Closed
lgs3137 opened this issue Dec 29, 2019 · 13 comments
Closed

Comments

@lgs3137
Copy link

lgs3137 commented Dec 29, 2019

Method (FAN0, 0, Serialized)
		{
			// disable fan in low tempeture
			\_SB.PCI0.LPCB.EC.SCM0.TD72 = 0
			
			Local0 = \_SB.PCI0.LPCB.EC.SCM0.TD71 * 60
			Return (Local0)
		}

比如这里的TD71、TD72、TD73如何定位是对应EC里某些控制位置?我是在其他MSI机器上的想参考下你的方法,我在Win下用RW对比WiKi上的发现有一些差异。。。
0About

@chuxubank
Copy link
Owner

我也是在Win下用RW测的,和上表一致啊。看表上的行列,格子上是具体数值。
msi其他机型我也不确定,但应该不会偏差太多,rw上测出来有效的话肯定以rw为准啊

@lgs3137
Copy link
Author

lgs3137 commented Dec 29, 2019

我这里实测CPU实时风扇转速、档位的不一样,CPU实时温度是一样的

@lgs3137
Copy link
Author

lgs3137 commented Dec 29, 2019

你是如何定位到TD71、TD72、TD73这几个寄存器名称就是对应的读数控制位置呢?

@lgs3137
Copy link
Author

lgs3137 commented Dec 29, 2019

对了,你macOS下,cpu低温情况下,cpu风扇能完全停止运转么?

@lgs3137
Copy link
Author

lgs3137 commented Dec 29, 2019

额,刚刚关机后重置EC电源再在Win下测试一遍发现又对了,不过在macOS下用了hotpatch还是没有效果cpu风扇还在转,cpu 30° ,另外你macOS下读取风扇转速正常么?我这里只有开机的时候能读到数据,后面就变0了

@chuxubank
Copy link
Owner

对了,你macOS下,cpu低温情况下,cpu风扇能完全停止运转么?

是的,虽然靠近听还是有声音,但正常距离下基本听不到(和风扇开的声音还是区别很大的)

你是如何定位到TD71、TD72、TD73这几个寄存器名称就是对应的读数控制位置呢?

msi在win上有个风速控制软件Dragon Center,可以直接调节风速,我对照着rw看出来的

另外你macOS下读取风扇转速正常么?我这里只有开机的时候能读到数据,后面就变0了

我是正常的,msi这几个EC数值读和写不是实时的,是根据温度动态改变的,我的方法也比较hack,我是把改对应温度区间的风速放在读风速的方法里了,这样他会一直保持下去,否则会被改回来…

@lgs3137
Copy link
Author

lgs3137 commented Dec 29, 2019

嗯,可惜macOS下没办法直接读写ec

@lgs3137
Copy link
Author

lgs3137 commented Dec 29, 2019

方便说下你是如何判断TD71、TD72、TD73等这些寄存器位置对应EC的么?

@chuxubank
Copy link
Owner

方便说下你是如何判断TD71、TD72、TD73等这些寄存器位置对应EC的么?

看表上的行列。

@lgs3137
Copy link
Author

lgs3137 commented Dec 29, 2019

好的,3Q

@lgs3137 lgs3137 closed this as completed Dec 29, 2019
@chuxubank
Copy link
Owner

chuxubank commented Dec 29, 2019

我的方法也比较hack,我是把改对应温度区间的风速放在读风速的方法里了,这样他会一直保持下去,否则会被改回来…

@lgs3137 忘记说了, 必须使用 FakeSMC 才会调用那个读风速的方法(从而改变TD72的值), VirtualSMC 不会调用(即你用了hotpatch也没用), 至于VirtualSMC 下的方法我还没有尝试...

@lgs3137
Copy link
Author

lgs3137 commented Dec 30, 2019

我的方法也比较hack,我是把改对应温度区间的风速放在读风速的方法里了,这样他会一直保持下去,否则会被改回来…

@lgs3137 忘记说了, 必须使用 FakeSMC 才会调用那个读风速的方法(从而改变TD72的值), VirtualSMC 不会调用(即你用了hotpatch也没用), 至于VirtualSMC 下的方法我还没有尝试...

好的👌感谢
如果找到合适的方法我再回来分享~

@lgs3137
Copy link
Author

lgs3137 commented Jan 14, 2020

https://github.com/lgs3137/MSIFanControl
你好,目前在我的 机械革命S1(MSI PS42 8RB) 已经实现了不需要依赖FakeSMC也可以控制风扇转速了
另外EC控制不能太早执行,必须得等系统启动完成之后才能执行,过早执行会被ACPI其他方法覆盖掉的,你可以看下我写的这种方法,理论上微星的笔记本也通用的,加载hotpatch、kext后用

MSIECControl 20 30 40 60 80 100

类似Win下控制软件的高级模式的6个档位看看效果

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants