Sistem tidak mendeteksi port tampilan hot-plug (melalui konektor thunderbolt)

9

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.

Chong
sumber
Saya mengalami perilaku yang sama persis. Juga di Arch. Saya mencoba tanpa lebah juga dengan driver nvidia berpemilik tidak berhasil. Apakah Anda mencoba dengan nouveau?
Johnride
@Johnride Kartu grafis saya adalah Maxwell Architecture. Nouveau belum membuatnya bekerja. Saat ini saya menggunakan port HDMI dan driver NVIDIA langsung. Sepertinya mereka bekerja dengan baik.
Chong
ini akan diperbaiki di salah satu kernel berikutnya bugzilla.kernel.org/show_bug.cgi?id=115121
Adakah yang menemukan solusi? Saya memiliki kernel yang lebih baru dari yang disebutkan di atas dan saya masih memiliki masalah yang sama dengan Chong. Saya mendapatkan port jaringan, webcam dan usb terdeteksi dan berfungsi, tetapi tidak pada tampilan.
dvdgc13
#! / bin / bash (bukan sh) kalau tidak, pernyataan fungsi salah
nd34567s32e

Jawaban:

1

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:

sudo udevadm control --reload-rules

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):

ACTION=="remove", SUBSYSTEM=="hidraw", RUN+="/bin/bash /home/user/scripts/hotunplug-displayport.sh"
ACTION=="add", SUBSYSTEM=="hidraw", RUN+="/bin/bash /home/user/scripts/hotplug-displayport.sh"

Ini skrip hotplug saya

#!/bin/bash
export XAUTHORITY=/home/user/.Xauthority
DISPLAY=:0 /usr/bin/xrandr --addmode DP-1 1680x1050
DISPLAY=:0 /usr/bin/xrandr --output DP-1 --right-of  eDP-1 --mode 1680x1050
echo "$(date) : Hotplug Connect DP-1" >> /var/log/hotplug.txt
DISPLAY=:0 /usr/bin/xrandr --addmode DP-2 1680x1050
DISPLAY=:0 /usr/bin/xrandr --output DP-2 --right-of  eDP-1 --mode 1680x1050
echo "$(date) : Hotplug Connect DP-2" >> /var/log/hotplug.txt

Ini skrip hot-cabut saya

#!/bin/bash
export XAUTHORITY=/home/user/.Xauthority
DISPLAY=:0 /usr/bin/xrandr --output DP-1 --off
echo "$(date) : Hotplug Disconnect DP-1" >> /var/log/hotplug.txt
DISPLAY=:0 /usr/bin/xrandr --output DP-2 --off
echo "$(date) : Hotplug Disconnect DP-2" >> /var/log/hotplug.txt
nd34567s32e
sumber
Sejak memposting ini, saya telah menonaktifkan skrip hotUNplug, karena itu tidak perlu dan benar-benar menyebabkan masalah ketika mencolokkan perangkat usb lainnya.
nd34567s32e