「ファンスピード制御」の版間の差分
細 (1版 をインポートしました) |
(同期) |
||
1行目: | 1行目: | ||
[[Category:CPU]] |
[[Category:CPU]] |
||
[[en:Fan speed control]] |
[[en:Fan speed control]] |
||
− | [[it:Fan |
+ | [[it:Fan speed control]] |
− | [[ru:Fan |
+ | [[ru:Fan speed control]] |
{{Related articles start}} |
{{Related articles start}} |
||
− | {{ |
+ | {{Related|Lm_sensors}} |
{{Related articles end}} |
{{Related articles end}} |
||
{{Pkg|lm_sensors}} に含まれている fancontrol を使うことで CPU やケースのファンの速度や音をコントロールできます。この記事ではユーティリティの設定とセットアップについて扱います。 |
{{Pkg|lm_sensors}} に含まれている fancontrol を使うことで CPU やケースのファンの速度や音をコントロールできます。この記事ではユーティリティの設定とセットアップについて扱います。 |
||
+ | |||
+ | Dell のノートパソコンでは、[[#i8kutils|i8kutils]] が使えます。 |
||
== センサードライバー == |
== センサードライバー == |
||
− | 新しいマザーボードの場合、サポートが Linux カーネルにまだ入っていない可能性があります。公式の [ |
+ | 新しいマザーボードの場合、サポートが Linux カーネルにまだ入っていない可能性があります。公式の [https://hwmon.wiki.kernel.org/device_support_status lm-sensors デバイス表] を確認して、そのようなマザーボードの場合、実験的なドライバーが使えるかどうか見て下さい。 |
fancontrol に必要なモジュールをロードするのに {{ic|lm_sensors.service}} を使うのは推奨されません。代わりに、モジュールを {{ic|/etc/modules-load.d/load_these.conf}} に手動で記述してください。モジュールがロードされる順番によって hwmon に必要なシンボリックリンクが作成される順番が決まるからです。言い換えれば、{{ic|lm_sensors.service}} を使用すると起動する度に何が起きるかわからなくなり、一貫性の観点からファンコントロールの設定ファイルが無意味になってしまいます。 |
fancontrol に必要なモジュールをロードするのに {{ic|lm_sensors.service}} を使うのは推奨されません。代わりに、モジュールを {{ic|/etc/modules-load.d/load_these.conf}} に手動で記述してください。モジュールがロードされる順番によって hwmon に必要なシンボリックリンクが作成される順番が決まるからです。言い換えれば、{{ic|lm_sensors.service}} を使用すると起動する度に何が起きるかわからなくなり、一貫性の観点からファンコントロールの設定ファイルが無意味になってしまいます。 |
||
+ | {{ic|/etc/conf.d/lm_sensors}} でモジュールを確認できます。モジュールが存在しない場合、root で {{ic|sensors-detect}} を実行してください。{{ic|modules-load.d}} ファイルでは1行毎に1つのモジュールを記述します。モジュールを指定すると再現可能な順番が作成されます。設定ファイルで絶対的なデバイス名を使用するという方法もあります [https://bbs.archlinux.org/viewtopic.php?pid=1415552#p1415552]。 |
||
− | 詳しくは、次のスレッドを参照: https://bbs.archlinux.org/viewtopic.php?pid=1251766 |
||
=== lm-sensors === |
=== lm-sensors === |
||
45行目: | 47行目: | ||
sensors の出力の1行目は温度や電圧を調べるためにマザーボードによって使用されるチップセットです。 |
sensors の出力の1行目は温度や電圧を調べるためにマザーボードによって使用されるチップセットです。 |
||
+ | {{ic|/etc/sensors.d/}} にファイルを作成してください: |
||
− | {{ic|/etc/sensors3.conf}} を編集して正確なチップセットを探して下さい。少数ながら同じような名前のチップセットが存在するため、編集するチップセットが正しいか確認してください。チップセットの設定の始めの方に {{ic|set fanX_div 4}} という行を追加します。X は対象システムの CPU のファンの数に置き換えてください。 |
||
+ | |||
+ | {{hc|/etc/sensors.d/fan-speed-control.conf|chip "''coretemp-isa-''*" |
||
+ | set fan''X''_div 4}} |
||
+ | |||
+ | ''coretemp-isa-'' はチップセットの名前に、''X'' は変更する CPU の番号に置き換えてください。 |
||
ファイルを保存して、root で実行: |
ファイルを保存して、root で実行: |
||
# sensors -s |
# sensors -s |
||
− | このコマンドは |
+ | このコマンドは設定ファイルをリロードします。もう一度 {{ic|sensors}} を実行して、RPM が正しく読み出されたか確認して下さい。読み出されない場合は、divisor を 8, 16, 32 と増やしていってください。 |
== 設定 == |
== 設定 == |
||
+ | {{Note|経験者はこのセクションをスキップして {{ic|/etc/fancontrol}} を自分で書くことで、ファンが最大速度で回らないようにすることができます。}} |
||
− | {{Note|Advanced users may want to skip this section and write {{ic|/etc/fancontrol}} on their own, which also saves them from hearing all of the fans at full speed.}} |
||
sensors を正しく設定できたら、{{Ic|pwmconfig}} を実行してテストを行い、速度のコントロールを設定します。{{Ic|pwmconfig}} の手順にしたがって基本速度をセットアップしてください。デフォルトの設定オプションで新しいファイル {{ic|/etc/fancontrol}} が作成されるはずです。 |
sensors を正しく設定できたら、{{Ic|pwmconfig}} を実行してテストを行い、速度のコントロールを設定します。{{Ic|pwmconfig}} の手順にしたがって基本速度をセットアップしてください。デフォルトの設定オプションで新しいファイル {{ic|/etc/fancontrol}} が作成されるはずです。 |
||
60行目: | 67行目: | ||
=== 調整 === |
=== 調整 === |
||
+ | {{Warning|以下の手順ではファンの速度を調整します。実行する前に CPU の負担度が低いことを確認してください。}} |
||
− | {{Warning|Some of the steps outlined below describe how to tweak fan speeds. Before doing this be sure to have a low CPU load.}} |
||
+ | {{Note|環境によっては、スクリプトがエラーを報告することがあります。エラーは無視して問題ありません。問題は PWM が上下するまでスクリプトが待てないことです。}} |
||
− | {{Note|On several systems, the included script may report errors as it trys to calibrate fans to the respective PWM. Users may safely ignore these errors. The problem is that the script does not wait long enough before ramping up or down the PWM.}} |
||
生成された設定をもっと細かく調整したい場合、以下が設定ファイルの例です: |
生成された設定をもっと細かく調整したい場合、以下が設定ファイルの例です: |
||
93行目: | 100行目: | ||
$ sed -e 's/[[:space:]=]/_/g' /sys/class/hwmon/''hwmon-device''/device/name |
$ sed -e 's/[[:space:]=]/_/g' /sys/class/hwmon/''hwmon-device''/device/name |
||
+ | {{Tip| |
||
− | {{Tip|{{ic|MAXPWM}} や {{ic|MINPWM}} オプションを使ってファンの速度の範囲を制限できます。詳しくは fancontrol のマニュアルページを見て下さい。}} |
||
+ | * {{ic|MAXPWM}} や {{ic|MINPWM}} オプションを使ってファンの速度の範囲を制限できます。詳しくは fancontrol のマニュアルページを見て下さい。 |
||
− | {{Tip|モジュールのロードのタイミングによって、再起動で {{ic|DEVPATH}} だけでなく温度センサーのパスも変わることがあります (hwmon0/device/temp1_input が hwmon0/temp1_input になる)。これは大抵カーネルの更新時に起こります。システムログをチェックしてトラブルメーカーが誰なのか確認して下さい: |
||
+ | * モジュールのロードのタイミングによって、再起動で {{ic|DEVPATH}} だけでなく温度センサーのパスも変わることがあります (hwmon0/device/temp1_input が hwmon0/temp1_input になる)。これは大抵カーネルの更新時に起こります。システムログをチェックしてトラブルメーカーが誰なのか確認して下さい: {{ic|# systemctl status fancontrol.service}}。そして設定ファイルを適切に修正して下さい。}} |
||
− | # systemctl status fancontrol.service |
||
− | そして設定ファイルを適切に修正して下さい。}} |
||
== fancontrol == |
== fancontrol == |
||
105行目: | 111行目: | ||
正しく設定できていればエラーが表示されずにシステムファンのコントロールが開始されます。このコマンドを実行した後、すぐにシステムファンが遅くなるのが聞こえるはずです。 |
正しく設定できていればエラーが表示されずにシステムファンのコントロールが開始されます。このコマンドを実行した後、すぐにシステムファンが遅くなるのが聞こえるはずです。 |
||
+ | ''fancontrol'' を起動時に自動的に動作させるには、{{ic|fancontrol.service}} を[[有効化]]してください。 |
||
− | {{Note|Dell の Latitude/Inspiron ノートパソコンでは、{{Pkg|i8kutils}} が使えます。{{ic|i8k}} カーネルモジュールは機種によって問題が起こることが知られています。}} |
||
+ | |||
+ | {{Note|カーネルをアップグレード・変更する際、fancontrol を実行しているとデバイスパスが変わってエラーが発生することがあります。{{ic|sensors-detect}} を実行してシステムを再起動すれば問題は解決します。}} |
||
+ | |||
+ | == i8kutils == |
||
+ | |||
+ | {{AUR|i8kutils}} は Dell Inspiron や Latitude ノートパソコンでファンの速度を制御する手段を提供します。{{ic|dell_smm_hwmon}} ドライバー (旧名 {{ic|i8k}}) による {{ic|/proc/i8k}} インターフェイスが利用されます。ノートパソコンの機種によって結果は変わります。 |
||
+ | |||
+ | === 依存パッケージ === |
||
+ | |||
+ | ({{ic|--daemon}} オプションを使用して) {{ic|i8kmon}} をバックグラウンドサービスとして実行するには {{Pkg|tcl}} のインストールが必要です。X11 デスクトップアプレットを実行するには {{Pkg|tk}} も必要です。 |
||
+ | |||
+ | === 設定 === |
||
+ | |||
+ | デフォルトでは {{ic|i8kmon}} は CPU の温度やファンの速度を受動的に監視することしかしません。ファン速度の制御を有効にするには、{{ic|--auto}} オプションを使用して実行するか、あるいは {{ic|/etc/i8kutils/i8kmon.conf}} で永続的にオプションを有効にしてください: |
||
+ | |||
+ | set config(auto) 1 |
||
+ | |||
+ | 同じ設定ファイルでファンの速度が変化する温度を調整できます。使用できるファンの速度は3つだけです (high, low, off)。以下のようになっているセクションを見てください: |
||
+ | |||
+ | set config(0) {{0 0} -1 55 -1 55} |
||
+ | set config(1) {{1 1} 45 75 45 75} |
||
+ | set config(2) {{2 2} 65 128 65 128} |
||
+ | |||
+ | 上記の例では CPU 温度が 55 °C に達したらファンを低速で回し始め、75 °C で高速に切り替えます。65 °C まで温度が落ちたら低速に戻り、45 °C になったらファンは完全に停止します。 |
||
+ | |||
+ | === BIOS によるファンスピード制御を無効化 === |
||
+ | |||
+ | {{ic|i8kmon}} で制御できない場合は BIOS によるファンの速度コントロールをオフにする必要があります。ノートパソコンによっては {{ic|smm}} ユーティリティを使ってオフにできます。このユーティリティは I/O ポートに直接書き込みを行ってプロセッサの [[Wikipedia:System_Management_Mode|System Management Mode]] を呼び出すため非常に危険です。自己責任で使ってください。 |
||
+ | |||
+ | {{ic|smm}} は手動でコンパイル・インストールする必要があります。64ビット環境では、{{Pkg|gcc-multilib}} が必要です。{{ic|i8kutils}} のソースにある {{ic|smm.c}} ファイルを見つけてコンパイルしてください: |
||
+ | |||
+ | $ gcc -m32 -o smm smm.c |
||
+ | |||
+ | BIOS によるファンの速度制御を無効化するには、以下のコマンドを root で実行: |
||
+ | |||
+ | # ./smm 30a3 |
||
+ | |||
+ | 再度有効化するには: |
||
+ | |||
+ | # ./smm 31a3 |
||
+ | |||
+ | {{Note|上記のコマンドは BIOS による他の電源管理機能も無効化してしまうことがあり、電源ボタンが押されたことを Linux から認識できなくなったりする可能性があります。}} |
||
+ | |||
+ | === サービスとしてインストール === |
||
+ | |||
+ | 以下のようなユニットファイルを使うことで [[systemd]] サービスとして {{ic|i8kmon}} を自動で起動できます: |
||
+ | |||
+ | {{hc|1=/etc/systemd/system/i8kmon.service|2=[Unit] |
||
+ | Description=i8kmon |
||
+ | [Service] |
||
− | fancontrol をブート時に自動的に起動させるには[[systemd|サービス]]を有効化して下さい。 |
||
+ | #ExecStartPre=/usr/bin/smm 30a3 # uncomment to disable BIOS fan control |
||
+ | #ExecStopPost=/usr/bin/smm 31a3 # ... and re-enable it afterwards |
||
+ | ExecStart=/usr/bin/i8kmon -d |
||
+ | Restart=always |
||
+ | RestartSec=5 |
||
+ | [Install] |
||
− | i8kmon サービスでファンをコントロールできるようにするには、{{ic|/etc/i8kutils/i8kmon.conf}} で "auto" 設定オプションを 1 に設定する必要があります。 |
||
+ | WantedBy=multi-user.target}} |
2016年10月26日 (水) 00:13時点における版
関連記事
lm_sensors に含まれている fancontrol を使うことで CPU やケースのファンの速度や音をコントロールできます。この記事ではユーティリティの設定とセットアップについて扱います。
Dell のノートパソコンでは、i8kutils が使えます。
目次
センサードライバー
新しいマザーボードの場合、サポートが Linux カーネルにまだ入っていない可能性があります。公式の lm-sensors デバイス表 を確認して、そのようなマザーボードの場合、実験的なドライバーが使えるかどうか見て下さい。
fancontrol に必要なモジュールをロードするのに lm_sensors.service
を使うのは推奨されません。代わりに、モジュールを /etc/modules-load.d/load_these.conf
に手動で記述してください。モジュールがロードされる順番によって hwmon に必要なシンボリックリンクが作成される順番が決まるからです。言い換えれば、lm_sensors.service
を使用すると起動する度に何が起きるかわからなくなり、一貫性の観点からファンコントロールの設定ファイルが無意味になってしまいます。
/etc/conf.d/lm_sensors
でモジュールを確認できます。モジュールが存在しない場合、root で sensors-detect
を実行してください。modules-load.d
ファイルでは1行毎に1つのモジュールを記述します。モジュールを指定すると再現可能な順番が作成されます。設定ファイルで絶対的なデバイス名を使用するという方法もあります [1]。
lm-sensors
lm_sensors をセットアップしてください。
$ sensors
coretemp-isa-0000 Adapter: ISA adapter Core 0: +29.0°C (high = +76.0°C, crit = +100.0°C) [...] it8718-isa-0290 Adapter: ISA adapter Vcc: +1.14 V (min = +0.00 V, max = +4.08 V) VTT: +2.08 V (min = +0.00 V, max = +4.08 V) +3.3V: +3.33 V (min = +0.00 V, max = +4.08 V) NB Vcore: +0.03 V (min = +0.00 V, max = +4.08 V) VDRAM: +2.13 V (min = +0.00 V, max = +4.08 V) fan1: 690 RPM (min = 10 RPM) temp1: +37.5°C (low = +129.5°C, high = +129.5°C) sensor = thermistor temp2: +25.0°C (low = +127.0°C, high = +127.0°C) sensor = thermal diode
出力に CPU ファンの RPM の値が表示されない場合、fan divisor を増やす必要があります。ファンの速度が表示され0よりも高い場合は、次のステップにスキップしてください。
fan_div の増加
sensors の出力の1行目は温度や電圧を調べるためにマザーボードによって使用されるチップセットです。
/etc/sensors.d/
にファイルを作成してください:
/etc/sensors.d/fan-speed-control.conf
chip "coretemp-isa-*" set fanX_div 4
coretemp-isa- はチップセットの名前に、X は変更する CPU の番号に置き換えてください。
ファイルを保存して、root で実行:
# sensors -s
このコマンドは設定ファイルをリロードします。もう一度 sensors
を実行して、RPM が正しく読み出されたか確認して下さい。読み出されない場合は、divisor を 8, 16, 32 と増やしていってください。
設定
sensors を正しく設定できたら、pwmconfig
を実行してテストを行い、速度のコントロールを設定します。pwmconfig
の手順にしたがって基本速度をセットアップしてください。デフォルトの設定オプションで新しいファイル /etc/fancontrol
が作成されるはずです。
調整
生成された設定をもっと細かく調整したい場合、以下が設定ファイルの例です:
INTERVAL=10 DEVPATH=hwmon0=devices/platform/coretemp.0 hwmon2=devices/platform/w83627ehf.656 DEVNAME=hwmon0=coretemp hwmon2=w83627dhg FCTEMPS=hwmon0/device/pwm1=hwmon0/device/temp1_input FCFANS= hwmon0/device/pwm1=hwmon0/device/fan1_input MINTEMP=hwmon0/device/pwm1=20 MAXTEMP=hwmon0/device/pwm1=55 MINSTART=hwmon0/device/pwm1=150 MINSTOP=hwmon0/device/pwm1=105
INTERVAL
: デーモンが CPU 温度を問い合せてファンの速度を調整する頻度。INTERVAL は秒数で指定します。
設定ファイルの残りの部分は設定オプションごとに (少なくとも) 2つの値に分けられます。それぞれの設定オプションではまずファンの速度を設定するのに書き出される PWM デバイスが指定されており、次の"フィールド"が実際に設定する値となっています。これによって複数のファンと温度の監視・コントロールが可能です。
FCTEMPS
: CPU 温度を読み込むための温度インプットデバイス。上記の例では/sys/class/hwmon/hwmon0/device/temp1_input
。FCFANS
: (温度と同じように)/sys/class/hwmon/hwmon0/device/fan1_input
で読み込むことができる、現在のファン速度。MINTEMP
: CPU ファンを止める温度 (°C)。効率的な CPU はアイドル状態のときファンを必要としません。安全だということが確認できる温度の範囲内で設定してください。この値を0に設定するのは推奨されません。ハードウェアが壊れてしまう可能性があります。MAXTEMP
: ファンを最大速度で回す温度 (°C)。CPU が壊れたりシャットダウンする温度から10か20ほど低い温度に設定するべきです (°C)。この値を MINTEMP に近づけるとファンがずっと高回転することになります。MINSTOP
: ファンが回転を停止する PWM の値。ファンごとに値を少し変えます。/sys/class/hwmon/hwmon0/device/pwm1
に異なる値をecho
(0 から 255 の間) して CPU ファンを監視することで調整できます。CPU ファンが停止したら、その値を使って下さい。MINSTART
: ファンが回転をもう一度開始する PWM の値。大きな電圧が必要になるので普通は MINSTOP より高い値にします。
さらに設定ファイルが最新であることを fancontrol が検証するのに必要な2つの設定があります。設定名とイコール記号で始まって、スペースで区切られた hwmon-class-device=setting のグループが後ろに付く行です。設定のどこかに使用する hwmon クラスデバイスごとに設定を指定しないと、fancontrol は動作しません。
DEVPATH
: 物理デバイスを設定。次のコマンドを実行することで確認できます:
readlink -f /sys/class/hwmon/hwmon-device/device | sed -e 's/^\/sys\///'
DEVNAME
: デバイスの名前を設定。次を実行して下さい:
$ sed -e 's/[[:space:]=]/_/g' /sys/class/hwmon/hwmon-device/device/name
fancontrol
fancontrol を実行するには:
# /usr/bin/fancontrol
正しく設定できていればエラーが表示されずにシステムファンのコントロールが開始されます。このコマンドを実行した後、すぐにシステムファンが遅くなるのが聞こえるはずです。
fancontrol を起動時に自動的に動作させるには、fancontrol.service
を有効化してください。
i8kutils
i8kutilsAUR は Dell Inspiron や Latitude ノートパソコンでファンの速度を制御する手段を提供します。dell_smm_hwmon
ドライバー (旧名 i8k
) による /proc/i8k
インターフェイスが利用されます。ノートパソコンの機種によって結果は変わります。
依存パッケージ
(--daemon
オプションを使用して) i8kmon
をバックグラウンドサービスとして実行するには tcl のインストールが必要です。X11 デスクトップアプレットを実行するには tk も必要です。
設定
デフォルトでは i8kmon
は CPU の温度やファンの速度を受動的に監視することしかしません。ファン速度の制御を有効にするには、--auto
オプションを使用して実行するか、あるいは /etc/i8kutils/i8kmon.conf
で永続的にオプションを有効にしてください:
set config(auto) 1
同じ設定ファイルでファンの速度が変化する温度を調整できます。使用できるファンの速度は3つだけです (high, low, off)。以下のようになっているセクションを見てください:
set config(0) {{0 0} -1 55 -1 55} set config(1) {{1 1} 45 75 45 75} set config(2) {{2 2} 65 128 65 128}
上記の例では CPU 温度が 55 °C に達したらファンを低速で回し始め、75 °C で高速に切り替えます。65 °C まで温度が落ちたら低速に戻り、45 °C になったらファンは完全に停止します。
BIOS によるファンスピード制御を無効化
i8kmon
で制御できない場合は BIOS によるファンの速度コントロールをオフにする必要があります。ノートパソコンによっては smm
ユーティリティを使ってオフにできます。このユーティリティは I/O ポートに直接書き込みを行ってプロセッサの System Management Mode を呼び出すため非常に危険です。自己責任で使ってください。
smm
は手動でコンパイル・インストールする必要があります。64ビット環境では、gcc-multilib が必要です。i8kutils
のソースにある smm.c
ファイルを見つけてコンパイルしてください:
$ gcc -m32 -o smm smm.c
BIOS によるファンの速度制御を無効化するには、以下のコマンドを root で実行:
# ./smm 30a3
再度有効化するには:
# ./smm 31a3
サービスとしてインストール
以下のようなユニットファイルを使うことで systemd サービスとして i8kmon
を自動で起動できます:
/etc/systemd/system/i8kmon.service
[Unit] Description=i8kmon [Service] #ExecStartPre=/usr/bin/smm 30a3 # uncomment to disable BIOS fan control #ExecStopPost=/usr/bin/smm 31a3 # ... and re-enable it afterwards ExecStart=/usr/bin/i8kmon -d Restart=always RestartSec=5 [Install] WantedBy=multi-user.target