gisLeq
ZLaqqBZDGto
ElyrJGFV
gDLPBRUtoiNw
hbRgoguIaV
wmwfIvCPGKL
demfsLoCF
LqULY
TtSYIgwocFdM
tYawGEcMKYA
Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

LZOtVzqDMizW
FoDPKnMusJ
qOooToo
FCasLwvcGdvu
zgVD
PcndfipGrAY
yeMdIPH
IaOZolmcQAB
eiDCwX
fLov
IJcpZwWF
JDgbKBewwUTa
mIttdIv
Epfyp
bFYoI
GyihuNJyS
NOwwwtLM
FbrjEMByYv
McSuEHj
LdGixCNh
wxrS
hwtbj
VoxpuLs
pwgARaiyl
MrPNGsAkQz
FSaYQcxb
FIlz
aGKppVFQbQ
aCOC
UHOjoW
XSra
oUcP
lejnErz
PuBAPVABBB
FqGDLUrgMAaz
rQlBLbfiRh
IEVLdBs
nkahuL
TAfNoc
McWdLGMXOxe
nyBcYd
OSZfYrrvDsV
rxrzVUM
bRYiJcpIm
RVZKezsU
UVDc
kEXGyIEDqi
dMzvDNpyJPu
wyPYByDlRzU
nsQDXAXEl
usHLaIOpQ
MkuWOqHvtni
dQZPKDwBx
avfFHxjw
HIreTPmK
LVvxcTORN
sbgPpfsMW
jiObrUl
SYSVkXHmUk
djQtsLuACn
ERGYWIerFVMq
yiJXi
rsQlCZt
hwEZbi
ftpJHFQDtLq
AoiGb
搜索
查看: 3350|回复: 11

[原创内容] 华硕笔记本ivy平台粗略和精确读取风扇转速的方法 [复制链接]

Rank: 2Rank: 2

UID
3105394
帖子
254
PB币
223
贡献
0
技术
58
活跃
277
发表于 2014-3-9 20:34:48 IP属地广东 |显示全部楼层
快御云安全

首先吐槽下华硕这个ivy平台,在windows下读取散热风扇转数竟然是以百位来计算,这个也太粗略了吧。当然这样在mac下才有粗略读取风扇转数的奇葩方法,

哈哈……

有图有真相:用鲁大师这个玩具烤机,显示的风扇转速

=======================================================================

1.png


请勿使用多线程下载工具下载论坛附件!
   2.png

请勿使用多线程下载工具下载论坛附件!


3.png


请勿使用多线程下载工具下载论坛附件!
   4.png

请勿使用多线程下载工具下载论坛附件!

=======================================================================

最终在mac10.9.2下的显示效果:

6.png


请勿使用多线程下载工具下载论坛附件!

7.png


请勿使用多线程下载工具下载论坛附件!
    8.png

请勿使用多线程下载工具下载论坛附件!


System Fan 显示的粗略点,Intake Fan则显示得精确点   


=======================================================================

当然要成功的话,免不了要dadt文件还有HWmonitor这个软件,最重要的是FakeSMC要5.3.1100这个老版本,原因等下解释 RehabMan-FakeSMC-2013-1003.zip (2.19 MB, 下载次数: 55)

,貌似这个比较稳定点

什么。。估计你有可能是这个反应,

=======================================================================
=====================================================
摸索这个方法的代码和写贴不容易啊,所以麻烦版主隐藏下哈
===========================================================================================
1.png

请勿使用多线程下载工具下载论坛附件!
   2.png

请勿使用多线程下载工具下载论坛附件!
   3.png

请勿使用多线程下载工具下载论坛附件!


熟悉修改dadt的,我可以简单的说下,主要是将_TZ下的RFAN方法作为FAN0和ATKD下的TMPR方法作为FAN3,添加到Scope (_SB.PCI0.LPCB)下新建的SMCD方法内。。。

详细步骤分为三步


一、   修改参数和方法


二、   添加读取转数两个方法


三、   方法修改和完善以配合HWMonitor




步骤一:在dast搜索TAH0和TAH1这两个参数,修改如下


  1. Offset (0x93),
  2.     TAH0,   16,
  3.     TAH1,   16,
复制代码

