Unknown Display in Linux Mint
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では問題なく動作しているため、この点は不思議なままでした。