uDev Dock-Events beim T440s

Alloc

New member
Themenstarter
Registriert
25 März 2010
Beiträge
69
Hi zusammen,

wollte gerade schonmal (in der Hoffnung, dass sich das Monitorproblem bald erledigt :zornig: ) mein Dockingscript auf meinem T440s einbauen. Nun stellt sich aber heraus, dass beim (Un)docken des T440s scheinbar kein Dock-Event erzeugt wird? Ebenso enthält /sys/devices/platform/dock.0/docked immer eine 1, obwohl das früher (X201) korrekt 0 oder 1 enthielt. Das einzige uDev-Event beim Docken, dass nicht ein neues USB-Gerät anzeigt bzw. den Statuswechsel für Bat/AC ist:
Code:
KERNEL change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
UDEV change /devices/pci0000:00/0000:00:02.0/drm/card0 (drm)
.
Das sieht für mich aber nicht wirklich verwertbar aus :(

Übersehe ich etwas? Hat sich schon mal jemand damit auf den neuen Geräten beschäftigt?

Grüße,
Chris
 
Übersehe ich etwas?

Da die Forumsglaskugel bei brandneuen Modellen nicht funktioniert (bei anderen meist auch nicht), wäre es vielleicht nützlich, wenn Du uns die komplette Ausgabe zeigst. Sonst können wir ja nichts sehen ... ;)

Also sowas wie
Code:
sudo udevadm monitor --udev --property
vom An- und Abdocken.

Wegen der Länge am besten via http://paste.ubuntuusers.de
 
Beim Andocken ist gleich das 2. Device dockspezifisch. Beim Abdocken taucht dasselbe Device mit einem Remove-Event auf.
 
Hm, stimmt, wobei ich das immer noch nicht wirklich schöne finde ;)
Gut, mal schauen, wie ich dafür passende Regeln schreibe.

Danke :thumbup:
 
Merkwürdig ... Dock klappt zum Teil, Undock nicht.

