erb*_*erb 5 arch-linux nvidia multi-monitor i3 monitors
我已经以一种或另一种方式遇到了这个问题很长一段时间(几年),并且在多种配置中。我已经多次更新驱动程序和内核,此时我真的不知道罪魁祸首在哪里。
这似乎是某种竞争条件,如果一个显示器在另一个之前“准备好”,另一个只会得到“无输入”,尽管 xrandr(和 i3)认为它已连接并且应该可以工作。
行为:两台显示器都进入睡眠状态(从不活动状态),移动鼠标时,只有其中一台(1080p 显示器)正确唤醒。另一个在几秒钟后唤醒,但随后显示“无输入”。
解决方法:
xrandr.sh
(旧版本,新版本见下文)
行为:类似的行为,但现在该行为适用于新监视器。旧的表现得很好(就像旧的 1080p 显示器一样)。
解决方法1(记得先唤醒显示器):
解决方法 2(忘记先唤醒显示器):
xrandr --output HDMI-0 --off
,使监视器重新进入待机状态。Nvidia 驱动程序版本(来自 Arch 存储库):455.45.01-6
$ lspci | grep NV
01:00.0 VGA compatible controller: NVIDIA Corporation GP104 [GeForce GTX 1070] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GP104 High Definition Audio Controller (rev a1)
Run Code Online (Sandbox Code Playgroud)
$ xrandr
Screen 0: minimum 8 x 8, current 7680 x 2160, maximum 32767 x 32767
DVI-D-0 disconnected (normal left inverted right x axis y axis)
HDMI-0 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 621mm x 341mm
3840x2160 60.00*+ 59.94 50.00 30.00 29.97 25.00 23.98 23.98
2560x1600 59.97
2560x1440 59.95
1920x1080 60.00 59.94 50.00 60.00 50.04
1680x1050 59.95
1440x900 59.89
1440x576 50.00
1440x480 59.94
1280x1024 75.02 60.02
1280x960 60.00
1280x800 59.81
1280x720 60.00 59.94 50.00
1024x768 75.03 70.07 60.00
800x600 75.00 72.19 60.32 56.25
720x576 50.00
720x480 59.94
640x480 75.00 72.81 59.94
640x350 70.07
DP-0 disconnected (normal left inverted right x axis y axis)
DP-1 connected 3840x2160+3840+0 (normal left inverted right x axis y axis) 1280mm x 720mm
4096x2160 29.97 + 25.00 24.00 23.98
3840x2160 29.97* 25.00 23.98 23.98
1920x1080 60.00 59.94 50.00 29.97 25.00 23.98 60.00 50.04
1280x1024 60.02
1280x720 59.94 50.00
1024x768 60.00
800x600 60.32
720x576 50.00
720x480 59.94
640x480 59.95 59.93 59.94
DP-2 disconnected (normal left inverted right x axis y axis)
DP-3 disconnected (normal left inverted right x axis y axis)
DP-4 disconnected (normal left inverted right x axis y axis)
DP-5 disconnected (normal left inverted right x axis y axis)
Run Code Online (Sandbox Code Playgroud)
dmesg
没有显示任何异常。
xrandr.sh
:
# This used to be uncommented, but doesn't cut it anymore with the new setup
#xrandr --output HDMI-0 --off
sleep 0.5
xrandr --output HDMI-0 --primary --mode 3840x2160 --panning 0x0
xrandr --output DP-1 --mode 3840x2160 --right-of HDMI-0
Run Code Online (Sandbox Code Playgroud)
多年来,我为类似的问题在谷歌上搜索了几次,但我从来没有真正发现任何有希望的东西。我曾经认为旧的 4K 显示器有些奇怪(比如坏的 EDID),但现在我在新显示器上遇到了同样的问题,我已经放弃了这种怀疑。
我发现很多关于屏幕在挂起后无法恢复的线程(通常用 修复modeset
),但在我的情况下,没有真正的挂起发生,这只是屏幕关闭/消隐(并且它只发生在其中一台显示器上!) . 此外,在问题/解决方法的“竞争条件”性质方面,我也没有发现任何与我的问题类似的问题。
小智 0
保留您的“解决方法”脚本,使用 xrandr 命令按照您想要的方式获取两个监视器。我建议编写一个小的 udev 规则来运行由“唤醒省电”内核事件触发的脚本。您可以通过运行以下命令来监控您获得的触发器类型:
udevadm monitor -u
Run Code Online (Sandbox Code Playgroud)
您还可以通过运行以下命令获取有关监视器的 udev 规则密钥格式中所有可能属性的信息: udevadm info -a -n /dev/dri/card0
其中card0 是您的板载视频卡。阅读一下 udev 规则: https://linux.die.net/man/7/udev
您通常将文件放置在 /etc/udev/rules.d/ 中
仅包含以下内容的东西:
KERNEL=="card0", SUBSYSTEM=="drm", RUN+="/opt/xrandr.sh"
Run Code Online (Sandbox Code Playgroud)
可能会起作用,只要纠正脚本的路径即可。希望这可以帮助。
归档时间: |
|
查看次数: |
165 次 |
最近记录: |