mde*_*wit 5 display nvidia multiple-monitors monitor
我的笔记本电脑 HDMI 端口连接了一个外接显示器。当我启动我的笔记本电脑时,笔记本电脑屏幕和显示器都成功打开并且运行良好。但是,每当我拔下外接显示器,然后重新插入时,Ubuntu 都无法检测到显示器已再次插入,并显示为已断开连接。让外接显示器再次打开的唯一方法是重新启动我的笔记本电脑。
笔记本电脑规格:Dell Inspiron 15 Gaming Nvidia GeForce GTX 960M
lshw 显示部分的输出:
*-display
description: 3D controller
product: GM107M [GeForce GTX 960M]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
version: a2
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list rom
configuration: driver=nvidia latency=0
resources: irq:130 memory:e2000000-e2ffffff memory:d0000000-dfffffff memory:e0000000-e1ffffff ioport:e000(size=128) memory:e3000000-e307ffff
Run Code Online (Sandbox Code Playgroud)
这是连接两个屏幕时我的 xrandr 输出:
Screen 0: minimum 8 x 8, current 3840 x 1113, maximum 16384 x 16384
eDP-1-1 connected primary 1920x1080+0+33 344mm x 193mm
1920x1080 60.00*+ 59.93 48.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 connected 1920x1080+1920+0 510mm x 290mm
1920x1080 60.00*+
1680x1050 59.88
1280x1024 75.02 60.02
1280x960 60.00
1152x864 75.00
1024x768 75.03 60.00
832x624 74.55
800x600 75.00 60.32 56.25
640x480 75.00 59.94
720x400 70.08
HDMI-1-1 disconnected
Run Code Online (Sandbox Code Playgroud)
拔下并重新插入后,DP-1-1 显示为已断开连接。
此外, xrandr --auto 不会重新打开屏幕。还尝试重新启动 lightdm 和 unity,但无济于事。
我尝试过以下显示驱动程序,但没有一个能解决问题:
请注意,在 Windows 10 中,在拔出、插入循环后重新检测显示器,因此这应该不是主板的问题。
我需要经常拔掉屏幕,因为我必须去参加会议等并在那里使用我的笔记本电脑。基本上,上述问题导致我每天最多重启笔记本电脑 5 次。请帮忙!
我能找到的最接近您的问题的是这个线程(ubuntuforums.org - Nvidia GTX 950 and TV not see signal after inputchange or power off/on),它引用了 nVidia 970/980 的解决方案。您的 960 似乎介于两者之间。
提出的解决方案是使用以下代码将监视器重置为不良模式,然后重置为良好模式:
#!/bin/sh
#Fix TV state when HDMI link is lost.
#By Mario Limonciello <email address hidden>
sleep 10
OUTPUT="HDMI-0"
BAD_MODE="1280x720"
GOOD_MODE="1920x1080"
for MODE in $BAD_MODE $GOOD_MODE; do
DISPLAY=:0 xrandr --output $OUTPUT --mode $MODE
sleep 2
done
Run Code Online (Sandbox Code Playgroud)
我认为这个脚本可以改进,但想以其原始版本发布。
链接中的一位作者想要设置udev
为在热插拔事件上自动调用脚本。hotplugtv
我过去曾使用此代码 ( ) 对 HDMI 执行此操作,以修复 Ubuntu 16.04pulseaudio 8 错误:
#!/bin/bash
if [[ $(cat /sys/class/drm/card*-HDMI-A-1/status | grep -Ec "^connected") -eq 1 ]]; then
/bin/sleep 2;
export PULSE_RUNTIME_PATH="/run/user/1000/pulse/";
sudo -u rick -E pacmd set-card-profile 0 output:hdmi-stereo;
else
export PULSE_RUNTIME_PATH="/run/user/1000/pulse/";
sudo -u rick -E pacmd set-card-profile 0 output:analog-stereo;
fi
exit 0
Run Code Online (Sandbox Code Playgroud)
您将需要使用您的目录修改 if 测试/sys/class/drm/...
。然后使用重置 hdmi 屏幕的脚本文件修改 if 测试的真实部分。在 if 测试的错误方面,如果拔掉设备:
后没有任何事情可做,只需将代码替换为(noop) 即可。hdmi
为了udev
在热插拔事件期间调用此脚本,创建/etc/udev/rules.d/99-hotplugtv.rules
包含以下内容的文件:
ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", RUN+="/path/to/hotplugtv"
Run Code Online (Sandbox Code Playgroud)
更改/path/to/
为放置脚本的路径hotplugtv
。
归档时间: |
|
查看次数: |
2649 次 |
最近记录: |