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

4097
Chong

Mein externes Display (über Thunderbolt mit meinem Laptop verbunden) funktioniert einwandfrei, wenn es vor dem Booten angeschlossen wird. Wenn xrandr jedoch nicht angeschlossen oder auf irgendeine Weise getrennt ist, wird der wiederhergestellte Monitor nicht mehr erkannt.

Ich renne Arch Linux, verwende bumblebeefür die Handhabung von Grafikkarten. Die externe Karte wird über den Blitzstecker angeschlossen. Könnte mir jemand sagen, was mit der Maschine nicht stimmt und wie kann ich Hotplugging funktionieren lassen? Vielen Dank.


[Details zur Fehlersuche]

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

Für Hummel habe ich nicht viel gezwungen, da der zweite Monitor gut erkennt, wenn er nicht Hotplugged ist.

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

Wenn der Monitor normal arbeitet, wird xrandr --querywieder angezeigt

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 von DP2 trennen, während er udevadm monitor --environment --udevgeöffnet ist, 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 wenn Sie den Monitor anschließen:

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 legte ich eine udev-Regel fest, um xrandrden neuen Monitor zu verwenden. Mein Skript für /etc/udev/rules.d/95-monitor-hotplug.rulesist 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, aber danach xrandr --queryimmer noch angezeigt DP1und DP2getrennt.

9
Ich erlebe genau dasselbe Verhalten. Auch auf Arch. Ich habe es auch ohne Hummel mit den proprietären Treibern von nvidia ohne Erfolg versucht. Hast du es mit Nouveau versucht? Johnride vor 8 Jahren 0
@Johnride Meine Grafikkarte ist Maxwell Architecture. Nouveau hat es noch nicht geschafft. Derzeit verwende ich einen HDMI-Anschluss und einen direkten NVIDIA-Treiber. Es sieht so aus, als würden sie gut funktionieren. Chong vor 8 Jahren 0
Dies wird in einem der nächsten Kernel behoben: https://bugzilla.kernel.org/show_bug.cgi?id=115121 vor 8 Jahren 0
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 die Netzwerke Port, Webcam und USB erkannt und funktioniert, aber nicht das Display. dvdgc13 vor 7 Jahren 0
#! / bin / bash (nicht sh), ansonsten ist die Funktionsanweisung fehlerhaft nd34567s32e vor 7 Jahren 0
das && || Die Anweisung ist nicht die gleiche wie in https://github.com/koalaman/shellcheck/wiki/SC2015 nd34567s32e vor 7 Jahren 0

1 Antwort auf die Frage

1
nd34567s32e

Ich habe Ihren Code gefunden und beharrte darauf, dass er funktioniert. Unter KEINEN Bedingungen könnte ich es mit einem Wenn-Wenn-Paradigma arbeiten lassen. das "xrandr | grep" war IMMER nicht wahr, wenn es als udev-Auslöser ausgeführt wurde, funktionierte jedoch, wenn es manuell ausgeführt wurde. 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, die 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 ausgelöst werden 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 
Ich habe das hotUNplug-Skript seit der Veröffentlichung deaktiviert, da es nicht notwendig ist und tatsächlich Probleme beim Einstecken anderer USB-Geräte auftreten. nd34567s32e vor 6 Jahren 0