Difference between revisions of "Docking Solutions"

From ThinkWiki
Jump to: navigation, search
(External Sources: Add a reference to my think-dock script.)
(Withdrawn Docking Stations and Port Replicators)
(11 intermediate revisions by 7 users not shown)
Line 10: Line 10:
  
 
====No event on undock====
 
====No event on undock====
 +
There are various possible reasons for not getting ACPI docking or undocking events;
  
In some cases you may not get any events on undock. This is due to the ACPI dock drivers only registering the first logical Dock port they encounter and in some rare cases there may be more then one, such as on a ThinkPad X40 with ThinkPad X4 Dock. Patches are [https://bugzilla.kernel.org/show_bug.cgi?id=15521 available], and are merged in 2.6.34.
+
# port-replicators have never supported ACPI docking events
 +
# newer docks (series 3 and newer from 2009 onwards), instead of generating ACPI dock events, generate key events which are only supported by the thinkpad-acpi driver since kernel 3.0. And no default action is taken on receiving these events.
 +
# prior to kernel 2.6.34 the ACPI Dock driver only registered the first logical Dock port, and subsequent dock ports where ignored. This effected the ThinkPad X40 with ThinkPad X4 Dock. For older kernels patches are [https://bugzilla.kernel.org/show_bug.cgi?id=15521 available].
  
 
====Filesystem corruption====
 
====Filesystem corruption====
Line 56: Line 59:
  
 
==Available Docking Stations and Port Replicators==
 
==Available Docking Stations and Port Replicators==
* [[ThinkPad Mini Dock Plus Series 3 - 170W]] <tt>(T400s, T410, T410s, T510, W510, T520, W520)</tt>
+
* [[ThinkPad Mini Dock Plus Series 3 - 170W]] <tt>(T400s, T410, T410s, T420, T420s, T430, T510, W510, T520, T530, W520, W530, X220, X230)</tt>
* [[ThinkPad Mini Dock Plus Series 3 - 135W]] <tt>(T400s, T410, T410s, T510, W510)</tt>
+
* [[ThinkPad Mini Dock Plus Series 3 - 135W]] <tt>(T400s, T410, T410s, T420, T420s, T430, T510, W510, T520, T530, X220, X230)</tt>
* [[ThinkPad Mini Dock Plus Series 3 - 90W]] <tt>(T400s, T410, T410s, T510)</tt>
+
* [[ThinkPad Mini Dock Plus Series 3 - 90W]] <tt>(T400s, T410, T410s, T420, T420s, T430, T510, T520, T530, X220, X230)</tt>
* [[ThinkPad Mini Dock Series 3]] <tt>(T400s, T410, T410s, T510)</tt>
+
* [[ThinkPad Mini Dock Series 3]] <tt>(T400s, T410, T410s, T420, T420s, T430, T510, T520, T530, X220, X230)</tt>
* [[ThinkPad Port Replicator Series 3]] <tt>(T400s, T410, T410s, T510)</tt>
+
* [[ThinkPad Port Replicator Series 3]] <tt>(T400s, T410, T410s, T420, T420s, T430, T510, T520, T530, X220, X230)</tt>
 +
* [[ThinkPad UltraBase Series 3]] <tt>(X220, X220i, X220 Tablet, X230, X230i, X230 Tablet)</tt>
 +
* [[ThinkPad Ultra Dock]], [[ThinkPad Pro Dock]], [[ThinkPad Basic Dock]] <tt>(L440, L540, T440, T440s, T440p, T540p, X240)</tt>
 
* [[USB Port Replicator with Digital Video]]
 
* [[USB Port Replicator with Digital Video]]
* [[ThinkPad Essential Port Replicator]] <tt>(T60, Z series models)</tt>
 
* [[ThinkPad Advanced Dock]] <tt>(T60, Z series models)</tt>
 
* [[ThinkPad Advanced Mini Dock]] <tt>(T60, Z series models)</tt>
 
* [[X200 UltraBase]] <tt>(X200, X200s)</tt>
 
* [[X6 Tablet UltraBase]] <tt>(X60 Tablet, X61 Tablet)</tt>
 
* [[W700 Mini Dock]]
 
* [[W700 Mini Dock 2.0]]
 
  
 
==Withdrawn Docking Stations and Port Replicators==
 
==Withdrawn Docking Stations and Port Replicators==
Line 98: Line 96:
 
* [[ThinkPad Dock II]] <tt>(A,R,T,X series models)</tt>
 
* [[ThinkPad Dock II]] <tt>(A,R,T,X series models)</tt>
 
* [[ThinkPad Mini-Dock]] <tt>(A,R,T,X series models)</tt>
 
* [[ThinkPad Mini-Dock]] <tt>(A,R,T,X series models)</tt>
 +
* [[ThinkPad Essential Port Replicator]] <tt>(T60, T60p, T61, T61p, T400, T500, W500, R60, R61, R400, R500, Z60t, Z60m, Z61t, Z61m, Z61p)</tt>
 +
* [[ThinkPad Advanced Dock]] <tt>(T60, T60p, T61, T61p, T400, T500, W500, R60, R61, R400, R500, Z60t, Z60m, Z61t, Z61m, Z61p)</tt>
 +
* [[ThinkPad Advanced Mini Dock]] <tt>(T60, T60p, T61, T61p, T400, T500, W500, R60, R61, R400, R500, Z60t, Z60m, Z61t, Z61m, Z61p)</tt>
 
* [[UltraBase]] <tt>(TP 570 series)</tt>
 
* [[UltraBase]] <tt>(TP 570 series)</tt>
 
* [[UltraBase X2]] <tt>(X20, X21, X22, X23, X24)</tt>
 
* [[UltraBase X2]] <tt>(X20, X21, X22, X23, X24)</tt>
Line 104: Line 105:
 
* [[ThinkPad X4 Dock]] <tt>(X40, X41, X41 Tablet)</tt>
 
* [[ThinkPad X4 Dock]] <tt>(X40, X41, X41 Tablet)</tt>
 
* [[UltraBase X6]] <tt>(X60, X60s, X61, X61s)</tt>
 
* [[UltraBase X6]] <tt>(X60, X60s, X61, X61s)</tt>
 +
* [[X6 Tablet UltraBase]] <tt>(X60 Tablet, X61 Tablet)</tt>
 +
* [[X200 UltraBase]] <tt>(X200, X201)</tt>
 +
* [[W700 Mini Dock]]
 +
* [[W700 Mini Dock 2.0]]
  
 
==Monitor and Notebook Stands==
 
==Monitor and Notebook Stands==
Line 120: Line 125:
 
==External Sources==
 
==External Sources==
 
*[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-4NXNTP IBMs Docking Solutions overview page]
 
*[http://www-307.ibm.com/pc/support/site.wss/document.do?sitestyle=lenovo&lndocid=MIGR-4NXNTP IBMs Docking Solutions overview page]
*[http://martin-ueding.de/projects/think-rotate/ ThinkPad Scripts]
+
*[http://martin-ueding.de/en/projects/think-rotate/ ThinkPad Scripts]
  
 
{{footnotes|
 
{{footnotes|

Revision as of 20:51, 3 February 2017

Docks allow users to connect a variety of external peripherals simply by attaching their ThinkPad to the dock.

Linux support

With recent distributions, docking and undocking should function out of the box. You can monitor this by running # udevadm monitor and when you dock or press the undock button you should see a flurry of events.

There are some issues though

No event on undock

There are various possible reasons for not getting ACPI docking or undocking events;

  1. port-replicators have never supported ACPI docking events
  2. newer docks (series 3 and newer from 2009 onwards), instead of generating ACPI dock events, generate key events which are only supported by the thinkpad-acpi driver since kernel 3.0. And no default action is taken on receiving these events.
  3. prior to kernel 2.6.34 the ACPI Dock driver only registered the first logical Dock port, and subsequent dock ports where ignored. This effected the ThinkPad X40 with ThinkPad X4 Dock. For older kernels patches are available.

Filesystem corruption

Pressing the undock button will immediately unplug all dock attached devices. This can easily lead to problems, for instance if you have a USB or Ultrabay storage device attached to the dock and have a filesystem mounted RW, this can easily lead to filesystem corruption.

The solution for now is to always make sure any storage devices attached to the dock are unmounted BEFORE pressing the undock button.

External display issues

NOTE!
This only works for devices that register themselves as a dock through ACPI, it does not work for port replicators which are hidden to the OS.
NOTE!
Newer series 3 docks no longer register themselves as a dock, but instead behave like a port replicator, as such the below method does not work. They do however cause a key event on dock and undock which could be used as a trigger, but for now these key events are not exposed by the thinkpad-acpi driver before kernel 3.0

Docking or undocking will also not change the display configuration, which can lead to issues when your undock and your screensaver decided to put the unlock dialog on the secondary display, effectively requiring you to unlock the screensaver blind, before you can press Fn-F7 to restore your display setup to ThinkPad (LVDS) only. This last issue can be resolved by creating a custom udev rule and script as shown below. This script can also be used to take other actions on dock/undock such as automatically configuring your external display on dock.

create a file /etc/udev/rules.d/81-thinkpad-dock.rules

KERNEL=="dock.0", ACTION=="change", RUN+="/usr/local/sbin/thinkpad-dock.sh"

Then create the file /usr/local/sbin/thinkpad-dock.sh

#!/bin/sh
# wait for the dock state to change
sleep 0.5
DOCKED=$(cat /sys/devices/platform/dock.0/docked)
case "$DOCKED" in
	"0")
       #undocked event - lets remove all connected outputs apart from LVDS
       for output in $(/usr/bin/xrandr -d :0.0 --verbose|grep " connected"|grep -v LVDS|awk '{print $1}')
         do
         /usr/bin/xrandr -d :0.0 --output $output --off
       done
	;;
	"1")
	#docked event - sample will created extended desktop with DVI1 to the right of LVDS1
	#/usr/bin/xrandr -d :0.0 --output DVI1 --right-of LVDS1 --auto
	;;
esac
exit 0

And set it executable

chmod +x /usr/local/sbin/thinkpad-dock.sh
NOTE!
The output names shown above are specific to the Intel video drivers. For the ATI Radeon driver they are different. But you best check your output names by running xrandr manually, and adjusting the script appropriately for your needs. The undock event should work on any ThinkPad where the graphics driver supports RandR and the ThinkPad LCD has LVDS in the name.

Part of this is based on information from a thread on the Ubuntu forums

Newer series 3 docks

There is a solution for the Series 3 docks: http://phihag.de/2012/thinkpad-docking.html

Available Docking Stations and Port Replicators

Withdrawn Docking Stations and Port Replicators

Monitor and Notebook Stands

Other

External Sources


FOOTNOTES [Δ]