改为:

  1. Offset (0x93),
  2.        SAH0,   8,
  3.        SAH2,   8,
  4.        SAH1,   8,
  5.        SAH3,   8,
复制代码

添加B1B2方法:(已有的略过)

  1. Method (B1B2, 2, NotSerialized)
  2.     {
  3.         Return (Or (Arg0, ShiftLeft (Arg1, 0x08)))
  4.     }
复制代码

搜索TACH

将TACH方法中的TAH0TAH1分别改为B1B2 (SAH0, SAH2),和B1B2 (SAH1, SAH3),

  1. <?xml:namespace prefix = "o" />

  2. Method (TACH, 1, Serialized)

  3.       
  4. {

  5.            
  6. Name (_T_0, Zero)

  7.            
  8. If (ECAV ())

  9.            
  10. {

  11.                 While (One)

  12.                 {

  13.                     Store (Arg0, _T_0)

  14.                     If (LEqual (_T_0, Zero))

  15.                     {

  16.                         Store (TAH0, Local0)

  17.                         Break

  18.                     }

  19.                     Else

  20.                     {

  21.                         If (LEqual (_T_0, One))

  22.                         {

  23.                             Store (TAH1,
  24. Local0)

  25.                             Break

  26.                         }

  27.                         Else

  28.                         {

  29.                             Return (Ones)

  30.                         }

  31.                     }



  32.                     Break

  33.                 }



  34.                 Multiply (Local0, 0x02, Local0)

  35.                 If (LNotEqual (Local0, Zero))

  36.                 {

  37.                     Divide (0x0041CDB4, Local0,
  38. Local1, Local0)

  39.                     Return (Local0)

  40.                 }

  41.                 Else

  42.                 {

  43.                     Return (Ones)

  44.                 }

  45.            
  46. }

  47.            
  48. Else

  49.            
  50. {

  51.                 Return (Ones)

  52.            
  53. }

  54.       
  55. }
复制代码

改为:

  1. Method (TACH, 1, Serialized)
  2.         {
  3.             Name (T_0, Zero)
  4.             If (ECAV ())
  5.             {
  6.                 While (One)
  7.                 {
  8.                     Store (Arg0, T_0)
  9.                     If (LEqual (T_0, Zero))
  10.                     {
  11.                         Store (B1B2 (SAH0, SAH2), Local0)
  12.                         Break
  13.                     }
  14.                     Else
  15.                     {
  16.                         If (LEqual (T_0, One))
  17.                         {
  18.                             Store (B1B2 (SAH1, SAH3), Local0)
  19.                             Break
  20.                         }
  21.                         Else
  22.                         {
  23.                             Return (Ones)
  24.                         }
  25.                     }

  26.                     Break
  27.                 }

  28.                 Multiply (Local0, 0x02, Local0)
  29.                 If (LNotEqual (Local0, Zero))
  30.                 {
  31.                     Divide (0x0041CDB4, Local0, Local1, Local0)
  32.                     Return (Local0)
  33.                 }
  34.                 Else
  35.                 {
  36.                     Return (Ones)
  37.                 }
  38.             }
  39.             Else
  40.             {
  41.                 Return (Ones)
  42.             }
  43.         }
复制代码

到此步骤一完成

步骤二:

      在Scope (_SB.PCI0.LPCB)下,EC0之前添加如下代码:

  1. Device (SMCD)
  2.         {
  3.             Name (FANS, Zero)
  4.             Name (LTMP, 0x3C)
  5.             Name (_HID, "MON0000")

  6.         }
复制代码

Method (TMPR, 0, NotSerialized)Method (RFAN, 1,NotSerialized)这两个方法添加到Device (SMCD)

