Armadilloフォーラム

HDMIモニタの解像度変更について

urasue

2023年3月30日 19時36分

お世話になっております。
浦末です。

解像度が1280x800のモニタにArmadilloX2を接続したのですが、
800x600の解像度で表示されてしまいます。
※このモニタをWindowsに接続すると1280x800で表示されます。
何か設定が不足していますでしょうか。

/var/app/rollback/volumes/weston_conf/weston.ini

[core]
idle-time=0
use-g2d=1
xwayland=true
repaint-window=16
 
[shell]
panel-position=none
 
[output]
name=HDMI-A-1
mode=1280x900
 
[output]
name=LVDS-1
mode=off

podman logs weston2 の結果

[19:34:15.793] Output HDMI-A-1 (crtc 36) video modes:
               800x600@60.3, current, 40.0 MHz
               800x600@56.2, 36.0 MHz
               640x480@59.9, 25.2 MHz
[19:34:15.793] associating input device event1 with output HDMI-A-1 (none by udev)
[19:34:15.793] Output 'HDMI-A-1' enabled with head(s) HDMI-A-1
[19:34:15.793] Compositor capabilities:
               arbitrary surface rotation: yes
               screen capture uses y-flip: yes
               presentation clock: CLOCK_MONOTONIC, id 1
               presentation clock resolution: 0.000000001 s

/etc/atmark/containers/weston2.conf

ip=192.168.1.106
network=my_network
set_image localhost/weston2:latest
add_devices /dev/dri /dev/galcore /dev/input /dev/tty7  /dev/snd /dev/rtc0 /dev/fb0
add_volumes weston_conf:/etc/xdg/weston
add_volumes /run/udev:/run/udev:ro /opt/firmware:/opt/firmware:ro
add_volumes /tmp/xdg_home:/run/xdg_home
add_volumes data:/data
add_volumes /mnt:/mnt
add_args --env=XDG_RUNTIME_DIR=/run/xdg_home
add_args --env=TZ=Asia/Tokyo
add_args --cap-add=SYS_TTY_CONFIG
add_args --cap-add=SYS_ADMIN
add_args --cap-add=SYS_TIME
set_command weston --tty=7
コメント

溝渕です。

> 解像度が1280x800のモニタにArmadilloX2を接続したのですが、
> 800x600の解像度で表示されてしまいます。
> ※このモニタをWindowsに接続すると1280x800で表示されます。
> 何か設定が不足していますでしょうか。

設定は問題無さそうに見えます。

1280x800が、Armadillo-X2が描画可能なタイミングかどうかを確認したいので、次のコマンドのログをいただけますか?

[container]# apt update
[container]# apt install edid-decode
[container]# edid-decode /sys/devices/platform/display-subsystem/drm/card1/card1-HDMI-A-1/edid

特に、DTD(Detailed Timing Descriptors)で独自のタイミングを指定している場合は描画できない事があるかもしれません。Armadillo-X2で対応しているピクセルクロックは次の通りです。

22250000
23750000
24000000
24024000
25175000
25200000
26750000
27000000
27027000
29500000
30750000
30888000
33750000
35000000
36000000
36036000
40000000
43200000
43243200
44500000
47000000
47500000
50349650
50400000
53250000
53500000
54000000
54054000
59000000
59340659
59400000
61500000
63500000
67500000
70000000
72000000
72072000
74176000
74250000
78500000
80000000
82000000
82500000
89000000
90000000
94000000
95000000
98901099
99000000
100699300
100800000
102500000
104750000
106500000
107000000
108000000
108108000
118000000
118800000
123000000
127000000
135000000
135580000
137520000
138750000
140000000
144000000
148352000
148500000
154000000
157000000
160000000
162000000
164000000
165000000
180000000
185625000
188000000
198000000
205000000
209500000
213000000
216000000
216216000
237600000
254000000
277500000
288000000
297000000
165000000
185625000
198000000
90000000
99000000

お世話になります。浦末です。
以下コマンドの実行結果になります。

root@1043133d0524:/mnt/camera# edid-decode /sys/devices/platform/display-subsystem/drm/card1/card1-HDMI-A-1/edid
edid-decode (hex):
 
