TouchDisplay2ってUbuntuでも大丈夫? -3-

 もうちょっと新しいUbuntuでやってみるとマシになっているのじゃないかと、25.10を焼いてみる。

 Imagerでのユーザー設定などには相変わらず対応していない。面倒だけど、HDMIとキーボード・マウスを接続して初期設定を行う。RaspiOSに比べて起動も遅い感じ。

 が、なんかSplashのあとには左上のカーソルだけの画面が出るばかりで、インストール画面には至らない。カーソルが点滅しているとなんかしているのだと思うけど、しばらくするとそれも動きがなくなってしまった。しばらく放置してみたけど変化なし。なんだそれ? リモート接続もできないので、これで詰んだ状態だわ。

 念の為、もう一回焼いてみたけど、結果は同じ。こんなイメージを公開してるって、どゆこと? みなさんLTSしか使っていないのかしらん?

 しょうがないので、25.04を焼く。リリースは2025-04-17。

 起動はした。DSIには自動対応していない模様。HDMIディスプレイのデフォルト解像度も1024x768と、25.10より高く設定されている。

 途中のパッケージアップデートが進捗状況がわからないので、NICの点滅を見て動いているのを確認するというのが面倒だ。

 端末を起動して、IPアドレスを調べて、ssh接続をしてみる。sshdは動いていない。

% ssh kinneko@192.168.0.13

ssh: connect to host 192.168.0.13 port 22: Connection refused

 openssh-serverをインストールする。

 ssh接続ができたので、画面キャプチャできるソフトを入れる。

kinneko@pi4:~$ gnome-screenshot

 コマンド 'gnome-screenshot' が見つかりません。次の方法でインストールできます:

sudo apt install gnome-screenshot

kinneko@pi4:~$ sudo apt install gnome-screenshot

kinneko@pi4:~$ gnome-screenshot -f desk2-1.png

 なんか、こいつもキャプチャの縦横比がおかしい。

 DSI関連のドライバはどちらも読み込まれていない。

kinneko@pi4:~$ lsmod | grep ili9881

kinneko@pi4:~$ lsmod | grep goodix

 config.gzが入っていない構成なのもおなじ。

kinneko@pi4:~$ zgrep GOODIX /proc/config.gz

gzip: /proc/config.gz: No such file or directory

 おっ、こっちは24.04.3 LTSにはなかったタッチ用のドライバのバリエーションがモジュールになっている。期待できるかも。

kinneko@pi4:~$ grep -i GOODIX /boot/config-$(uname -r)

CONFIG_TOUCHSCREEN_GOODIX=m
CONFIG_TOUCHSCREEN_GOODIX_BERLIN_CORE=m
CONFIG_TOUCHSCREEN_GOODIX_BERLIN_I2C=m
CONFIG_TOUCHSCREEN_GOODIX_BERLIN_SPI=m
CONFIG_HID_GOODIX_SPI=m
CONFIG_I2C_HID_OF_GOODIX=m

kinneko@pi4:~$ grep -i 9881 /boot/config-$(uname -r)

CONFIG_DRM_PANEL_ILITEK_ILI9881C=m

 config.txtには、デフォルトで以下のような設定になっているけど、DSIの自動認識はされているのだろうかな?

dtparam=i2c_arm=on
dtoverlay=vc4-kms-v3d
disable_fw_kms_setup=1
display_auto_detect=1

 とりあえず、ディスプレイを追加して再起動してみる。

kinneko@pi4:~$ sudo vi /boot/firmware/config.txt

[pi4]
dtoverlay=vc4-kms-dsi-ili9881-5inch

 表示された。しかし、同時に接続されているHDMIのほうには表示が出なくなった。ログインの画面が出ていて、「アカウントが見つかりません」と表示されている。デフォルトのユーザーが見つからない? 表示されているアカウントをクリックして、パスワードを入れると起動してきた。スクリーンキャプチャしたら、HDMIのほうも表示されるようになった。

 ドライバはロードされている模様。すばらしい!

kinneko@pi4:~$ lsmod | grep ili9881

panel_ilitek_ili9881c 32768 0

kinneko@pi4:~$ lsmod | grep goodix

goodix_ts 32768 0

 タッチも有効になっている。

 HDMIを引っこ抜くと、動的な再構成が行われて、HDMI側はオフになった。再起度はいらない。すばらしい!

 しばらく放置すると画面がスリープしたのだけど、タッチで復帰しないようだ。うーん。

Ubuntu-frame not re-activating after idle-timeout using a touchscreen - snap - snapcraft.io

