You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

更换GeForce GTX 1050 Ti后无法用xrandr修改分辨率

解决更换GTX 1050 Ti后xrandr无法修改分辨率及“cannot open display”问题

我之前在半无头远程配置(物理显示器+NoMachine)下换N卡时遇到过几乎一模一样的问题,给你梳理几个针对性的排查和解决步骤,按顺序来大概率能搞定:

第一步:先解决“Xrandr cannot open display”错误

这个是基础问题,连显示设备都识别不了,肯定没法调整分辨率:

  • 检查DISPLAY环境变量:远程登录后先执行echo $DISPLAY,正常输出应该是:0:1这类值。如果是空的,手动设置环境变量:export DISPLAY=:0(如果:0不行,试试:1,取决于你的X服务器实例),之后再跑xrandr试试。
  • 开放X服务器本地权限:有时候远程用户没有访问本地X服务的权限,执行xhost +local:临时开放(重启后会失效,要是需要永久生效可以把这条加到用户的.bashrc里),然后再执行xrandr命令。
  • 调整NoMachine显示模式:NoMachine默认可能用自身的虚拟显示,而非物理显卡的输出。打开NoMachine的设置面板,找到「Display」选项,切换到「Use the physical display of the remote computer」模式,这样xrandr才能控制GTX 1050 Ti的实际输出接口。

第二步:解决分辨率修改无效的问题

搞定display访问后,再来处理GTX 1050 Ti对老5:4显示器的分辨率支持问题:

  • 确认N卡驱动是否正确安装:执行nvidia-smi,如果能正常输出显卡型号、驱动版本等信息,说明驱动没问题;如果报错,先卸载旧驱动(比如开源nouveau),重新安装对应GTX 1050 Ti的官方闭源驱动——开源驱动对老显示器的EDID识别和分辨率支持普遍不如闭源驱动。
  • 手动添加自定义分辨率:很多老显示器的特殊分辨率不会被自动识别,需要手动创建模式:
    1. 先读取显示器的EDID信息(确认支持的参数):edid-decode /sys/class/drm/card0-DVI-D-1/edid(路径可能因接口命名略有不同,找带DVI的那条路径),找到你需要的分辨率(比如1280x1024@60Hz)。
    2. cvt生成模式参数:cvt 1280 1024 60,会输出类似这样的内容:
      Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
      
    3. 用xrandr添加并应用模式:先通过xrandr找到你的DVI接口名称(比如DVI-D-1),然后依次执行:
      xrandr --newmode "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
      xrandr --addmode DVI-D-1 1280x1024_60.00
      xrandr --output DVI-D-1 --mode 1280x1024_60.00
      
  • 修改Xorg配置实现永久生效:如果手动添加的分辨率重启后消失,创建/etc/X11/xorg.conf.d/10-monitor.conf文件,填入以下内容(根据你的实际接口和分辨率调整):
    Section "Monitor"
        Identifier "DVI-D-1"
        Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
        Option "PreferredMode" "1280x1024_60.00"
    EndSection
    
    Section "Device"
        Identifier "NVIDIA Card"
        Driver "nvidia"
        Option "UseEdidFreqs" "false"
        Option "ModeValidation" "NoEdidModes, NoMaxPClkCheck"
    EndSection
    
    Section "Screen"
        Identifier "Screen0"
        Device "NVIDIA Card"
        Monitor "DVI-D-1"
        DefaultDepth 24
        SubSection "Display"
            Depth 24
            Modes "1280x1024_60.00"
        EndSubSection
    EndSection
    
  • 排查虚拟适配器冲突:如果你用了HDMI虚拟适配器,GTX 1050 Ti可能会优先识别虚拟显示器而非物理DVI的老屏幕。打开nvidia-settings(N卡控制面板),在「显示」选项里把DVI显示器设为主显示器,禁用虚拟HDMI适配器的输出,或者调整显示优先级。

内容的提问来源于stack exchange,提问作者Dito

火山引擎 最新活动