Verbindungsabbrüche bei Lenovo Thinkpad Yoga und OneLink Pro Dock

Mein Thinkpad Yoga hat im Zusammenspiel mit dem OneLink Pro Dock das Problem, dass der in der Dockingstation verbaute USB3-Hub öfters neu gestartet wird und somit etwa neben angeschlossenen USB-Sticks auch die am Dock vorhandene, per USB-zu-Ethernetadapter realisierte LAN-Schnittstelle die Verbindung verliert. Getestet hatte ich bereits zwei verschiedene Dockingstationen, um einen Hardwaredefekt auszuschließen. Außerdem hat mein parallel installiertes Windows 10 diese Probleme nicht.

Wie auch schon im Ubuntuusers-Forum dargestellt, bekomme ich in diesem Fall folgende Meldungen bei udevadm monitor:

KERNEL[620.462898] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:1.0/net/eth1/queues/rx-0 (queues)
KERNEL[620.462987] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:1.0/net/eth1/queues/tx-0 (queues)
KERNEL[620.463081] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:1.0/net/eth1 (net)
UDEV  [620.465372] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:1.0/net/eth1/queues/rx-0 (queues)
UDEV  [620.465449] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:1.0/net/eth1/queues/tx-0 (queues)
UDEV  [620.469248] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:1.0/net/eth1 (net)
KERNEL[620.488358] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:1.0 (usb)
UDEV  [620.489213] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:1.0 (usb)
KERNEL[620.508182] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3 (usb)
KERNEL[620.508368] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1:1.0 (usb)
KERNEL[620.509552] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1 (usb)
UDEV  [620.509591] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1:1.0 (usb)
KERNEL[620.509612] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.0 (usb)
UDEV  [620.509658] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3 (usb)
UDEV  [620.510619] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1 (usb)
KERNEL[620.510669] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3 (usb)
UDEV  [620.510699] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.0 (usb)
UDEV  [620.511233] remove   /devices/pci0000:00/0000:00:14.0/usb2/2-3 (usb)
KERNEL[620.996518] add      /devices/pci0000:00/0000:00:14.0/usb2/2-3 (usb)
KERNEL[621.198346] add      /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.0 (usb)
KERNEL[621.920579] add      /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1 (usb)
KERNEL[621.922551] add      /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1:1.0 (usb)
UDEV  [622.010547] add      /devices/pci0000:00/0000:00:14.0/usb2/2-3 (usb)
UDEV  [622.013885] add      /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3:1.0 (usb)
KERNEL[622.314107] add      /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3 (usb)
KERNEL[622.314926] add      /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:2.0 (usb)
KERNEL[622.316478] add      /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:2.0/net/eth0 (net)
KERNEL[622.316523] add      /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:2.0/net/eth0/queues/rx-0 (queues)
KERNEL[622.316551] add      /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:2.0/net/eth0/queues/tx-0 (queues)
KERNEL[622.316998] add      /devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1/2-3.1.3/2-3.1.3:2.1 (usb)

Nach langem Suchen, Probieren und Testen mit verschiedenen Linux-Distributionen und Kernelversionen (getestet mit Ubuntu 14.04 LTS, Kubuntu 15.04, SystemRescueCd, GParted Live CD jeweils mit den Standard-Kerneln, sowie unter Kubuntu 15.04 zusätzlich mit den Kerneln 4.1 und 4.2), konnte ich das Problem lösen.

Ich kann es mir zwar nicht erklären, aber Abhilfe schafft es tatsächlich, die Energieverwaltung für die Soundkarte des Laptops zu aktivieren! Dies wird zwar zum generellen Energiesparen von powertop empfohlen, jedoch hätte ich dies nie im Zusammenhang mit der Dockingstation erwartet.

Die Einstellung lässt sich bspw. mittels

echo '1' > '/sys/module/snd_hda_intel/parameters/power_save';

in der Datei /etc/rc.local realisieren.

Eine etwas elegantere Variante wäre per UDEV-Regel. Dazu wird die Datei /etc/udev/rules.d/99-Yoga-Powermanagement.rules mit folgendem Inhalt angelegt:

SUBSYSTEM=="module", ACTION=="add", KERNEL=="snd_hda_intel", TEST=="parameters/power_save", ATTR{parameters/power_save}="1"

Die dritte und für Thinkpads meiner Meinung nach beste Variante ist die Benutzung des Tools tlp. Installationsanleitungen sind hier zu finden. Hier lassen sich viele Optionen zum Energiesparen relativ leicht einstellen.

Wichtig für die Aktivierung des Powermanagements der Audio-Hardware, insbesondere bei Betrieb am Netzstrom ist die Einstellung

SOUND_POWER_SAVE_ON_AC=1

in der Datei /etc/default/tlp.

udev und eSATA

Damit Kubuntu meinen eSATA-Anschluss (der an einen internen SATA-Anschluss angeschlossen ist) auch als externe Variante erkennt, muss er mit udev als solches deklariert werden.

Vor dem Anschließen der externen Festplatte den Befehl ausführen:
udevadm monitor --environment
Nach dem Anschließen werden dann sämtliche Informationen zum angeschlossenen Gerät angezeigt. Wichtig ist hierbei die Zeile, die mit „DEVPATH=“ beginnt.

In der Datei „/etc/udev/rules.d/09-esata.rules“ ist dann folgendes einzutragen:
DEVPATH=="/devices/pci0000:00/0000:00:1f.2/ata5/host4/*", ENV{UDISKS_SYSTEM_INTERNAL}="0"

Danach erkennt der KDE-Desktop eine eSATA-Festplatte genauso, wie eine USB-Festplatte. D.h. es kommt ein Pop-Up-Fenster, indem man die externen Partitionen einbinden und öffnen kann.

iPod Symlink mit UDEV

Damit der iPod einen festen Punkt im /dev-Zweig bekommt, d.h. die Partitionen sind dann unter /dev/ipod1 und /dev/ipod2 zu finden.

Dazu die Datei /etc/udev/rules.d/60-ipod.rules mit dem Inhalt (wieder alles in einer Zeile)

BUS==“usb“, SYSFS{manufacturer}==“Apple*“, SYSFS{product}==“iPod*“, SYMLINK+=“ipod%n“, GROUP=“plugdev“

erstellen.

Externe Festplatte mit UDEV

Wenn man dafür sorgen will, dass die externe Festplatte nicht ständig in wechselnden Verzeichnissen erscheint, wie einmal unter /dev/sda, dann /dev/sdb usw., kann man udev verwenden, um immer den gleichen Pfad zu bekommen.
Siehe hierzu auch den passenden Eintrag im gentoo-wiki.com.

Hierzu legt man beispielsweise die Datei /etc/udev/rules.d/10-extern.rules mit folgendem Inhalt an (alles in einer Zeile):

BUS==“usb“, KERNEL==“sd*“, SYSFS{serial}==“DEF107679C83″, NAME=“%k“, SYMLINK=“extern%n“, GROUP=“plugdev“

Die passenden SYSFS-Eigenschaften findet man mit dem Befehl

udevinfo -a -p `udevinfo -q path -n /dev/sda`

heraus.

Nachtrag: man kann in der UDEV-Konfiguration die Platte auch direkt einbinden lassen:

BUS==“usb“, KERNEL==“sd*“, SYSFS{serial}==“DEF107679C83″, NAME=“%k“, SYMLINK=“extern%n“, GROUP=“plugdev“, RUN=“/bin/mount /media/extern“

Dazu habe ich allerdings noch in der /etc/fstab folgende Zeile eingefügt, damit die mount-Optionen stimmen:

/dev/extern1 /media/extern auto noatime,quiet,noauto,async,defaults,gid=plugdev,users,exec,check=r,umask=001,shortname=mixed 0 0

quiet sorgt dafür, dass chmod keine Fehler erzeugt beim Ändern der Berechtigungen auf FAT32-Partitionen.

NACHTRAG:
In neueren Versionen existiert udevinfo nicht mehr. In obigen Befehle kann es aber ersetzt werden durch udevadm info
udevadm info -a -p `udevadm info -q path -n /dev/sdb`