The first step to getting your PDA running under Linux is to connect it to your PC. Until recently, all PalmOS devices connected via a serial cable. The latest devices use USB, and some can also connect via infrared.
The serial connection is currently the easiest way to connect your PDA to your PC. Simply connect the cradle to a serial port, then refer to that port when using coldsync or the pilot-link suite. The serial connection is slow, but has the advantage of being tried and tested. It should work with any Palm OS device for which a serial cable is available. Serial cradles and cables are available as accessories for the Palm PDAs, including those which come with USB cradles as standard.
For convenience, you may wish to create a device called /dev/pilot as a link to the serial port. The pilot-link suite uses this device by default, so if the link exists it will save you having to specify it each time you call one of the programs.
To create the link, log on as root and enter the following command:
ln -s /dev/ttyS0 /dev/pilot
Replace /dev/ttyS0 with the serial port to which you have connected the your PDA. The device name /dev/ttyS0 corresponds to COM1 in DOS/Windows terminology, /dev/ttyS1 is COM2, and so on.
You also need to ensure that you have permission to write to the serial port. On a standalone workstation you can change the permissions to allow global access to the port. As root, enter the following command:
chmod a+rw /dev/ttyS0
Greater security can be achieved using the group permissions. Set the permissions to read/write for the group and add the required users to the user list for the group (see man group). (TODO: More detail).
Recent Linux distributions may use devfs for device naming. In this case /dev/ttyS0 may not exist, or may be a symbolic link to /dev/tts/0. This is a new naming scheme brought in with the 2.4 kernel. Simply replace all references to /dev/ttyS0 with /dev/tts/0.
If you use symbolic links with devfs, you may find that the links do not persist correctly after you reboot. The /etc/devfsd.conf file controls the creation of symbolic links to dynamically created devices.
As always, the operation seems to be set up differently under different distributions.
Manrake 8.1 creates a link from /dev/usb/tts/1 to /dev/pilot when the hotsync button is pressed on the cradle.
RedHat 7.2 requires the link to be created manually. The link is then persistent across boots (thanks to Jim Mueller for this information).
USB access to Palm devices is relatively new. The Handspring Visor seems to be well supported, and works with the pilot-link suite. Currently, the Palm m500 series only works with coldsync, although pilot-link support is in active development. Update: the current development version of pilot-link, 0.10.x, has support for USB devices. See the pilot-link section for more about this release.
To use any USB device under Linux, you need to have USB support in your kernel. You will also need the relevant modules available. Most (TODO: Check which distros work out of the box) recent Linux distributions have USB support enabled by default. To check your system, try the following command as root:
If you get no output from this command, then the module is available and you do not need to recompile your kernel. If this does not work, try the alternative usbserial module:
This is used by some distributions, such as Redhat 7.0.
If you need to set up USB support in your kernel, the Handspring Visor with Linux mini-HOWTO provides instructions. (TODO: Incorporate into this HOWTO?)
Once USB support is set up, you should use device /dev/ttyUSB1 to communicate with your PDA. Note that this device name only exists after you have pressed the hotsync button on the cradle. You must press the button before running the connection software.
If you have problems synchronising via USB, try an updated kernel. There may be some timing issues with the USB driver. For example, I found that stock Mandrake 8.1 did not work on one PC, but worked first time on a faster PC. Upgrading to a stock 2.4.17 kernel solved the problem and worked fine on both PCs.
It is possible to physically connect your PDA to one PC, and synchronise it with another PC elsewhere on the network. This might be a useful feature if you need to synchronise with a PC to which you cannot physically connect your PDA.
Once again David A. Desrosiers has written a (less comprehensive) HOWTO on the subject. (TODO: Include this inline? Not convinced of the value of this method - anyone care to comment?)