モブ沢工房

プログラミングとかLinux関連(特にOSSのグラフィックツール関連)とかレトロゲームとか3Dプリンタやら日曜大工等、色々。

fbcp-ili9341で省電力を無効化する方法

先日の記事に追記でも良かったのですが、検索でも中々出てこない事のようなので取り敢えず記事にしておきます。

Raspberry Piでfbcp-ili9341を普通にビルドすると、独自の省電力機能がonになっています。画面の更新が行われない時間が一定期間あると、キーボードで復帰する必要があるのです。

つまりfbcpのものは、は、x11やwaylandやscreensaverとは別の原因です。

でもx11やらwaylandやらデスクトップ環境の省電力設定も、処置しておく必要があるのではないかと思います。多分…😅 実は、双方の処置を一辺にやってしまったので、実際どうなのか。未検証ですが…

ともかくそんなわけで、まず取り敢えずデスクトップの方の処置も備忘録的に記しておきます。

デスクトップの設定で省電力を停止

raspi-config -> Display Optnions -> Screen Blanking でoffに設定しておきます。これでOK。GUIの方からも出来る?っぽいですが、これが楽です。

fbcp-ili9341の設定

さて、これをやろうが、検索すると出てくる通常のxsetを使った設定などをしても、前述のようにfbcp-ili9341では独自の省電力機能を持っているために、意味がないのです。

これを止めるには、fbcp-ili9341のconfig.hを編集してビルドしなおす必要があります。ソースの変更なので、一度行ったcmake設定は関係ないため、cmakeの実行は不要です。

config.hの中にTURN_DISPLAY_OFF_AFTER_USECS_OF_INACTIVITYをdefine している部分が211行目ぐらいにあります。それをコメントアウトします。キーボードを読んでいる事自体が気に入らない…という場合は 同じセクションにあるBACKLIGHT_CONTROL_FROM_KEYBOARD と KEYBOARD_INPUT_FILE もコメントアウトしてしまって良いかと思います。

(バックライトのコントロール自体要らないのであれば、ソースを書き換えずともcmakeの設定オプションで -DBACKLIGHT_CONTROL=0で良いのかもしれません。(未検証) )

// If enabled, the display backlight will be turned off after this many usecs of no activity on screen.
//#define TURN_DISPLAY_OFF_AFTER_USECS_OF_INACTIVITY (1 * 60 * 1000000)

そして、ビルドすれば省電力機能のないfbcpドライバが完成です。

あっもちろん、省電力自体は欲しいけど短すぎるんよ…って時は コメントアウトではなく、このμsec単位の待ち時間部分を書き換えればOKだと思います。1分は短いですよねさすがに😅

ではでは!