24. Docking Station / Port Replicator

24.1. Definitions

First some definitions. There is a difference between docking station and port replicator.

I use the term docking station for a box which contains slots to put some interface cards in, and space to put a harddisk, etc. in. This box can be permanently connected to a PC. A port replicator is just a copy of the laptop ports which may be connected permanently to a PC.

24.2. Other Solutions

I don't use a docking station myself. They seem really expensive and I can't see any usefulness. Alright you have to deal with some more cables, but is it worth so much money? Docking stations are useful in an office environment when you have a permanent network connection, or need the docking station's expansion bus slots (e.g. for some excotic SCSI device).

Also all docking stations I know are proprietary models, so if you change your laptop you have to change this device, too. I just found one exception a docking station which connects to your laptop via IrDA® the IRDocking IR-660 by Tekram . It supports these connectors: 10Base-T (RJ-45); PS/2 Keyboard; PS/2 Mouse; 25-Pin Printer Port (LPT); IR Transceiver; Power (6 VDC). So it seems that a VGA port and a port to connect a desktop PC directly are missing. This device should work with Linux/IrDA®, though I couldn't check it out.

I would prefer to buy a PC instead and connect it via network to the laptop.

Or use an external display, which usually works well as described above, and an external keyboard and mouse. If your laptop supports an extra PS/2 port you may use a cheap solution a Y-cable, which connects the PS/2 port to an external keyboard and an external monitor. Note: Your laptop probably has support for the Y-cable feature, e.g. the COMPAQ Armada 1592DT.

24.3. Docking Station Connection Methods

AFAIK there are four solutions to connect a laptop to a docking station:

  1. SCSI port (very seldom)

  2. parallel port

  3. (proprietary) docking port (common)

  4. USB (often offered by third party manufacturers)

From Martin J. Evans "The main problem with docking stations is getting the operating system to detect you are docked. Fortunately, you can examine the devices available in /proc and thus detect a docked state. With this in mind a few simple scripts is all you need to get your machine configured correctly in a docked state.

You may want to build support for the docking station hardware as modules instead of putting it directly into the kernel. This will save space in your kernel but your choice probably largely depends on how often you are docked.

1) Supporting additional disks on the docking station SCSI card

To my mind the best way of doing this is to:

  1. Either build support for the SCSI card into the kernel or build it as a module.

  2. Put the mount points into /etc/fstab but use the "noauto" flag to prevent them from being mounted automatically with the mount -a flag. In this way, when you are docked you can explicitly mount the partitions off any disk connected to the docking station SCSI card.

2) Supporting additional network adaptors in the docking station

You can use a similar method to that outlined above for the graphics card. Check the /proc filesystem in your rc scripts to see if you are docked and then set up your network connections appropriately. "

Once you determine this information, you may use a script, similar to the following example, to configure the connection to your docking station at startup. The script is provided by Friedhelm Kueck:

# check, if laptop is in docking-station (4 PCMCIA slots available)
# or if it is standalone (2 slots available)
# Start after cardmgr has started
#
# Friedhelm Kueck mailto:fk_AT_impress.de
# 08-Sep-1998
#
# Find No. of Sockets
SOCKETS=`tail -1 /var/run/stab | cut -d ":" -f 1`
case "$SOCKETS" in
"Socket 3")
echo Laptop is in Dockingstation ...
echo Disabeling internal LCD Display for X11
echo
cp /etc/XF86Config_extern /etc/XF86Config
#
# Setup of PCMCIA Network Interface after start of cardmgr
#
echo
echo "Setting up eth0 for use at Network ..."
echo
/sbin/ifconfig eth0 10.1.9.5 netmask 255.255.0.0 broadcast 10.1.255.255
/sbin/route add -net 10.1.0.0 gw 10.1.9.5
/sbin/route add default gw 10.1.10.1
;;

"Socket 1")
echo Laptop is standalone
echo Disabling external Monitor for X11
cp /etc/XF86Config_intern /etc/XF86Config
echo
echo Network device NOT setup
;;
esac

24.4. Universal USB Port Replicators

I have used a Typhoon USB 2.0 7in1 Docking Station made by Anubis P/N 83057 to check the Linux compatibility of such devices. Actually this device should be named port replicator, because it does not have any extension slots. This device doesn't have a VGA port to connect to an external display. Only a few USB docking stations have this feature. It would be nice to get a report whether a VGA port works or not. Tested with laptop COMPAQ M700 (USB 1.1) and custom made kernel 2.6.1. Note the port replicator didn't work with an Apple PowerBook G4.

How does its different ports work with Linux:

  • USB 2.0 A-type downstream: works with external hard disk and mouse out of the box

  • USB 2.0 A-type downstream: see above

  • PS/2 keyboard: works out of the box

  • PS/2 mouse: works, but for 2.6 Kernels you have to specifiy the right mouse protocol psmouse_proto=imps (if psmouse is compiled as a module).

  • serial port: tested with serial mouse, doesn't seem to work, /dev/ttyUSB0 was assigned

  • parallel port: tested, device /dev/usb/usblp0 assigned, works e.g. with HP LaserJet 2100

  • LAN: usbnet loads, device eth1 was assigned, ifconfig or pump configures the network device

  • transfer port aka host link: works with usbnet module, use ifconfig usb0 to configure the network interface, (USB 1.1 host link B-type) untested

Here is the output of dmesg for the Typhoon port replicator:

hub 1-0:1.0: new USB device on port 1, assigned address 26
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 4 ports detected
hub 1-1:1.0: new USB device on port 3, assigned address 27
hub 1-1.3:1.0: USB hub found
hub 1-1.3:1.0: 4 ports detected
hub 1-1:1.0: new USB device on port 4, assigned address 28
eth1: register usbnet at usb-0000:00:07.2-1.4, ASIX AX8817x USB 2.0 Ethernet
hub 1-1.3:1.0: new USB device on port 1, assigned address 29
usb0: register usbnet at usb-0000:00:07.2-1.3.1, Prolific PL-2301/PL-2302
hub 1-1.3:1.0: new USB device on port 2, assigned address 30
drivers/usb/class/usblp.c: usblp0: USB Bidirectional printer dev 30 if 0 alt 1 proto 2 vid 0x067B pid 0x2305
hub 1-1.3:1.0: new USB device on port 3, assigned address 31
pl2303 1-1.3.3:1.0: PL-2303 converter detected
usb 1-1.3.3: PL-2303 converter now attached to ttyUSB0 (or usb/tts/0 for devfs)
hub 1-1.3:1.0: new USB device on port 4, assigned address 32
HID device not claimed by input or hiddev
hid: probe of 1-1.3.4:1.0 failed with error -5
input: Composite USB PS2 Converter USB to PS2 Adaptor  v1.09 on usb-0000:00:07.2-1.3.4
HID device not claimed by input or hiddev
hid: probe of 1-1.3.4:1.1 failed with error -5
input: Composite USB PS2 Converter USB to PS2 Adaptor  v1.09 on usb-0000:00:07.2-1.3.4