如果在启动之前连接了外接显示器(通过雷电连接到笔记本电脑),则可以正常工作。但是,一旦以任何方式将其拔下或断开连接,xrandr将不再检测到重新连接的显示器。
我正在运行Arch Linux
,bumblebee
用于图形卡处理。外部卡通过雷电连接器连接。有人可以告诉我机器出了什么问题,如何使热插拔正常工作?谢谢。
[调试细节]
在bumblebee
和上跟踪了多个线程udevadm
,我进行了一些测试并制作了一个热插拔脚本。但是问题仍然没有解决。结果发布如下。
对于大黄蜂,我没有做太多调整,因为第二个显示器在未热插拔时可以正常检测。
有关热插拔的问题。我做了以下事情:
当显示器正常工作时,xrandr --query
返回
Screen 0: minimum 8 x 8, current 2944 x 1080, maximum 32767 x 32767
eDP1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 382mm x 215mm
1920x1080 60.02*+
...
DP1 connected 1024x768+1920+0 (normal left inverted right x axis y axis) 0mm x 0mm
1024x768 60.00*
...
从udevadm monitor --environment --udev
打开的DP2中拔出监视器插头时,收集到的信息是:
UDEV [979.022342] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
ID_FOR_SEAT=drm-pci-0000_00_02_0
ID_PATH=pci-0000:00:02.0
ID_PATH_TAG=pci-0000_00_02_0
MAJOR=226
MINOR=0
SEQNUM=2650
SUBSYSTEM=drm
TAGS=:master-of-seat:uaccess:seat:
USEC_INITIALIZED=3775241
并且在插入显示器时:
UDEV [1111.426386] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
ID_FOR_SEAT=drm-pci-0000_00_02_0
ID_PATH=pci-0000:00:02.0
ID_PATH_TAG=pci-0000_00_02_0
MAJOR=226
MINOR=0
SEQNUM=2651
SUBSYSTEM=drm
TAGS=:seat:uaccess:master-of-seat:
USEC_INITIALIZED=3775241
UDEV [1111.522857] change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
ACTION=change
DEVNAME=/dev/dri/card0
DEVPATH=/devices/pci0000:00/0000:00:02.0/drm/card0
DEVTYPE=drm_minor
HOTPLUG=1
ID_FOR_SEAT=drm-pci-0000_00_02_0
ID_PATH=pci-0000:00:02.0
ID_PATH_TAG=pci-0000_00_02_0
MAJOR=226
MINOR=0
SEQNUM=2652
SUBSYSTEM=drm
TAGS=:seat:uaccess:master-of-seat:
USEC_INITIALIZED=3775241
似乎udev
可以在插入显示器时检测到硬件,因此我设置了udev规则来帮助xrandr
使用新显示器。我的脚本/etc/udev/rules.d/95-monitor-hotplug.rules
如下:
ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/bin/hotplug_monitor.sh"
并且/usr/local/bin/hotplug_monitor.sh
是
#!/bin/sh
export XAUTHORITY=/home/chong/.Xauthority
function connectDP1(){
DISPLAY=:0 xrandr --output DP1 --auto --right-of eDP1
}
function disconnectDP1(){
DISPLAY=:0 xrandr --output DP1 --off
}
function connectDP2(){
DISPLAY=:0 xrandr --output DP2 --auto --right-of eDP1
}
function disconnectDP2(){
DISPLAY=:0 xrandr --output DP2 --off
}
xrandr | grep "DP1 connected" &> /dev/null && connectDP1 || disconnectDP1
xrandr | grep "DP2 connected" &> /dev/null && connectDP2 || disconnectDP2
该脚本可以正常运行并退出,但之后xrandr --query
仍显示DP1
并DP2
断开连接。