Eintr├Ąge zu Tag: udev

Displayport schaltet sich aus aber nichtmehr ein

Erstellt: 15.01.2016 08:58

Der Displayport ist teils ein wenig leidig. Wird der Monitor ausgeschaltet oder ausgesteckt, aktiviert sich der Port nichtmehr. Der Bildschirm bleibt schwarz weil die Grafikkarte kein Signal mehr liefert.

Dagegen gibt es zwei Lösungen, entweder man benutzt (z.B. und sofern möglich) einen Displayport-zu-HDMI-Adapter oder man weckt den Port mit xrandr wieder auf.

Ersteres unterdrückt das vom Displayport genutzte Datenformat welches das Problem verursacht und zwingt die Grafikkarte HDMI-Signale zu senden.
(Sollte diese Erklärung falsch sein, macht mich darauf aufmerksam. ;) )

Nun zur Softwarelösung. Ist der Bildschirm schon dunkel, ist es möglich per SSH mit xrandr das Signal wieder einzuschalten:

$ xrandr
Screen 0: minimum 8 x 8, current 1920 x 1200, maximum 32767 x 32767
DP1 disconnected (normal left inverted right x axis y axis)
DP2 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 518mm x 324mm
   1920x1200     59.95*+
   1920x1080     60.00 
[...]
DP3 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

Auf dem Problemrechner über SSH die DISPLAY-Variable setzen um den Screen zu definieren und mit xrandr den Bildschirm in Standardauflösung aktivieren:

$ ssh user@dunklerrechner

$ export DISPLAY=:0
$ xrandr --output DP2 --auto

Das Ganze geht aber auch von selbst:

...automagisiert mit udev!

Zuerst wird über udevadm ausgelesen was für Events - zum Beispiel beim Ein- und Ausschalten des Monitors - generiert werden:

$ udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[71528.979723] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
UDEV  [71529.116551] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
KERNEL[71531.400604] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
UDEV  [71531.598893] change   /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)

Mit den ausgelesenen Event-Parametern (card0, drm, change) kann nun ein udev-Rules-File (/etc/udev/rules.d/70-dp-repair.rules) erstellt werden.

/usr/local/bin/dp-repair.sh ist hierbei das Script welches ausgeführt wird, wenn dieses Event eintritt. "user" sollte gegen den eigenen User ersetzt werden:

# /etc/udev/rules.d/70-dp-repair.rules
KERNEL=="card0", SUBSYSTEM=="drm", ACTION=="change", RUN+="/bin/su user -c /usr/local/bin/dp-repair.sh"

Hier noch das Beispielscript /usr/local/bin/dp-repair.sh. Es grept nach conntecteten Ports und aktiviert diese mit der Standardauflösung. Je nach Setup muss man dieses doch sehr simple Script noch den Bedürfnissen anpassen:

#!/bin/bash
# /usr/local/bin/dp-repair.sh
export DISPLAY=:0
for DPPORTS in $(xrandr | grep " connected " | awk '{ print$1 }'); do
        /usr/bin/xrandr --output $DPPORTS --auto
done;

Ausführbar machen:

# chmod +x /usr/local/bin/dp-repair.sh

Ein komplexeres Script zur Monitorsteuerung gibts unter: https://github.com/geyslan/xrasengan

Nun schaltet udev den Displayport automatisch wieder ein.



Tagged: Debian Hardware Linux ssh udev X11

Kommentar verfassen | Nach oben

xfce - Laufwerke/Partitionen auf dem Desktop verstecken

Erstellt: 30.09.2012 09:30

Thunar zeigt grundsätzlich alle nicht gemounteten Partitionen auf dem Desktop an welche udev findet. Dies ist bei Wechseldatenträgeln wie USB-Sticks durchaus nützlich und gewollt, bei Partitionen von parallel installierten Systemen auf welche man normal nicht zugreifen möchte jedoch nicht.

Will man diese Partitionen verbergen, kann man udev anweisen die zu tun.
Um dies zu erreichen legt man das File /etc/udev/rules.d/10-hide-partitions.rules mit folgendem Inhalt an:

# /etc/udev/rules.d/10-hide-partitions.rules
KERNEL=="sda1",ENV{UDISKS_PRESENTATION_HIDE}="1"
KERNEL=="sda2",ENV{UDISKS_PRESENTATION_HIDE}="1"
KERNEL=="sda3",ENV{UDISKS_PRESENTATION_HIDE}="1"

Dieses Beispiel versteckt die Partitionen sda1, 2 und 3.

Hinweis: Ab Debian Jessie funktioniert das scheinbar nichtmehr, dort ersetzt man UDISKS_PRESENTATION_HIDE gegen UDISKS_IGNORE.

Nun noch udev veranlassen die Geräte neu einzulesen.

# udevadm trigger

Nun sollten die in den Regeln konfigurierten Partitionen Verschwunden sein. :)



Tagged: Debian Linux udev wheezy XFCE

2 Kommentare | Nach oben