Armadilloフォーラム

HDMI再接続時に画面回転設定がリセットされる

ishiz_iwy

2024年3月26日 11時38分

Armadillo-X2にて、Flutterの表示画面を縦画面で使用するため、weston.iniにて画面回転設定を行い使用しています。ディスプレイの電源を切ったり、HDMIケーブルの再接続を行ったりすると、画面設定が元に戻るのか、縦画面表示が解除されてしまいます。対処方法はありますでしょうか。

以下現状の[weston.ini]です。

[core]
idle-time=0
use-g2d=1
xwayland=true
repaint-window=16
 
[shell]
panel-position=none
 
[output]
name=HDMI-A-1
mode=preferred
transform=rotate-270
 
[output]
name=LVDS-1
mode=off
コメント

佐藤です。

こちらでも現象が発生することを確認しました。対応を検討します。
大変申し訳ありませんが修正されるまでは、ディスプレイをつなぎ直した場合は、アプリの再起動、またはarmadillo自体の再起動をお願いします。

佐藤です。

こちらの問題に関しまして、修正の目処がつきましたので、
4月末の定期アップデートにて更新させていただく予定です。

佐藤です。

本日リリースしたバージョン3.19.5にて修正しました。
sudo apt update && sudo apt upgrade
でアップデートした後、再度flutterアプリをビルドして確認してみてください。

佐藤です。

すいません、補足します。
> 本日リリースしたバージョン3.19.5にて修正しました。
> sudo apt update && sudo apt upgrade
> でアップデートした後、再度flutterアプリをビルドして確認してみてください。
上記は、ATDE上で実行してください。

アップデートおよびflutterアプリの再ビルドにより、抜き差し時でも画面が維持できることを確認しました。
ご対応ありがとうございます。

一方、当方の環境ではディスプレイを接続しない状態で起動した場合、設定した解像度での出力ができない(解像度が640x480になる?)のですが、こちらについて対処・対策などはありますか?
weston.iniの設定はmode=prefferedからmode=1920x1080に変更しています。
よろしくお願いいたします。

佐藤です。

> アップデートおよびflutterアプリの再ビルドにより、抜き差し時でも画面が維持できることを確認しました。
> ご対応ありがとうございます。
直ったようで、こちらとしても安心しました。

> 一方、当方の環境ではディスプレイを接続しない状態で起動した場合、設定した解像度での出力ができない(解像度が640x480になる?)のですが、こちらについて対処・対策などはありますか?
> weston.iniの設定はmode=prefferedからmode=1920x1080に変更しています。
> よろしくお願いいたします。
「ディスプレイを接続しない状態で起動」とはarmadillo本体の起動ということでしょうか、またはflutterアプリの起動ということでしょうか。

> 「ディスプレイを接続しない状態で起動」とはarmadillo本体の起動ということでしょうか、またはflutterアプリの起動ということでしょうか。
flutterアプリが起動する際にディスプレイが接続されていなかった場合です。

佐藤です。

flutterアプリはどのように起動していますでしょうか。
VSCodeから起動していますでしょうか、
それともarmadilloにログインしてpodman_startでアプリの入ったコンテナを起動していますでしょうか。

> flutterアプリはどのように起動していますでしょうか。
> VSCodeから起動していますでしょうか、
> それともarmadilloにログインしてpodman_startでアプリの入ったコンテナを起動していますでしょうか。
ご返信ありがとうございます。
どちらから行っても同じような状況なのですが、詳細に検証したところ、ディスプレイの環境依存の可能性が高いことがわかりました。(別種類のモニタでは同時性は発生しない)
再接続時に使用できる解像度(video mode)の認識自体が800x600推奨値へ変更される(もともとは1920x1080)ために発生しているようでした。
Armadillo自体の問題ではないため恐縮ですが、対策として強制的に出力解像度を固定する等が行えないでしょうか?
よろしくお願いいたします。

佐藤です。

> Armadillo自体の問題ではないため恐縮ですが、対策として強制的に出力解像度を固定する等が行えないでしょうか?
> よろしくお願いいたします。
解像度を固定する方法ではないのですが、ディスプレイを接続したときに接続を検出してコンテナを再起動するという方法はどうでしょうか。
これであれば以下の方法で実現できます。
1. 実行用スクリプトを作ります
ファイル名やファイルパス、
<コンテナ名> の部分はご自身のものに置き換えてください。

armadillo:~# vi /root/app_start.sh
#!/bin/sh
 
status=$(cat /sys/class/drm/card1-HDMI-A-1/status)
if [ "$status" = "connected" ]; then
        export PATH;
        podman_start <コンテナ名> &
fi
 
armadillo:~# chmod +x /root/app_start.sh
armadillo:~# persist_file /root/app_start.sh

2. udevのrulesファイルを作ります

armadillo:~# vi /etc/udev/rules.d/10-monitor-hotplug.rules
ACTION=="change", SUBSYSTEM=="drm", RUN+="/root/app_start.sh"
 
armadillo:~# persist_file /etc/udev/rules.d/10-monitor-hotplug.rules

これで、ディスプレイを接続した時にコンテナが起動するようになると思います。