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.
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.
AFAIK there are four solutions to connect a laptop to a docking station:
SCSI port (very seldom)
(proprietary) docking port (common)
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:
Either build support for the SCSI card into the kernel or build it as a module.
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
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