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 Linux
und verwende bumblebee
fü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 bumblebee
und habe udevadm
ich 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 --query
kehrt 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 --udev
geö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 udev
die Hardware erkannt werden kann, wenn der Monitor angeschlossen ist. Daher habe ich eine udev-Regel aufgestellt, um die xrandr
Verwendung des neuen Monitors zu erleichtern. Mein Skript für /etc/udev/rules.d/95-monitor-hotplug.rules
lautet wie folgt:
ACTION=="change", SUBSYSTEM=="drm", RUN+="/usr/local/bin/hotplug_monitor.sh"
Und /usr/local/bin/hotplug_monitor.sh
ist
#!/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 --query
weiterhin angezeigt DP1
und DP2
getrennt.
Antworten:
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:
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):
Dies ist mein Hotplug-Skript
Dies ist mein Hot-Unplug-Skript
quelle