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 bumblebee
untuk 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 bumblebee
dan 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 --query
kembali
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 --udev
terbuka, 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 udev
mampu mendeteksi perangkat keras saat monitor dicolokkan, jadi saya menetapkan aturan udev untuk membantu xrandr
menggunakan monitor baru. Skrip saya /etc/udev/rules.d/95-monitor-hotplug.rules
adalah sebagai berikut:
ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/bin/hotplug_monitor.sh"
Dan /usr/local/bin/hotplug_monitor.sh
itu
#!/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 --query
masih menunjukkan DP1
dan DP2
terputus.
Jawaban:
Saya menemukan kode Anda dan tetap berusaha membuatnya berfungsi. Di bawah kondisi TIDAK bisa saya membuatnya bekerja dengan paradigma "jika kemudian". "xrandr | grep" SELALU gagal menjadi benar ketika dijalankan sebagai pemicu udev, tetapi bekerja jika saya menjalankannya secara manual. Saya dipaksa untuk memecahnya menjadi dua skrip.
Meskipun perangkat saya berbeda (StarTech CDPVGDVHDMDP), saya akan memposting versi saya di sini.
Pertama, saya merasa terbantu memuat ulang aturan udev saat pemecahan masalah:
Perangkat saya sedikit berbeda, dan saya menemukan bahwa subsistem "hidraw" adalah sesuatu yang saya dapat memicu. Juga, saya terpaksa menjalankan / bin / bash / path / ke / script "; jika tidak, ini tidak berjalan. Ini adalah aturan udev saya (/etc/udev/rules.d/95-monitor-hotplug.rules):
Ini skrip hotplug saya
Ini skrip hot-cabut saya
sumber