Das System erkennt keinen Hot-Plug-Display-Anschluss (über den Thunderbolt-Anschluss).

9

Mein externes Display (über einen Blitz mit meinem Laptop verbunden) funktioniert einwandfrei, wenn es vor dem Start angeschlossen wird. Sobald es jedoch auf irgendeine Weise vom Stromnetz getrennt oder getrennt wird, erkennt xrandr den wieder angeschlossenen Monitor nicht mehr.

Ich laufe Arch Linuxund verwende bumblebeefür die Handhabung von Grafikkarten. Die externe Karte wird über den Blitzanschluss angeschlossen. Könnte mir jemand sagen, was mit der Maschine nicht stimmt und wie ich das Hotplugging zum Laufen bringen kann? Vielen Dank.


[Debugging-Detail]

Nach mehreren Threads auf bumblebeeund habe udevadmich mehrere Tests durchgeführt und ein Hotplug-Skript erstellt. Das Problem ist jedoch noch nicht gelöst. Das Ergebnis ist wie folgt angegeben.

Für Hummeln habe ich nicht viel optimiert, da der zweite Monitor gut erkannt wird, wenn er nicht mit dem Hotplug verbunden ist.

Bei Problemen mit dem Hot-Plugging. Ich habe folgendes gemacht:

Wenn der Monitor normal funktioniert, xrandr --querykehrt er zurück

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* 

...

Wenn Sie den Monitor bei udevadm monitor --environment --udevgeöffnetem DP2 vom Computer trennen , werden folgende Informationen gesammelt:

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

Und beim Anschließen des Monitors:

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

Es scheint, dass udevdie Hardware erkannt werden kann, wenn der Monitor angeschlossen ist. Daher habe ich eine udev-Regel aufgestellt, um die xrandrVerwendung des neuen Monitors zu erleichtern. Mein Skript für /etc/udev/rules.d/95-monitor-hotplug.ruleslautet wie folgt:

ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/bin/hotplug_monitor.sh"

Und /usr/local/bin/hotplug_monitor.shist

#!/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

Das Skript wird normal ausgeführt und beendet, danach jedoch xrandr --queryweiterhin angezeigt DP1und DP2getrennt.

Chong
quelle
Ich erlebe genau das gleiche Verhalten. Auch auf Arch. Ich habe es auch ohne Hummel mit den nvidia-eigenen Treibern ohne Glück versucht. Hast du es mit Jugendstil versucht?
Johnride
@ Johnride Meine Grafikkarte ist Maxwell Architecture. Nouveau hat es noch nicht zum Laufen gebracht. Derzeit verwende ich den HDMI-Anschluss und den direkten NVIDIA-Treiber. Es sieht so aus, als ob sie gut funktionieren.
Chong
Dies wird in einem der nächsten Kernel behoben bugzilla.kernel.org/show_bug.cgi?id=115121
Hat jemand eine Lösung gefunden? Ich habe einen neueren Kernel als den oben genannten und ich habe immer noch das gleiche Problem wie Chong. Ich bekomme den Netzwerkanschluss, die Webcam und den USB erkannt und funktioniert, aber nicht das Display.
dvdgc13
#! / bin / bash (nicht sh) sonst ist die Funktionsanweisung fehlerhaft
nd34567s32e

Antworten:

1

Ich fand Ihren Code und versuchte weiterhin, ihn zum Laufen zu bringen. Unter KEINEN Bedingungen könnte ich dafür sorgen, dass es mit einem "Wenn dann" -Paradigma funktioniert. Das "xrandr | grep" war IMMER nicht wahr, wenn es als udev-Trigger ausgeführt wurde, funktionierte aber, wenn ich es manuell ausführte. Ich war gezwungen, es in zwei Skripte aufzuteilen.

Obwohl mein Gerät anders ist (StarTech CDPVGDVHDMDP), werde ich meine Version hier veröffentlichen.

Zunächst fand ich es hilfreich, udev-Regeln bei der Fehlerbehebung neu zu laden:

sudo udevadm control --reload-rules

Mein Gerät war etwas anders und ich fand, dass das Subsystem "Hidraw" etwas war, von dem ich auslösen konnte. Außerdem musste ich / bin / bash / path / to / script ausführen "; sonst wurde es nicht ausgeführt. Dies ist meine udev-Regel (/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"

Dies ist mein Hotplug-Skript

#!/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

Dies ist mein Hot-Unplug-Skript

#!/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
quelle
Seit dem Posten habe ich das hotUNplug-Skript deaktiviert, da es nicht notwendig ist und tatsächlich Probleme beim Anschließen anderer USB-Geräte verursacht.
nd34567s32e