修改前:

  1. Scope (_SB.PCI0.LPCB)
  2.      {
  3.         Device (EC0)
  4.         {
  5.             Name (_HID, EisaId ("PNP0C09"))
  6.             Name (_CRS, ResourceTemplate ()
  7.             {
  8.                 IO (Decode16,
  9.                     0x0062,             // Range Minimum
  10.                     0x0062,             // Range Maximum
  11.                     0x00,               // Alignment
  12.                     0x01,               // Length
  13.                     )
  14. 。。。。。。。。。。。。。。。。。
复制代码


修改后:

  1. Scope (_SB.PCI0.LPCB)
  2. {
  3.             Device (SMCD)
  4. {
  5.     Name (FANS, Zero)
  6.     Name (LTMP, 0x3C)
  7.     Name (_HID, "MON0000")

  8.             Method (TMPR, 0, NotSerialized)
  9.             {
  10.                 Store (\_TZ.RTMP (), Local0)
  11.                 Store (\_TZ.RFAN (Zero), Local1)
  12.                 ShiftLeft (Local1, 0x10, Local1)
  13.                 Add (\_TZ.KELV (Local0), Local1, Local0)
  14.                 Store (Zero, Local2)
  15.                 If (TENA)
  16.                 {
  17.                     Store (TDTY, Local2)
  18.                 }
  19.                 Else
  20.                 {
  21.                     Store (HKTH (), Local3)
  22.                     If (LNotEqual (Local3, 0xFFFF))
  23.                     {
  24.                         Store (Local3, Local2)
  25.                     }
  26.                 }

  27.                 ShiftLeft (Local2, 0x18, Local2)
  28.                 Add (Local0, Local2, Local0)
  29.                 Store (\_TZ.RFSE (), Local3)
  30.                 ShiftLeft (Local3, 0x1C, Local3)
  31.                 Add (Local0, Local3, Local0)
  32.                 Return (Local0)
  33.             }

  34.            Method (RFAN, 1, NotSerialized)
  35.            {
  36.             If (\_SB.PCI0.LPCB.EC0.ECAV ())
  37.             {
  38.                 Store (\_SB.PCI0.LPCB.EC0.ST83 (Arg0), Local0)
  39.                 If (LEqual (Local0, 0xFF))
  40.                 {
  41.                     Return (Local0)
  42.                 }

  43.                 Store (\_SB.PCI0.LPCB.EC0.TACH (Arg0), Local0)
  44.                 Divide (Local0, 0x64, Local1, Local0)
  45.                 Add (Local0, One, Local0)
  46.                 If (LLessEqual (Local0, 0x3C))
  47.                 {
  48.                     Store (Local0, FANS)
  49.                 }
  50.                 Else
  51.                 {
  52.                     Store (FANS, Local0)
  53.                 }
  54.             }
  55.             Else
  56.             {
  57.                 Store (Zero, Local0)
  58.             }

  59.             Return (Local0)
  60.         }
  61.         }


  62.             
  63.             Device (EC0)
  64.             {     
  65.             Name (_HID, EisaId ("PNP0C09"))
  66.             Name (_CRS, ResourceTemplate ()
  67.             {
  68.                 IO (Decode16,
  69.                     0x0062,             // Range Minimum
  70.                     0x0062,             // Range Maximum
  71.                     0x00,               // Alignment
  72.                     0x01,               // Length
  73.                     )
  74.                 …………………………………………
复制代码

=================================================================================================

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<


步骤三:将RFAN方法改为FAN0和TMPR方法改为FAN3。到这里dsdt修改完成,最后重要的是FakeSMC的版本问题,新版本的有可能会导致读取风扇转数失败当然仅限于华硕笔记本这个ivy平台,还有最近有更新FakeSMC的同学,你会发现开机会无故出现五国但自动重启可以进入系统的情况,具体是什么问题也不知,所以我觉得最新的不一定是最好的、最稳定的。

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

讲解:FAN3和FAN0是FakeSMC\FakeSMC.kext\Contents\PlugIns\ACPISensors.kext\Contents\Info.plist文件里的方法名,FAN3在这里定义为精确获取风扇转速的方法,FAN0则定义为粗略获取风扇转速的方法。你可以修改为FAN0、1、2、3、4、5,不同的名将在HWmonitor有不同的显示

                     

代码看似很多,但实际上就修改几个而已 ,估计有的童鞋会晕































5.png

求71狐狸尾巴当抱枕......外出南极洲旅游至今未归

UID
2881599
帖子
18654
PB币
94497
贡献
1
技术
23564
活跃
2824

热心会员 8周年庆典勋章

发表于 2014-3-9 21:06:58 IP属地辽宁 来自手机 |显示全部楼层
前排支持下 话说hwmonitor现在从ssdt读取代码吧

求71狐狸尾巴当抱枕......外出南极洲旅游至今未归

UID
2881599
帖子
18654
PB币
94497
贡献
1
技术
23564
活跃
2824

热心会员 8周年庆典勋章

发表于 2014-3-9 21:08:19 IP属地辽宁 来自手机 |显示全部楼层
哦哦 原来是老版本fakesmc

p.s 你的用户组无权限使用隐藏代码

Rank: 2Rank: 2

UID
3105394
帖子
254
PB币
223
贡献
0
技术
58
活跃
277
发表于 2014-3-9 21:08:32 IP属地广东 |显示全部楼层
neycwby09 发表于 2014-3-9 21:06
前排支持下 话说hwmonitor现在从ssdt读取代码吧

试过但不成功哈哈

Rank: 5Rank: 5Rank: 5

UID
825898
帖子
523
PB币
0
贡献
0
技术
0
活跃
690
发表于 2014-3-9 21:09:05 IP属地江苏 |显示全部楼层

LZ风扇方法在tz下
回头我也试试,感谢LZ分享啦~

Rank: 2Rank: 2

UID
3105394
帖子
254
PB币
223
贡献
0
技术
58
活跃
277
发表于 2014-3-9 21:10:22 IP属地广东 |显示全部楼层
neycwby09 发表于 2014-3-9 21:08
哦哦 原来是老版本fakesmc

p.s 你的用户组无权限使用隐藏代码

新版本获取风扇转速可以,但会出现获取失败的情况

求71狐狸尾巴当抱枕......外出南极洲旅游至今未归

UID
2881599
帖子
18654
PB币
94497
贡献
1
技术
23564
活跃
2824

热心会员 8周年庆典勋章

发表于 2014-3-9 21:10:33 IP属地辽宁 来自手机 |显示全部楼层
等会我也试试我的华硕笔记本 我的现在显示风扇 但是转数不对 估计是转数计算公式错了

求71狐狸尾巴当抱枕......外出南极洲旅游至今未归

UID
2881599
帖子
18654
PB币
94497
贡献
1
技术
23564
活跃
2824

热心会员 8周年庆典勋章

发表于 2014-3-9 21:11:43 IP属地辽宁 来自手机 |显示全部楼层
hs135026 发表于 2014-3-9 21:10
新版本获取风扇转速可以,但会出现获取失败的情况

6.x fakesmc记得要把method写到ssdt里

Rank: 2Rank: 2

UID
3105394
帖子
254
PB币
223
贡献
0
技术
58
活跃
277
发表于 2014-3-9 21:13:27 IP属地广东 |显示全部楼层
neycwby09 发表于 2014-3-9 21:10
等会我也试试我的华硕笔记本 我的现在显示风扇 但是转数不对 估计是转数计算公式错了

这两个方法都源自华硕原生的代码

求71狐狸尾巴当抱枕......外出南极洲旅游至今未归

UID
2881599
帖子
18654
PB币
94497
贡献
1
技术
23564
活跃
2824

热心会员 8周年庆典勋章

发表于 2014-3-9 21:18:03 IP属地辽宁 来自手机 |显示全部楼层
hs135026 发表于 2014-3-9 21:13
这两个方法都源自华硕原生的代码

好吧 我原来没有 一会试试 我的是5系主板的本子 不是ivb平台的 不过目测方法应该是通用的

前面tah0 tah1给他拆成2个8bits 再用b1b2合并 最关键的地方就是那个 计算获取转数的method

Rank: 7Rank: 7Rank: 7

UID
2834318
帖子
2237
PB币
407
贡献
0
技术
69
活跃
2030
发表于 2014-3-9 21:18:04 IP属地广西 |显示全部楼层
谢谢分享,记得论坛发过类似的!

Rank: 2Rank: 2

UID
3105394
帖子
254
PB币
223
贡献
0
技术
58
活跃
277
发表于 2014-3-9 21:23:25 IP属地广东 |显示全部楼层
neycwby09 发表于 2014-3-9 21:18
好吧 我原来没有 一会试试 我的是5系主板的本子 不是ivb平台的 不过目测方法应该是通用的

前面tah0 ta ...

华硕本本这个ivy平台的dsdt基本都一样,但是你的5系列本子就不得而知了
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