homehome

Unknown Display in Linux Mint

Published

Linux Mint 21で2024年の5月頃にカーネルのアップデートをしたぐらいから、VGAで接続しているモニターの解像度が1024×768pxで固定化されてしまう問題が発生していました。常に起こるわけではなく、なおかつ縦置きのサブモニターのため問題を放置していました。

このたび新しいLinux環境を作成するためにライブUSBをブートしたところ、同様の問題が発生したため、これに対処することにしました。

解決方法

まず、トラブル中のモニター情報を取得します。以下では、問題にあっているのがVGA-1の接続モニターであるのがわかります。

$ xrandr
Screen 0: minimum 320 x 200, current 3328 x 1440, maximum 16384 x 16384
VGA-1 connected primary 768x1024+0+0 left (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768      60.00* 
   800x600       60.32    56.25  
   848x480       60.00  
   640x480       59.94  
...
以下略

cvtに本来のモニターの解像度と周波数を指定して実行します。ここでは1680×1050px 60Hzのモニターを意味します。

$ cvt 1680 1050 60
# 1680x1050 59.95 Hz (CVT 1.76MA) hsync: 65.29 kHz; pclk: 146.25 MHz
Modeline "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

上記の結果の2行目をxrandr --newmodeの後ろにペーストして実行します。

# 解像度を定義する
xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

xrandr --addmodeに出力ポートと解像度と周波数のペアを渡します。

# 表示モードの追加
xrandr --addmode VGA-1 "1680x1050_60.00"

xrandr --outputに同様の値を渡します。

# 追加した解像度を適用する
xrandr --output VGA-1 --mode 1680x1050_60.00

これでモニターの解像度が指定のものになります。ただし、この一連のコマンドは一時的なものであり、OSを再起動するとリセットされます。

もしこの手順で解決ができたならば、.profileに前述のコマンドを追加します。これで以後はログイン毎にコマンドを実行する必要はなくなります。

# ~/.profile
xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
xrandr --addmode VGA-1 "1680x1050_60.00"
xrandr --output VGA-1 --mode 1680x1050_60.00

根本的な解決ではないですが、これで解像度には対処できました。

備考

カーネルにパラメータを渡す方法もあります。

例えば、drm.edid_firmware=VGA-1:edid/1680x1050.binをカーネルパラメータとして追加します。一時的にカーネルパラメータを渡すには、GRUB画面でeを押せば編集画面に飛べます。しかし、この方法は自分の環境では動作しませんでした。

また、xrandr --queryの出力結果にEDID情報(モニターはEDIDを通じて解像度やリフレッシュレートなどの情報を機器側に伝えます)がないため、今回試した方法は解像度以外の情報は正しく伝えられていない可能性がある点に注意が必要です。

EDIDがロストしてるというのは、ハード面のトラブルの可能性が高いらしいのですが、デュアルブートで起動するWindowsでは問題なく動作しているため、この点は不思議なままでした。