fakeSMCの機能拡張

3. fakeSMCをプラグインで機能拡張する

 netkas氏作成のfakeSMC(仮想SMCデバイスカーネル拡張)はオープンソースにより機能拡張が続けられている。

 ・FakeSMCACPIMonitor – temperature from ACPI device “Thermal Zone”
 ・FakeSMCIntelThermal – Intel CPU temperature monitoring.
 ・FakeSMCLPCMonitor – temperatures and fans from ITE, Winbond and Fintek controllers.

こちらSubversionによりソース管理されているので、モジュールをチェックアウトする。なお、SVNクライアントは標準インストールされている。


# svn checkout http://subversion.assembla.com/svn/fakesmc/

 ・PluginはFakesmc,kext/Contents/Plugins以下に置く
 ・Fakesmc.kextは/System/Library/Extensionsに置く(/Extra/Extensionsに置くとPluginがロードされない、場合によってはKPする)

 ・参考情報
  FakeSMC 2.X Monitoring With Fakesmc

(追記1. 2010/07/05)

 従来、Super IOチップを正しく認識できず場合によってはKPが発生することもあったが、完成度が上がり、FakeSMC r259では、Super IOチップとしてiTE IT8720Fを採用したP55-T36で、実機同様にブロア情報やCPU電圧、ノースブリッジの情報が取得できるようになった(L3246のTj.Maxは69℃だが、こちらも正しく取得できている)。Super IOチップはiTEの他、Winbond、Fintek、SMSCにも対応しているので、多くの機種で同様に動くことが期待できる。


 なお、インストールする場合は、従来のfakesmc.kextは削除し、新しいFakeSMC.kextを/System/Library/Extenenionsに必ず置くこと。従来通り/Extra/Extensionsに置くと、動作しないばかりか、最悪KPして起動しなくなるので、シングルユーザモードで起動させるか、別の媒体からメディアブートをして元のfakesmc.kextに戻すなどの復旧策が必要となる。

 また、プラグインのFakeSMCSMbus.kextにおいて、バンドルライブラリの依存関係の定義がないので、キャッシュ作成時にエラーが出る。気になる人は下記を追加するとよい。


<key>com.apple.kpi.iokit</key>
<string>9.0</string>
<key>com.apple.kpi.libkern</key>
<string>9.0</string>
<key>com.apple.kpi.unsupported</key>
<string>9.0</string>
<key>org.netkas.FakeSMC</key>
<string>2.7.1</string>

 ドキュメントが整備されておらず、情報源としてソースコードに頼るしかないが、対応しているSuper IOチップは、ヘッダファイルから判別できる。P55-T36やGA-H55N-USB3で使用されているSuper IOチップのiTE IT8720Fは上記の通り対応している。一方、XC miniで使用されているFintek F71808(0x0901)は対応していない。ざっと読んだ限りでは、ヘッダファイルやProbe処理(SuperIO.h、SuperIO.cpp、Fintek.cpp)において幾つかのコードの追加で対応は可なので、オープンソースの醍醐味として、腕に覚えがある人は挑戦してみると良い。

 また、GPUのセンサについても同様に判別でき、G84/G86/G92/GT200コアが対応していることがわかる。GeForce GT240はGT215コアの為、未対応でスクリーンショットの通り現状では正しい情報が取得できない。

■ iStat Menus 3.10でのセンサ変更対策

 iStat Menus 3.10から実機でのモニタ表示向上の為、機種モデルと取得できるsmc keyの一覧が合致してるかどうかの判定ロジックが追加された。その為、一部の機種モデル(例:MacPro4,1)を用いた場合、実機以外ではCPUやチップセットの温度の表示ができなくなる。

 機種によって判別している為、他の機種モデルにすれば回避できるが、NehalemアーキテクチャCPU搭載機種(MacPro4,1)をCoreMAアーキテクチャの機種(MacPro3,1)とすると、HyperTreading機能などが正しくハンドリングできなくなる。本来、MacPro4,1のままで使用するのが望ましいが、MacPro3,1とするのであれば、下記の通りsmbios.plistに変更を加えMacPro5,1にする方が好ましい。


<key>SMbiosversion</key>
<string>MP51.007F.B00.0903051113</string>
<key>SMproductname</key>
<string>MacPro5,1</string>

 なお、MacPro5,1としてしまうと、10.6.4ではカーネルとAppleIntelCPUPowerManagement.kextの組み合わせによっては正しくSpeedStepが機能しない(MacPro5,1プレインストールと同じバージョンなら機能する)ので、本回避策は10.6.5が正式にリリースされた後に試すとよい(10.6.5 build 10H555では正常動作)。また、LegacyAGPM.kextを使用している場合は、機種IDと関連づけられているので、併せて更新する必要がある。

  • 参考情報

■機種IDとSMC version

Model identifier EFI Boot ROM version SMC version REVkey smc-compatible
MacPro3,1 MP31.006C.B05 1.30f3 ATAPAAAD smc-napa
MacPro4,1 MP41.0081.B07 1.39f5 ATkPAAAF smc-thurley
MacPro5,1 MP51.007F.B00 1.39f11 ATkPAAAR smc-thurley

  • 参考情報

(追記2. 2010/01/06)

 FakeSMC 3.0から/Extra/Extensionsで動作することが可能になった。Plugin用のkextは同一のディレクトリにおけば良い。専用のサブフォーラムが設置されたので、そちらで情報交換がなされている。

 ・参考情報
  FakeSMC 3.X FakeSMC subforum


最終更新:2011年01月06日 13:05