Aktueller Regelinhalt:
Code:
SUBSYSTEM=="usb",  ATTR{idVendor}=="17ef", ATTR{idProduct}=="1012",  ATTR{product}=="*Dock*", ACTION=="remove",  RUN+="/usr/local/bin/thinkpad-dock.sh UNDOCK"
SUBSYSTEM=="usb",  ATTR{idVendor}=="17ef", ATTR{idProduct}=="1012",  ATTR{product}=="*Dock*", ACTION=="add",  RUN+="/usr/local/bin/thinkpad-dock.sh DOCK"
Das Skript selber schreibt einfach nur die aktuelle Zeit und den Parameter in ein Log. Beim Docken wird das Skript zweimal aufgerufen (zwei Einträge mit nahezu identischer Zeit, die Sekunde ist nur manchmal +1). Beim Abdocken hingegen wird das Skript gar nicht aufgerufen. Wenn ich hingegen mit
Code:
udevadm test --action="remove" /devices/pci0000:00/0000:00:14.0/usb3/3-3
den Remove-Vorgang simuliere, sagt mir das Prog, dass mein Skript aufgerufen würde. Bei Dock sagt es auch nur einmal, dass das Skript gestartet wird. Irgendwo ist da wohl noch was faul, komme aber leider gerade nicht drauf :(

Zur Vollständigkeit der Code meines Skripts:
Code:
#!/bin/sh
echo `date` $1 >> /tmp/dockevents

Inhalt vom Log:
Code:
Sun Oct 20 19:04:04 CEST 2013 DOCK
Sun Oct 20 19:04:04 CEST 2013 DOCK
Sun Oct 20 19:06:34 CEST 2013 DOCK
Sun Oct 20 19:06:35 CEST 2013 DOCK
Sun Oct 20 19:07:49 CEST 2013 DOCK
Sun Oct 20 19:07:50 CEST 2013 DOCK
So 20. Okt 19:16:19 CEST 2013 UNDOCK
Sun Oct 20 19:16:38 CEST 2013 DOCK
Sun Oct 20 19:16:38 CEST 2013 DOCK
Sun Oct 20 19:17:08 CEST 2013 DOCK
Sun Oct 20 19:17:08 CEST 2013 DOCK
So 20. Okt 19:20:03 CEST 2013 DOCK

Die beiden Zeilen mit die mit "So" starten waren manuelle Aufrufe vom Skript meinerseits. Alle andere sind wie man sieht immer paarweise. Fürs UNDOCK gibts keine Einträge.

Hast du noch weitere Ideen?



/EDIT: Grad mal noch etwas recherchiert und dabei die Regel vereinfacht:
Code:
SUBSYSTEM=="usb",  ATTR{idVendor}=="17ef", ATTR{idProduct}=="1012",   ATTR{product}=="*Dock*", ACTION=="add|remove",   RUN+="/usr/local/bin/thinkpad-dock.sh"
Im Skript werte ich nun einfach die Variable $ACTION aus und bekomme nun auch brav meine "add"s ins Log geschrieben. Aber am Gesamtverhalten hat sich leider nichts geändert - immer noch 2 mal Add, kein Remove.
 
Zuletzt bearbeitet:
Könnte vielleicht damit zu tun haben dass Lenovo seit den Series-3 Docks ein "undocken" der Dock nicht mehr vorraussetzt, bzw. man kann das ThinkPad einfach so aus der Dock nehmen. Das nennt Lenovo "Rip and Go". Siehe:
http://www.youtube.com/watch?v=-3D0xYNwTaU
Das gilt auch für die neuen Docks. Bei X201 Ultrabase war es wahrscheinlich noch anders geregelt.

Weiß nicht ob es stimmt, könnte aber sein.
 
Oben eben gerade noch ein Edit eingebaut. Das doppelte Add is ansonsten klar, es gibt zwei Dock-Geräte (an Bus 2 und Bus 3). Da muss ich nochmal filtern.

Aber selbst wenn man nicht mehr manuell Abdocken muss, das USB-Gerät wird ja getrennt. Das sagt ja sogar der Monitor-Output den ich gepastet hatte. Nur die Regel wird dabei irgendwie nicht mehr beachtet :(
 
Code:
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{PRODUCT}=="17ef/1012/*", ACTION=="add|remove", RUN+="/usr/local/bin/thinkpad-dock.sh"
Damit gehts nun, nur dass halt zwei mal Add/Remove kommt. Außerdem weiß ich so natürlich nicht, ob es kompatibel mit den Basic/Ultra Docks ist. Man könnte bei Product hinten statt * noch eine der beiden Revision-IDs eintragen (bei mir 5030 und 5031), aber da weiß ich dann noch weniger, wie oft die sich unterscheiden bei andren Docks.
 
Ich hab im Moment auch keine bessere Idee als die Revision-ID, um die beiden Devices auseinanderzuhalten. Nicht schön aber selten ...

@ibmthink: Lenovos Marketinggeblubber hat auf technischen Ebene nicht die geringste Bedeutung ;). Beim Abstecken werden in jedem Fall USB-Devices abgehängt und das sieht man dann ja auch bei den udev-Events.
 
Hi,

hab gerade bei meinem Syslog-Blättern entdeckt, dass scheinbar das Thinkpad-eigene ACPI sehr wohl Informationen über das Dock an sich bekommt:
Code:
Oct 22 15:22:41 ci-nb kernel: [    1.838982] thinkpad_acpi: http://ibm-acpi.sf.net/
...
Oct 22 15:39:52 ci-nb kernel: [ 1032.466319] thinkpad_acpi: docked into hotplug port replicator
...
Oct 22 15:40:16 ci-nb kernel: [ 1056.133202] thinkpad_acpi: undocked from hotplug port replicator
Könnte das helfen, um Regeln zu erstellen oder den aktuellen Zustand abzufragen? Unter /proc/acpi/ibm oder /devices/platform/thinkpad_acpi konnte ich keine Informationen über den Dockzustand erkennen :(

Grüße,
Chris
 
  • ok1.de
  • ok2.de
  • thinkstore24.de
  • Preiswerte-IT - Gebrauchte Lenovo Notebooks kaufen

Werbung

Zurück
Oben