笔记本电脑运行Debian和LinuxMint,发现设置里都缺少1600×900这个分辨率选项

如题,用笔记本电脑运行 Linux Mint 22.1 Xia(64 位,Xorg,MATE 桌面环境)、Debian 12.11.0(64 位,Xorg,XFCE 桌面环境)以及 Fedora(64位,Wayland,GNOME 桌面环境),发现分辨率选项里都没有 1600 × 900 这个分辨率选项。但同样运行在这台电脑的 Windows 11 中是有这个分辨率的。

请问这可能是哪些原因造成的?是否有办法添加这个分辨率呢?

系统详细信息:

  • 笔记本电脑型号: 荣耀MagicBook 14 锐龙版
  • 显卡型号:无独立显卡。集成显卡是 AMD ATI 03:00.0 Lucienne
  • 操作系统:Linux Mint 22.1 Xia(64 位,MATE 版)
  • xrandr 命令输出:
Screen 0: minimum 320 x 200, current 1280 x 720, maximum 16384 x 16384
eDP connected primary 1280x720+0+0 (normal left inverted right x axis y axis) 309mm x 173mm
   1920x1080     60.00 +
   1680x1050     60.00  
   1280x1024     60.00  
   1440x900      60.00  
   1280x800      60.00  
   1280x720      60.00* 
   1024x768      60.00  
   800x600       60.00  
   640x480       60.00  
HDMI-A-0 disconnected (normal left inverted right x axis y axis)

目前尝试过的方法是使用 cvt 命令添加自定义分辨率,但不成功。具体情况如下:

依次执行命令:

$ cvt 1600 900
# 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz
Modeline "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
$ sudo xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync    
$ sudo xrandr --addmode eDP "1600x900_60.00"

接下来再运行 xrandr -q,可以看到新增加的分辨率,但是刷新率和内置的那些分辨率选项不一样:

$ xrandr -q
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 16384 x 16384
eDP connected primary 1440x900+0+0 (normal left inverted right x axis y axis) 309mm x 173mm
   1920x1080     60.00 +
   1680x1050     60.00  
   1280x1024     60.00  
   1440x900      60.00* 
   1280x800      60.00  
   1280x720      60.00  
   1024x768      60.00  
   800x600       60.00  
   640x480       60.00  
   1600x900_60.00  59.95  
HDMI-A-0 disconnected (normal left inverted right x axis y axis)

接下来,到系统设置里面修改分辨率为新增的 1600x900,电脑就会黑屏,同时键盘上的指示灯也会熄灭。必须按 Ctrl + Alt + Backspace 重启 X。

我的1080p的显示器(amd7700核显机)有1600x900,4k电视(12100核显机)倒是没有。

谢谢。看起来或许是显示器本身的问题吧。据说有些显卡的作工有问题,会导致系统无法识别其型号,进而无法使用某些分辨率。

问题解决了,是无意间试出来的,原理暂时没想明白,感觉可能是和 AMD 显卡的 GPU 显示缩放功能有关。具体操作如下,使用 AMD 集显的朋友或许可以参考一下:

1. 终端执行命令 cvt [长像素] [宽像素],计算自定义分辨率的 modeline。

比如,我需要添加分辨率 1600 × 900,则需要执行

cvt 1600 900

然后会看到如下输出:

# 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz
Modeline "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync

复制其中的 “1600x900_60.00” 及后面的部分,备用。在本案例中,我们要复制的部分是:

"1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync

2. 编辑 ~/.xprofile,修改用户的显示设置

编辑自己的主文件夹下的 .xprofile,在文件最后加入如下三行:

xrandr --output eDP --set "scaling mode" "Full aspect"
xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
xrandr --addmode eDP "1600x900_60.00"

这三行的含义分别为:

  • xrandr --output eDP --set "scaling mode" "Full aspect"
    设置显示器的 GPU 缩放模式为 Full aspect。之前我提到的无法添加自定义分辨率,应该是因为系统默认的 GPU 缩放模式有问题。改成 Full aspect 就没问题了。
  • xrandr --newmode "1600x900_60.00" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync
    新建一个自定义分辨率,其中的 "1600x900_60.00",就是第 1 步中我们复制的 cvt 命令的计算结果。
  • xrandr --addmode eDP "1600x900_60.00"
    将新建的分辨率添加给显示器 eDP,也就是我们目前正在使用的显示器。

当前正在使用的显示器的名称可在终端执行命令 xrandr 来查询。比如,我这边的输出结果是:

Screen 0: minimum 320 x 200, current 1600 x 900, maximum 16384 x 16384
eDP connected primary 1600x900+0+0 (normal left inverted right x axis y axis) 309mm x 173mm
   1920x1080     60.00 +
   1680x1050     60.00  
   1280x1024     60.00  
   1440x900      60.00  
   1280x800      60.00  
   1280x720      60.00  
   1024x768      60.00  
   800x600       60.00  
   640x480       60.00  
   1600x900_60.00  59.95* 