00 ff ff ff ff ff ff 00 1c 35 00 0a 01 00 00 00
00 1b 01 03 80 1a 10 78 2a e8 a0 91 59 59 8a 27
22 50 54 2f ce 00 81 00 01 01 01 01 01 01 01 01
01 01 01 01 01 01 bc 1b 00 a0 50 20 17 30 30 20
36 00 05 a3 10 00 00 1a 00 00 00 fc 00 47 46 31
32 41 44 35 2d 30 35 0a 20 20 00 00 00 fd 00 38
4b 1e 3f 0a 00 0a 20 20 20 20 20 20 00 00 00 10
00 0a 20 20 20 20 20 20 20 20 20 20 20 20 00 1e
 
----------------
 
Block 0, Base EDID:
  EDID Structure Version & Revision: 1.3
  Vendor & Product Identification:
    Manufacturer: GAU
    Model: 2560
    Serial Number: 1
    Made in: 2017
  Basic Display Parameters & Features:
    Digital display
    Maximum image size: 26 cm x 16 cm
    Gamma: 2.20
    DPMS levels: Off
    RGB color display
    First detailed timing is the preferred timing
  Color Characteristics:
    Red  : 0.5693, 0.3496
    Green: 0.3496, 0.5390
    Blue : 0.1542, 0.1347
    White: 0.3125, 0.3281
  Established Timings I & II:
    DMT 0x04:   640x480    59.940 Hz   4:3    31.469 kHz  25.175 MHz
    DMT 0x05:   640x480    72.809 Hz   4:3    37.861 kHz  31.500 MHz
    DMT 0x06:   640x480    75.000 Hz   4:3    37.500 kHz  31.500 MHz
    DMT 0x08:   800x600    56.250 Hz   4:3    35.156 kHz  36.000 MHz
    DMT 0x09:   800x600    60.317 Hz   4:3    37.879 kHz  40.000 MHz
    DMT 0x0a:   800x600    72.188 Hz   4:3    48.077 kHz  50.000 MHz
    DMT 0x0b:   800x600    75.000 Hz   4:3    46.875 kHz  49.500 MHz
    DMT 0x10:  1024x768    60.004 Hz   4:3    48.363 kHz  65.000 MHz
    DMT 0x11:  1024x768    70.069 Hz   4:3    56.476 kHz  75.000 MHz
    DMT 0x12:  1024x768    75.029 Hz   4:3    60.023 kHz  78.750 MHz
  Standard Timings:
    DMT 0x1c:  1280x800    59.810 Hz  16:10   49.702 kHz  83.500 MHz
  Detailed Timing Descriptors:
    DTD 1:  1280x800    59.910 Hz   8:5    49.306 kHz  71.000 MHz (261 mm x 163 mm)
                 Hfront   48 Hsync  32 Hback  80 Hpol P
                 Vfront    3 Vsync   6 Vback  14 Vpol N
    Display Product Name: 'GF12AD5-05'
  Display Range Limits:
    Monitor ranges (GTF): 56-75 Hz V, 30-63 kHz H, max dotclock 100 MHz
    Dummy Descriptor:
Checksum: 0x1e

すみません。
weston.ini
mode=1280x900
としておりました。

下記に修正してみたのですが状況は同じでした。
mode=1280x800

溝渕です。

1280x800のタイミングは以下の2つで、

      DMT 0x1c:  1280x800    59.810 Hz  16:10   49.702 kHz  83.500 MHz
      DTD 1:  1280x800    59.910 Hz   8:5    49.306 kHz  71.000 MHz (261 mm x 163 mm)

83.500 MHz(83500000 Hz), 71.000 MHz(71000000 Hz)共に非対応の為に描画できません。

[Armadilloフォーラム: G4 EDIDの固定方法について]
https://armadillo.atmark-techno.com/forum/armadillo/14580

上記を参考にして、適切なタイミングのEDIDで固定化すると描画できる可能性があります。

ディスプレイのタイミングの許容範囲が不明なので動くかどうかわかりませんが、1280x800のタイミングを作ってみたのでサンプルとしてご利用ください。

クロックは元の72MHzに近い71MHzにしてあります。

ファイル ファイルの説明
1280x800.txt Linuxカーネルソースの"tools/edid/"に配置します。拡張子を".txt"から".S"に変更してご利用ください。

浦末です。
ご回答ありがとうございます。
下記の手順で1280x800.binを追加したカーネルを作り直そうとしておりますが、
Imageファイルが生成されず悩んでおります。

wget https://armadillo.atmark-techno.com/files/downloads/alpine/v3.17/atmark/src/linux-at-x2-5.10.175-r0.tar
tar xf linux-at-x2-5.10.175-r0.tar
cd linux-5.10-5.10.175-r0/
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- x2_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
 
