Moh*_*dar 20 intel-graphics wayland display-resolution
旧标题 - “使用 xrandr 将分辨率更改为 1280x1024 给出:失败请求的 X 错误:BadValue(整数参数超出操作范围)”
我已经安装了一个全新的 Ubuntu 17.10,并且有一个分辨率为 5:4 的显示器。设置没有高于 1024x768 的分辨率。但我需要 1280x1024 (5:4) 的分辨率。我使用默认主板显卡:
# lspci|grep VGA
00:02.0 VGA compatible controller: Intel Corporation 4 Series Chipset Integrated Graphics Controller (rev 03)
Run Code Online (Sandbox Code Playgroud)
xrandr 还提供以下内容:
$ xrandr
Screen 0: minimum 320 x 200, current 1024 x 768, maximum 8192 x 8192
XWAYLAND0 connected 1024x768+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x768 59.92*+
Run Code Online (Sandbox Code Playgroud)
我尝试使用 xrandr 添加 1280x1024 分辨率。所以首先使用gtf创建分辨率信息:
$ gtf 1280 1024 60
# 1280x1024 @ 60.00 Hz (GTF) hsync: 63.60 kHz; pclk: 108.88 MHz
Modeline "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
Run Code Online (Sandbox Code Playgroud)
然后添加到分辨率:
xrandr --newmode "1280x1024_60.00" 108.88 1280 1360 1496 1712 1024 1025 1028 1060 -HSync +Vsync
Run Code Online (Sandbox Code Playgroud)
然后再次执行命令: xrandr --addmode XWAYLAND0 1280x1024_60.00
然后什么都没有改变。当我尝试使用xrandr --output XWAYLAND0 --mode 1280x1024_60.00 --rate 60
但发生错误来更改它时:
$ xrandr --output XWAYLAND0 --mode 1280x1024 --rate 60
X Error of failed request: BadValue (integer parameter out of range for operation)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 7 (RRSetScreenSize)
Value in failed request: 0x0
Serial number of failed request: 21
Current serial number in output stream: 22
Run Code Online (Sandbox Code Playgroud)
我不知道我做错了什么。或者如何将分辨率更改为正确的分辨率:1280x1024
Pan*_*her 14
您可以尝试使用 Wayland 设置自定义分辨率,但结果不一。
您可能应该首先针对 Wayland 提交错误报告,包括您的显卡和显示器
https://help.ubuntu.com/community/ReportingBugs
xrandr
不适用于 Wayland !!
您可以尝试使用类似于 xrandr 的方式使用 modline 添加自定义分辨率,但需要一些额外的步骤。
首先,我不确定这是否适用于安全启动,因此我建议您从禁用安全启动开始
来自https://ask.fedoraproject.org/en/question/99867/how-to-add-a-custom-resolution-to-weyland-fedora-25/和https://wiki.archlinux.org/index。 php/Kernel_mode_setting#Forcing_modes_and_EDID
首先,您需要克隆edid-generator。然后你可以将它传递给你的模型行(使用你给出的相同参数xrandr --newmode
来自https://github.com/akatrevorjay/edid-generator
安装要求
sudo apt install zsh edid-decode automake dos2unix
Run Code Online (Sandbox Code Playgroud)
下载并解压
wget https://github.com/akatrevorjay/edid-generator/archive/master.zip
unzip master.zip
cd edid-generator-master
Run Code Online (Sandbox Code Playgroud)
二进制文件在 ~/edid-generator-master 作为 modeline2edid
modeline2edid
使用您的 modline运行,使用 askfedora 链接中的示例,
./modeline2edid - <<< 'Modeline "3840x2160" 533.6 3840 3982 4027 4064 2160 2170 2180 2190 +hsync +vsync'
Searching for runaway unicorns in '/dev/stdin'
-- Found naughty unicorn: Modeline "3840x2160" 533.6 3840 3982 4027 4064 2160 2170 2180 2190 +hsync +vsync
Wrote 3840x2160.S
Run Code Online (Sandbox Code Playgroud)
将该命令修改为您想要的分辨率。
请参阅如何设置自定义分辨率?详情(如果需要)
然后用make生成edid二进制文件
make #output not posted
Run Code Online (Sandbox Code Playgroud)
3840x2160.bin
在这种情况下,您现在将拥有新的 .bin 。
现在,从Arch wiki启用您的自定义资源
sudo mkdir /usr/lib/firmware/edid
sudo cp 3840x2160.bin /usr/lib/firmware/edid
Run Code Online (Sandbox Code Playgroud)
更改3840x2160.bin
为您的自定义分辨率。
注意:已经包含了一些自定义的 .bin,你可以看到它们,ls *.bin
我不确定你是否可以在没有 make 的情况下使用它们。
重启测试
重新启动时,在 grub 中编辑内核行,添加
drm_kms_helper.edid_firmware=edid/3840x2160.bin
Run Code Online (Sandbox Code Playgroud)
请参阅如何添加内核引导参数?和https://wiki.ubuntu.com/Kernel/KernelBootParameters
转到以开头的行linux
并drm_kms_helper.edid_firmware=edid/3840x2160.bin
在行尾添加ro quiet splash
假设一切正常,让它永久
sudo nano /etc/default/grub
Run Code Online (Sandbox Code Playgroud)
添加自定义分辨率
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash drm_kms_helper.edid_firmware=edid/3840x2160.bin"
Run Code Online (Sandbox Code Playgroud)
保存您的编辑Ctrl+x
更新 grub
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
重新启动并享受您的自定义分辨率
Xorg 和 Wayland 都从内核获取此信息。您可以要求引导加载程序告诉内核将特定分辨率输出到特定视频输出。假设我们要为VGA-1
设备添加全高清分辨率。
请注意,重新引导后,您的引导加载程序将告诉您的内核,所连接的任何内容都VGA-1
支持 60Hz 的 1920x1080。这并不意味着它实际上支持该分辨率,如果不支持,屏幕可能会呈现黑色,因此在进行这些修改之前,我强烈建议确保:
@60
Hz)执行此操作sudo $EDITOR /etc/default/grub
Run Code Online (Sandbox Code Playgroud)
找到GRUB_CMDLINE_LINUX_DEFAULT
行,添加(在末尾,右引号之前):
video=VGA-1:1920x1080@60
Run Code Online (Sandbox Code Playgroud)
保存,退出编辑器,然后:
sudo update-grub
Run Code Online (Sandbox Code Playgroud)
sudo $EDITOR /boot/loader/entries/arch.conf
Run Code Online (Sandbox Code Playgroud)
找到options
行,添加:
video=VGA-1:1920x1080@60
Run Code Online (Sandbox Code Playgroud)
要执行此操作,您需要知道屏幕连接到的 X(视频)输出的名称 - 打开终端并运行xrandr
:
$ xrandr
Screen 0: minimum 8 x 8, current 3840 x 2160, maximum 32767 x 32767
VGA-0 disconnected (normal left inverted right x axis y axis)
VGA-1 disconnected (normal left inverted right x axis y axis)
HDMI-0 disconnected (normal left inverted right x axis y axis)
HDMI-1 disconnected (normal left inverted right x axis y axis)
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 disconnected (normal left inverted right x axis y axis)
DP-2 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 878mm x 485mm
3840x2160 60.00*+ 30.00 29.98 24.00
2560x1440 59.95
2048x1080 59.99
1920x1080 60.00 59.94 50.00
1680x1050 59.95
1440x900 74.98 59.89
1280x1024 75.02 60.02
1280x960 60.00
1280x720 60.00 59.94 50.00
1024x768 75.03 60.00
800x600 75.00 60.32
720x576 50.00
720x480 59.94
640x480 75.00 72.81 59.94 59.93
DP-3 disconnected (normal left inverted right x axis y axis)
Run Code Online (Sandbox Code Playgroud)
connected
正如您所看到的,当前在我的机器上读取的唯一 X 输出是DP-2
.
现实生活中的用例,可以更轻松地谷歌搜索这个答案:这对我来说可以通过 DVI 到 D-SUB 适配器运行旧的三星 SyncMaster 2343NW 作为第二个显示器(D-SUB 是 VGA,所以我的输出名称是VGA-1
,内核不能'无法自行识别支持的分辨率,也称为将旧屏幕连接为第二个显示器)。
归档时间: |
|
查看次数: |
28281 次 |
最近记录: |