Layar eksternal saya (terhubung ke laptop saya melalui thunderbolt) berfungsi dengan baik jika terhubung sebelum boot-up. Namun, setelah dicabut atau diputus dengan cara apa pun, xrandr tidak akan lagi mendeteksi monitor yang terhubung kembali.
Saya menjalankan Arch Linux, menggunakan bumblebeeuntuk penanganan kartu grafis. Kartu eksternal terhubung melalui konektor thunderbolt. Bisakah seseorang memberi tahu saya apa yang salah dengan mesin dan bagaimana saya bisa membuat hotplugging berfungsi? Terima kasih.
[Detail debugging]
Setelah beberapa utas bumblebeedan udevadm, saya melakukan beberapa pengujian dan membuat skrip hotplug. Namun masalahnya masih belum terpecahkan. Hasilnya diposting seperti di bawah ini.
Untuk lebah, saya tidak banyak men-tweak, karena monitor kedua mendeteksi dengan baik ketika tidak terhubung.
Untuk masalah terkait hot-plugging. Saya melakukan yang berikut:
Ketika monitor bekerja dengan normal, xrandr --querykembali
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*
...
Ketika mencabut monitor dari DP2 dengan udevadm monitor --environment --udevterbuka, informasi yang dikumpulkan adalah:
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
Dan saat menghubungkan monitor ke:
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
Tampaknya udevmampu mendeteksi perangkat keras saat monitor dicolokkan, jadi saya menetapkan aturan udev untuk membantu xrandrmenggunakan monitor baru. Skrip saya /etc/udev/rules.d/95-monitor-hotplug.rulesadalah sebagai berikut:
ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/bin/hotplug_monitor.sh"
Dan /usr/local/bin/hotplug_monitor.shitu
#!/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
Script berjalan dan berhenti secara normal, tetapi setelah itu xrandr --querymasih menunjukkan DP1dan DP2terputus.