1280x800.binをロードするよう変更。
 
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j5
atmark@atde9:~/linux-5.10-5.10.175-r0/arch/arm64/boot$ ls
Makefile  dts  install.sh

ここにImageファイルが出来ていない?

溝渕です。

> Imageファイルが生成されず悩んでおります。

恐らくビルドに失敗しており、エラーログが表示されていると思います。

以下のコマンドのログを送ってもらえますか?

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j5

at_dominique.m…

2023年3月31日 14時58分

urasueさん、

横からすみません、
マルティネです。

> 恐らくビルドに失敗しており、エラーログが表示されていると思います。

-j5 で実行すると、エラーの後にまだ長い出力ありますので、エラーしたことが分かりにくいですね。

今回のエラーは当てているだけですが、もしかしたら「make[4]: *** No rule to make target '/lib/firmware/nxp/pcieuart9098_combo_v1.bin', needed by 'drivers/base/firmware_loader/builtin/nxp/pcieuart9098_combo_v1.bin.gen.o'. Stop.」のようなエラーになると思いますので、「sudo apt update && sudo apt install atmark-firmware」で解決されます。
少し前の atde にあらかじめインストールしていなかったので、最新のマニュアルの準備コマンドを実行しなかった場合にこのエラーになります。

よろしくお願いします。

浦末です。
古いマニュアルを参照しておりました。
そのため、atmark-firmwareが入っておらず、エラーが発生しておりました。
Imageファイルが生成できました。

古い方
sudo apt install crossbuild-essential-arm64 bison flex python3-pycryptodome python3-pyelftools zlib1g-dev libssl-dev bc firmware-misc-nonfree firmware-libertas firmware-atheros wireless-regdb
 
新しい方
sudo apt install crossbuild-essential-arm64 bison flex python3-pycryptodome python3-pyelftools zlib1g-dev libssl-dev bc firmware-misc-nonfree wireless-regdb atmark-firmware
 
 
atmark@atde9:~/linux-5.10-5.10.175-r0/arch/arm64/boot$ ls
Image  Image.gz  Makefile  dts  install.sh

マルティネ様、溝渕様
浦末です。

おかげさまで、1280x800の表示が出来るようになりました。
ありがとうございました。

■カーネル作成

sudo apt install crossbuild-essential-arm64 bison flex python3-pycryptodome python3-pyelftools zlib1g-dev libssl-dev bc firmware-misc-nonfree wireless-regdb atmark-firmware
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- x2_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
 
※DRM_LOAD_EDID_FIRMWAREを有効にする
※edid/800x600.binを追加する
 
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j5

■カーネル更新
swuファイルを作成し、USBメモリへコピー。
armadilloにUSBメモリを挿してカーネルをアップデート。

/usr/share/mkswu/examples/kernel_update_plain.install.sh ~/mkswu/kernel.desc
mkswu ~/mkswu/kernel.desc
cp ~/mkswu/kernel.swu /media/atmark/0cb626de-287b-4042-924c-05ab360827b1/.

■bootパラメータ変更

[armadillo]# vi /boot/uboot_env.d/edid
optargs=quiet drm.edid_firmware=1280x800.bin
 
[armadillo]# persist_file /boot/uboot_env.d/edid
[armadillo]# fw_setenv -s /boot/uboot_env.d/edid
[armadillo]# reboot

■確認

armadillo:/mnt# zcat /proc/config.gz | grep DRM_LOAD_EDID_FIRMWARE
CONFIG_DRM_LOAD_EDID_FIRMWARE=y
 
armadillo:/mnt# dmesg | grep "EDID base block"
[    0.913187] [drm] Got external EDID base block and 0 extensions from "edid/1280x800.bin" for connector "HDMI-A-1"
[    5.106386] [drm] Got external EDID base block and 0 extensions from "edid/1280x800.bin" for connector "HDMI-A-1"
[  136.051189] [drm] Got external EDID base block and 0 extensions from "edid/1280x800.bin" for connector "HDMI-A-1"
[  198.826811] [drm] Got external EDID base block and 0 extensions from "edid/1280x800.bin" for connector "HDMI-A-1"
ファイル ファイルの説明
menu01.jpg カーネル設定 1280x800.binを追加
menu02.jpg DRM_LOAD_EDID_FIRMWARE を有効化

溝渕です。

手順を綺麗に纏めていただいてありがとうございました。同様の問題を持っている方が助かると思います。