https://forum.snapcraft.io/t/ubuntu-frame-not-re-activating-after-idle-timeout-using-a-touchscreen/38089

 Mir/Ubuntu-frameではなく、普通にWaylandだった。

$ echo $XDG_SESSION_TYPE

Wayland

kinneko@pi4:~$ grep -H . /sys/class/input/event*/device/name

/sys/class/input/event0/device/name:SEM USB Keyboard
/sys/class/input/event1/device/name:SEM USB Keyboard Consumer Control
/sys/class/input/event2/device/name:Logitech Wireless Mouse PID:1020
/sys/class/input/event3/device/name:SEM USB Keyboard System Control
/sys/class/input/event4/device/name:10-005d Goodix Capacitive TouchScreen
/sys/class/input/event5/device/name:vc4-hdmi-0
/sys/class/input/event6/device/name:vc4-hdmi-0 HDMI Jack
/sys/class/input/event7/device/name:vc4-hdmi-1
/sys/class/input/event8/device/name:vc4-hdmi-1 HDMI Jack

 このデバイスはサスペンド時のウェイクアップソースとして登録されていないということね。

kinneko@pi4:~$ cat /sys/class/input/event4/device/power/wakeup

 cat: /sys/class/input/event4/device/power/wakeup: そのようなファイルやディレクトリはありません

 他にそれっぽいのもない感じ。

kinneko@pi4:~$ ls /sys/class/input/event4/device/power/

autosuspend_delay_ms runtime_active_time runtime_suspended_time

control runtime_enabled runtime_usage

runtime_active_kids runtime_status

 ソースを見てもダメっぽい。device_init_wakeup()やenable_irq_wake()を呼んでない。

goodix.c source code [linux/drivers/input/touchscreen/goodix.c] - Codebrowser

https://codebrowser.dev/linux/linux/drivers/input/touchscreen/goodix.c.html

 RaspiOSでは独自に拡張をやっているのか、それともスリープしたことないから私が気がついてないという話もあるな。調べるか... goodix.cを見てみたけれど、同じくスリープからの復帰には対応できていないようだ。

 RaspiOSでのスリープは、DPMS(Display Power Management Signaling)で、バックライト電源を落としているだけなのかも。

 今回の想定用途的には、スリープする必要がないので、全体に無効化する。

 Ubuntuでスリープを制御しているサービスを停止する。

kinneko@pi4:~$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

Created symlink '/etc/systemd/system/sleep.target' → '/dev/null'.

Created symlink '/etc/systemd/system/suspend.target' → '/dev/null'.

Created symlink '/etc/systemd/system/hibernate.target' → '/dev/null'.

Created symlink '/etc/systemd/system/hybrid-sleep.target' → '/dev/null'.

 再起動をして放置してみる。

 しばらくすると1段階画面が暗くなった。

 あー、スリープしちゃった...

 タッチでは復帰できない... というか、画面が一段暗くなった時点で、もうタッチできない。

 たぶん、GNOMEのほうでスリープを呼んでいるのだろうな...

 GNOMEの設定を調べる。

 GNOME の「アイドル時間(秒)」は300秒(5分)に設定されている。

kinneko@pi4:~$ gsettings get org.gnome.desktop.session idle-delay

uint32 300

 この時間を0にするとスリープしないのかな。

kinneko@pi4:~$ gsettings set org.gnome.desktop.session idle-delay 0

kinneko@pi4:~$ gsettings get org.gnome.desktop.session idle-delay

uint32 0

 ダメだった。画面が暗くなるので、タッチを受け付けなくなる。

 AC電源供給時の自動サスペンドの設定を見る。これかな。

kinneko@pi4:~$ gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type

'suspend'

 無効化する。

kinneko@pi4:~$ gsettings set org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type 'nothing'

kinneko@pi4:~$ gsettings get org.gnome.settings-daemon.plugins.power sleep-inactive-ac-type

'nothing'

 画面が一段暗くなるのは制御できていない。そうなるとタッチも使えない。

 画面ブランク直前のディマー(画面減光)が有効になっている?

kinneko@pi4:~$ gsettings get org.gnome.settings-daemon.plugins.power idle-dim

true

 無効化する。

kinneko@pi4:~$ gsettings set org.gnome.settings-daemon.plugins.power idle-dim false

kinneko@pi4:~$ gsettings get org.gnome.settings-daemon.plugins.power idle-dim

false

 これでようやくスリープしなくなった。

 というわけで、24.04ではサポートできなかったDSIディスプレイが、25.04では多少の設定はいるが対応できることがわかった。スリープからの復帰はできないので、対策しておく必要がある。


オリジナル投稿:
TouchDisplay2ってUbuntuでも大丈夫? -3-|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/10786965