Ubuntu 调整扩展显示器的分辨率

由于工作原因,需要经常输出各种信号格式的 HDMI 信号,而 HDMI generator 价格昂贵,对于我们公司来说是稀缺资源,所以多数情况下直接使用笔记本作为 HDMI generator。

最简单的调试分配率的方法应该是使用图像界面:System Settings->Displays,但是它只能调整简单的参数,所以还得使用命令行才行。

查看系统当前分辨率

查看系统当前的信号输出情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
work@ubuntu:~/sigma/sx7$ xrandr
Screen 0: minimum 8 x 8, current 3520 x 1080, maximum 32767 x 32767
eDP1 connected primary 1600x900+0+0 (normal left inverted right x axis y axis) 309mm x 174mm
1600x900 60.01*+ 40.00
1440x900 59.89
1368x768 60.00
1360x768 59.80 59.96
1152x864 60.00
1280x720 60.00
1024x768 60.00
1024x576 60.00
960x540 60.00
800x600 60.32 56.25
864x486 60.00
800x450 60.00
640x480 59.94
720x405 60.00
640x360 60.00
DP1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+1600+0 (normal left inverted right x axis y axis) 1096mm x 616mm
3840x2160 30.00 + 24.00 29.97 23.98
4096x2160 24.00 23.98
1920x1080 60.00 59.94 30.00 24.00 29.97 23.98
1920x1080i 60.00* 59.94
1280x720 60.00 59.94
1024x768 75.08 70.07 60.00
800x600 72.19 75.00 60.32
720x480 60.00 59.94
720x480i 60.00 59.94
640x480 75.00 60.00 59.94
720x400 70.08

我们可以看到系统当前结了两个显示器:

  • eDP1:即笔记本当前原生的屏幕。当前分辨率是 1600x900p@60.01Hz
  • HDMI1:通过HDMI接口外接的显示器。当前的分辨率是 1920x1080i@60.00Hz

我们还需要关注前两列,其中第一列是分辨率,第二列是刷新率(即帧率)。

改变已有分配率

如果我们想让 HDMI1 接口输出 3840x2160@30Hz的分辨率,只需要一个命令:

1
$ xrandr --output HDMI1 --mode "3840x2160"

其中 —output 指定输出接口是 HDMI1,—mode 指定需要输出的分辨率(即第一的内容)。

新增分辨率

那么如果我们需要输出 1920x1080@30Hz 的分辨率呢?发现上面的列表中并没有这一项。我们需要完成额外的步骤:

1
2
3
$ cvt 1920 1080 30
[# 1920x1080 29.95 Hz (CVT) hsync: 33.01 kHz; pclk: 79.75 MHz
Modeline "1920x1080_30.00" 79.75 1920 1976 2168 2416 1080 1083 1088 1102 -hsync +vsync

1
2
3
4
$ xrandr --newmode "1920x1080_30.00"   79.75  1920 1976 2168 2416  1080 1083 1088 1102 -hsync +vsync
$ xrandr --addmode HDMI1 "1920_1080_24.00"

$ xrandr --output HDMI1 --mode "1920x1080_24.00"