HDMI-A-0 disconnected (normal left inverted right x axis y axis)

第 2 行开头的 eDP 就是当前显示器的名称。

3. 应用分辨率

先注销,再重新登录,让刚刚编辑的 .xprofile 中的设置生效。

然后,打开你的桌面环境的显示设置功能进行调整,或终端执行如下命令:

xrandr --output eDP --mode "1600x900_60.00"

未竟事项

目前,这个方法还存在两个问题:

  1. 只对单个用户生效。这里我只修改了当前用户的主文件夹下的 .xprofile,这些显示设置对其他用户是无效的。
  2. 对 LightDM 不生效。我曾尝试将上述设置写入 /etc/profile,希望这些设置能在系统全局生效。但会造成 LightDM 无法正常启动。

参考资料

Windows那边有这个分辨率吗

同一台电脑上,Windows 11 系统中能看到 1600 × 900 这个分辨率,但多个 Linux 发行版(LinuxMint、Debian、Fedora),无论是在 Xorg 下还是 Wayland 下,都识别不出这个分辨率,只能手动添加。

按理来说应当能自动显示,我看你的方法是自定义的?这个问题应该不影响吧,没有谁会故意降低分辨率使用吧

:rofl:

影响很大。我那个笔记本屏幕比较小,默认的 1920 × 1080 分辨率对我而言太大了,很多字和控件看起来非常小,很累眼睛。如果调大字体、或者调高字体的 DPI,文字是变大了,但控件没有变大,非常不协调。而且很多应用程序对 HiDPI 的适配不佳,调整 DPI 会造成各种各样的问题。

另外,虽然 Xorg 和 Wayland 都支持非整数倍缩放,但 Xorg 启用非整数倍缩放后,画面容易变得模糊(这似乎是 Xorg 自身的问题)。Wayland 那边好一点,但我目前要用的一些应用程序在 Wayland 下还无法正常工作。

1 个赞

用的AMD哪个驱动

应该是 amdgpu 吧?我没有安装过其他驱动。(纯新手,对驱动这些不太了解,描述可能不准确,请见谅)

你可以用下面几个简单命令查看当前用的是哪个 AMD 驱动:

  1. 查看显卡及驱动模块:
    lspci -k | grep -A 3 -E “(VGA|3D)”

输出会显示你的AMD显卡信息和当前绑定的驱动名是什么,通常是 amdgpu 或 radeon。

  1. 查看内核日志中驱动加载情况:
    dmesg | grep amdgpu

如果显示amdgpu相关信息,说明系统正在使用amdgpu驱动。

  1. 如果你安装了 AMD 官方驱动,可以试试:
    amdconfig --adapter=all --odgc

(有的系统没装这个命令)

1 个赞

谢谢,等有空的时候我看一看。(那台电脑是实验室的,但我现在不在实验室)

我现在用的电脑,无论是运行 LinuxMint 还是 Debian,无论是在 Xorg 还是 Wayland 下,都能识别出 1600 × 900 的分辨率。这台电脑目前使用的是 Intel 的集成显卡(Intel WhiskeyLake-U GT2 [UHD Graphics 620]),看起来应该是和显卡型号有关吧。

我感觉更像是跟驱动有关,你没安对

对,我也觉得是这样。既然同一台电脑上的 Win11 能识别出这个分辨率,应该是有理由相信这个显卡是支持这一分辨率的。那么问题应该就是出在驱动程序上。

之前我也尝试安装 AMD 官方提供的闭源驱动,但安装后没有效果。


……会不会是和我的显卡是集成显卡有关?

官方的驱动程序,似乎是给 AMD 的独立显卡使用的。

安驱动都不看下支持哪些显卡吗…

感谢提醒,我去官网核对一下,之前应该是看错型号了。另外,

这个是 neofetch 识别出来的显卡型号,感觉似乎不太对劲,在网上没有查到这个型号。等有空的时候再去核对一下。再次感谢您的耐心解答。

没事,我无聊来看看

AMD Ryzen 5000系列移动CPU曝光: Cezanne和Lucienne

我搜到了这个

答复一下您昨天的几个问题:

确认了一下,是 amdgpu

另外,CPU 型号是

AMD Ryzen 5 5500U with Radeon Graphics (12) @ 4.056GHz

去官网找了一下,有这个处理器的驱动程序,不过只有 Windows 系统的:

https://www.amd.com/zh-cn/support/downloads/drivers.html/processors/ryzen/ryzen-5000-series/amd-ryzen-5-5500u.html

我现在用的是12年前的上古老机器,分辨率1366*768 内置这个 我什么也没动。