无法使用 xrandr 更改分辨率

无法使用 xrandr 更改分辨率

我正在尝试使用 xrandr 切换屏幕分辨率。我已输出可用模式,xrandr -q输出内容如下:

屏幕 0:最小 8 x 8,当前 1920 x 1080,最大 32767 x 32767
eDP-1-1 连接主 1920x1080+0+0(正常左反转右 x 轴 y 轴)346mm x 194mm
   3840x2160 60.00 +
   2048x1536 60.00  
   1920x1440 60.00  
   1856x1392 60.01  
   1792x1344 60.01  
   1920x1200 59.95  
   1920x1080 59.93*
   1600x1200 60.00  
   1680x1050 59.95 59.88  
   1600x1024 60.17  
   1400x1050 59.98  
   1280x1024 60.02  
   1440x900 59.89  
   1280x960 60.00  
   1360x768 59.80 59.96  
   1152x864 60.00  
   1024x768 60.04 60.00  
   960x720 60.00  
   928x696 60.05  
   896x672 60.01  
   960x600 60.00  
   960x540 59.99  
   800x600 60.00 60.32 56.25  
   840x525 60.01 59.88  
   800x512 60.17  
   700x525 59.98  
   640x512 60.02  
   720x450 59.89  
   640x480 60.00 59.94  
   680x384 59.80 59.96  
   576x432 60.06  
   512x384 60.00  
   400x300 60.32 56.34  
   320x240 60.05  
DP-1-1断开(正常左反转右x轴y轴)
HDMI-1-1 断开(正常左反转右 x 轴 y 轴)
DP-1-2 断开(正常左反转右 x 轴 y 轴)
HDMI-1-2 断开连接(正常左反转右 x 轴 y 轴)

如您所见,我当前处于 1920x1080 分辨率,我正尝试切换到首选分辨率 3840x2160。因此,我尝试切换:

$ xrandr -s 3840x2160
在可用模式中未找到尺寸 3840x2160

我尝试过通过索引切换:

$ xrandr -s 1
尺码索引 1 太大,只有 1 个尺码

我尝试添加屏幕名称,--screen 0:但结果并没有改变。

我是否遗漏了什么或者做错了什么?

答案1

好吧,我明白了我遗漏了什么,它需要--output eDP-1-1。仍然不太清楚为什么没有暗示这一点,以及当我遗漏它时在做什么,但它现在可以工作了。

答案2

我不明白这个故障是怎么发生的。

这似乎可以通过 重置--auto;没有其他方法起作用,这是一个简单的单行修复:

$ sudo xrandr --output eDP-1-1 --auto

Ubuntu 19.10

答案3

可能的答案(对我有用):

列出的模式xrandr是假的,您必须像平常一样手动添加模式行。请注意 xrandr 的输出:

$ xrandr
eDP-1-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 346mm x 194mm
   3840x2160     60.00 +
   2048x1536     60.00  
   ...

(我们知道 eDP-1-1 是笔记本电脑屏幕,因为它显示“已连接”,而其他的都已断开连接)

注意数字3840216060.00(水平像素、垂直像素、刷新率)。使用大多数发行版预装的数学模式行计算器来计算模式行:

$ cvt 3840 2160 60.00
# 3840x2160 59.98 Hz (CVT 8.29M9) hsync: 134.18 kHz; pclk: 712.75 MHz
Modeline "3840x2160_60.00"  712.75  3840 4160 4576 5312  2160 2163 2168 2237 -hsync +vsync

复制此突出显示的部分(忽略“Modeline”):

模式线"3840x2160_60.00" 712.75 3840 4160 4576 5312 2160 2163 2168 2237 -hsync +vsync

给予模式行任意名称;我们将3840x2160_60.00在下面的示例中使用名称,但是如果您愿意,也可以更改它。但请注意,如果你有使用 LibGDX 的游戏或软件,比如一些 Steam 游戏,您可能需要删除下划线和/或句点,以避免出现 LibGDX 错误我们现在将其声明为不附加任何特定输出的模式行,只需复制粘贴上面突出显示的部分,并在前面添加xrandr --newmode

xrandr --newmode "3840x2400_60.00"  712.75  3840 4160 4576 5312  2160 2163 2168 2237 -hsync +vsync

现在我们将模式行添加到特定的输出,请man xrandr参见--addmode OUTPUT MODENAME

xrandr --addmode 3840x2400_60.00

现在,模式行应该出现在相应输出的底部,并带有xrandr( -q)(您可能会发现 grep 有助于确认是否有许多模式行)。现在进行交换,xrandr:

(sudo???) xrandr --output eDP-1-1 --mode "3840x2400_60.00"

xrandr 不应该需要 sudo 权限 ( sudo xrandr --output ...),但出于某种原因,没有 sudo 它将无法工作。最好避免这种情况。如果有人知道原因,例如可能是 nvidia-drm.modeset 内核标志,请随时发表评论。

如果您无法将模式行添加到您的 xorg.conf(使其永久化的正常方法),您可以尝试另一种方法使其永久化(我不确定如何操作,但可能取决于您的窗口管理器)。


背景:

事实上,我注意到xrandr-q)会宣传类似您帖子中的模式:

Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
eDP-1-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 346mm x 194mm
   3840x2160     60.00 +
   2048x1536     60.00  

...并且无法切换到它们(没有错误消息,与您的示例不同):

$ xrandr -s 3840x2160
 [no output, seems successful but is not]

我有一块专用的独立显卡 (dGPU) 作为笔记本电脑显示器的提供者 (?)(而不是 iGPU(集成 GPU),例如运行 Xorg 的英特尔)。具体来说,我的 xorg.conf 如下:

Section "ServerLayout"
    Identifier "layout"
    Screen 0 "nvidia"
    Inactive "intel"
EndSection

Section "Device"
    Identifier "nvidia"
    Driver "nvidia"
    BusID "PCI:1:0:0"
EndSection

Section "Screen"
    Identifier "nvidia"
    Device "nvidia"
    Option "AllowEmptyInitialConfiguration"
EndSection

Section "Device"
    Identifier "intel"
    Driver "modesetting"
    BusID "PCI:0:2:0"
    #Option "AccelMethod" "none"
EndSection

Section "Screen"
    Identifier "intel"
    Device "intel"
EndSection

我认为我的 dGPU 通过 BIOS 设置直接连接到屏幕。

我的 xrandr 版本如下:

% xrandr --version
xrandr program version       1.5.0
Server reports RandR version 1.6

我用上面写的答案(2023 年中)解决了这种情况。

相关内容