Open1

[記事未満] Linuxで画面解像度設定を追加する

mnodmnod

4Kのディスプレイを左右2分割で利用し、片側に Raspberry Pi 3B+の画面を表示したい。3840x2160(16:9) を左右2分割するので、1画面につき 1920x2160(8:9) の縦長画面となる。

Raspberry Pi OS Lite に xorg 等最低限の Xディスプレイ関連パッケージだけインストールしたような環境なので、素敵なGUIツールは無い状態。

通常通り接続してディスプレイを左右2分割モードにすると、1920x1080 の解像度のままで横幅が圧縮されて表示されるので、とても見づらい。
これを縦長画面で表示させたい。

環境については下記のとおり。

$ grep Model /proc/cpuinfo 
Model		: Raspberry Pi 3 Model B Plus Rev 1.3

$ uname -a
Linux doorcamera 5.10.92-v7+ #1514 SMP Mon Jan 17 17:36:39 GMT 2022 armv7l GNU/Linux

$ cat /etc/os-release 
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

xrandr コマンドで状態を確認する。
標準では希望する解像度設定はないので、設定を追加してあげる。

$ xrandr 
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 2048 x 2048
HDMI-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 620mm x 350mm
   1920x1080     60.00*   50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1600x900      60.00  
   1280x1024     75.02  
   1440x900      59.90  
   1280x800      59.91  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    70.07    60.00  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x576i      50.00  
   720x480       60.00    59.94  
   720x480i      60.00    59.94  
   640x480       75.00    72.81    60.00    59.94  
   720x400       70.08  

Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 2048 x 2048 とあり、最大解像度が2048 x 2048となっている。

この範囲で収まる画面解像度設定を取得する。

$ gtf 1820 2048  60

  # 1824x2048 @ 60.00 Hz (GTF) hsync: 127.14 kHz; pclk: 321.41 MHz
  Modeline "1824x2048_60.00"  321.41  1824 1976 2176 2528  2048 2049 2052 2119  -HSync +Vsync

設定を追加する

$ xrandr --newmode '1824x2048_60.00' 321.41  1824 1976 2176 2528  2048 2049 2052 2119  -HSync +Vsync
$ xrandr --addmode HDMI-1 1824x2048_60.00

画面に適用する

$ xrandr --output HDMI-1 --mode 1824x2048_60.00
xrandr: Configure crtc 0 failed

ここではエラーになった。画面の出力も変わらない。
下記のように、設定は追加されてはいる。

$ xrandr 
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 2048 x 2048
HDMI-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 620mm x 350mm
   1920x1080     60.00*   50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1600x900      60.00  
   1280x1024     75.02  
   1440x900      59.90  
   1280x800      59.91  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    70.07    60.00  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x576i      50.00  
   720x480       60.00    59.94  
   720x480i      60.00    59.94  
   640x480       75.00    72.81    60.00    59.94  
   720x400       70.08  
   1824x2048_60.00  60.00  

気を取り直して、リフレッシュレート30でやり直してみる。

$ gtf 1820 2048  30

  # 1824x2048 @ 30.00 Hz (GTF) hsync: 62.49 kHz; pclk: 151.98 MHz
  Modeline "1824x2048_30.00"  151.98  1824 1936 2128 2432  2048 2049 2052 2083  -HSync +Vsync

$ xrandr --newmode '1824x2048_30.00' 151.98  1824 1936 2128 2432  2048 2049 2052 2083  -HSync +Vsync
$ xrandr --addmode HDMI-1 1824x2048_30.00
$ xrandr --output HDMI-1 --mode 1824x2048_30.00

画面が縦長(8:9)で表示されるようになった。
結果は以下の通り。

$ xrandr 
Screen 0: minimum 320 x 200, current 1824 x 2048, maximum 2048 x 2048
HDMI-1 connected primary 1824x2048+0+0 (normal left inverted right x axis y axis) 620mm x 350mm
   1920x1080     60.00    50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1600x900      60.00  
   1280x1024     75.02  
   1440x900      59.90  
   1280x800      59.91  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    70.07    60.00  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x576i      50.00  
   720x480       60.00    59.94  
   720x480i      60.00    59.94  
   640x480       75.00    72.81    60.00    59.94  
   720x400       70.08  
   1824x2048_60.00  60.00  
   1824x2048_30.00  30.00* 

不要な設定を削除する。

$ xrandr --delmode HDMI-1 1824x2048_60.00
$ xrandr --rmmode 1824x2048_60.00
$ xrandr 
Screen 0: minimum 320 x 200, current 1824 x 2048, maximum 2048 x 2048
HDMI-1 connected primary 1824x2048+0+0 (normal left inverted right x axis y axis) 620mm x 350mm
   1920x1080     60.00    50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1680x1050     59.88  
   1600x900      60.00  
   1280x1024     75.02  
   1440x900      59.90  
   1280x800      59.91  
   1280x720      60.00    50.00    59.94  
   1024x768      75.03    70.07    60.00  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x576i      50.00  
   720x480       60.00    59.94  
   720x480i      60.00    59.94  
   640x480       75.00    72.81    60.00    59.94  
   720x400       70.08  
   1824x2048_30.00  30.00* 

再起動すると設定が消える。