TL;DR dtoverlay=pwm-fan
が作れそう、だったけど時間切れ
- CPU温度で段階的に制御するためのrpi-poe-overlay.dts
- PWM制御するためのpwm-overlay.dts
- これを上手く合成できれば、、、ワンチャンありそうですね(残念ながら完成には至りませんでした)
はじめに
さて、前回の調査でFAN制御をするためにはraspi-config
経由で起動時オプションを設定する、ということを確認した。
このraspberry piのFAN制御において、小さな疑問が生じた。
dtoverlay=gpio-fan
果たして、GPIO14を使ったFAN制御がなされる、というが、どこにデフォルトが書かれているのだろうか?この謎を追い求めるため、調査員はアマゾン…ではなくgithubを探索した・・・ が正攻法では見つからない。なかなか面白い問題にぶち当たった。
それは単純な落とし穴だった(ファイル数が多すぎるので見つからない)
gpio-fan-overlay.dts というファイルが、arch/arm/boot/dts/overlays/以下にある。ここに確認したい情報の全てが入っていた。
しかしWebUIから表示しようとすると、"o"に達する前に読み込みが止まって見えない、おお、なんということだ!!
ということで、こちらを確認してほしい
https://github.com/raspberrypi/linux/blob/rpi-5.10.y/arch/arm/boot/dts/overlays/gpio-fan-overlay.dts
* Requires:
* - kernel configurations: CONFIG_SENSORS_GPIO_FAN=m;
* - kernel rebuild;
* - N-MOSFET connected to gpiopin, 2N7002-[https://en.wikipedia.org/wiki/2N7000];
* - DC Fan connected to N-MOSFET Drain terminal, a 12V fan is working fine and quite silently;
* [https://www.tme.eu/en/details/ee40101s1-999-a/dc12v-fans/sunon/ee40101s1-1000u-999/]
*
* ┌─────────────────────┐
* │Fan negative terminal│
* └┬────────────────────┘
* │D
* G │──┘
* [GPIO12]──────┤ │<─┐ 2N7002
* │──┤
* │S
* ─┴─
* GND
*
この図面の、2N7002は単純な「トランジスタ」である。
つまり一言で結論を言うと。
FANを、GPIOでOn/Off制御することしか、考えられていない
そう、もともと「これじゃ制御できないんじゃ・・・」という話、これは正解だった!!!ソフトの対応が足りておりません!!
Kernelから制御するための救いは無いんですか? ⇒ (今のところは)ない。
では、pwm制御する手段はもう作れないのか? そのものずばりな、pwm-fan.dts は無かったですね…。
その代わりに、overlaysを眺めていると、なかなかよさそうなものがあります…
救い1 POEのFAN制御
Raspberry piの
rpi-poe-overlay.dts
これは、RasPiのPower Over Ethernet HATについているFANを制御するためのoverlay。
救い2 PWM制御
これは、RasPiのPWMを制御するためのoverlay。
ということは、これらを組み合わせれば、CPU温度に応じたPWMでのFAN制御がなんとかなりそうな気がするのですが。
というところで、4連休終了で、タイムオーバー!!もうちょっと!!もうちょっとなのですが。