Màn hình ngoài của tôi (được kết nối với máy tính xách tay của tôi thông qua tiếng sét) hoạt động tốt nếu được kết nối trước khi khởi động. Tuy nhiên, một khi đã rút phích cắm hoặc ngắt kết nối bằng bất kỳ phương tiện nào, xrandr sẽ không phát hiện ra màn hình được kết nối lại nữa.
Tôi đang chạy Arch Linux
, sử dụng bumblebee
để xử lý card đồ họa. Thẻ ngoài được kết nối thông qua đầu nối sấm sét. Ai đó có thể cho tôi biết những gì đã xảy ra với máy và làm thế nào tôi có thể làm cho công việc cắm nóng? Cảm ơn.
[Chi tiết gỡ lỗi]
Theo nhiều chủ đề trên bumblebee
và udevadm
, tôi đã thực hiện một số thử nghiệm và tạo một kịch bản hotplug. Tuy nhiên, vấn đề vẫn chưa được giải quyết. Kết quả được đăng như dưới đây.
Đối với ong nghệ, tôi không chỉnh nhiều, vì màn hình thứ hai được phát hiện tốt khi không cắm nóng.
Đối với vấn đề nóng cắm liên quan. Tôi đã làm như sau:
Khi màn hình hoạt động bình thường, xrandr --query
trở về
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*
...
Khi rút phích cắm màn hình khỏi DP2 khi udevadm monitor --environment --udev
mở, thông tin được thu thập là:
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
Và khi cắm màn hình vào:
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
Dường như udev
có thể phát hiện phần cứng khi màn hình được cắm, vì vậy tôi đã giải quyết một quy tắc udev để giúp xrandr
sử dụng màn hình mới. Kịch bản của tôi /etc/udev/rules.d/95-monitor-hotplug.rules
là như sau:
ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/bin/hotplug_monitor.sh"
Và /usr/local/bin/hotplug_monitor.sh
là
#!/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
Kịch bản chạy và thoát bình thường, nhưng sau đó xrandr --query
vẫn hiển thị DP1
và DP2
ngắt kết nối.