March 17, 2005

Synchronizing PalmOS devices with Linux

Author: Preston St. Pierre

Smart handheld devices or personal digital assistants (PDA) extend our access to the information on our desktops, from addresses to telephone numbers. Unfortunately, when it comes to vendor support for synchronizing this information with a *nix operating system, the options are limited. In this article, we'll review the various GPL-based suites available for synchronizing PalmOS-based devices with Linux.

Various open source projects offer handheld synchronization. GNOME Pilot aims at GNOME users, KPilot fits the KDE crowd, and ColdSync is for non-GUI enthusiasts. Among the earliest such software are J-Pilot and PilotManager.

Your first step in trying to use any of the aforementioned packages is to assure that your desktop system can detect the PDA hardware. You may need to load a few a kernel modules or even recompile your kernel to make it work, but chances are that won't be necessary; virtually all modern distros come with a preconfigured kernel capable of detecting most USB hardware and PalmOS devices.

To start, execute the following queries from the command line: dmesg | egrep usb and lspci -v. The output should tell you about the hardware your system recognizes. If you see any errors or warnings, then you need to follow the typical drill for hardware detection on Linux, which is to search for the appropriate drivers and modify your kernel either through recompilation or through module loading.

Once you know your system is aware of its USB hardware, the second step involves checking and loading the kernel modules necessary for the syncing process. These modules are standard in most recent kernels, so the process should be straightforward unless you have an old or non-standard kernel. Execute modprobe usbserial to load the USB Serial Driver, then check your system log using tail -f /var/log/messages. You should see a line like kernel: usbserial.c: USB Serial support registered for Generic.

Next you need to load the visor module, which is at the heart of the syncing process.Execute modprobe visor. You should see a message like the following in your logs: kernel: usb-serial.c: USB Serial support registered for Handspring Visor / Palm OS. As a final check, invoke the lsmod command to see the loaded kernel modules. You should see both the usbserial and visor modules in the output.

Once you know that your USB port and handheld hardware are being detected, your next step should be installing pilot-link. This package contains what it dubs conduits, which play a critical role in enabling any of the aforementioned packages for syncing handhelds. Conduits are small daemon-like applications that allow you to move information from your handheld to your workstation.

You can install pilot-link either through a binary package or through the classical source code build process (./configure;make;make all). After installation, verify that pilot-link's library path is included in the ld.so.conf file, and execute ldconfig to link the package libraries, a process that will avoid a reboot. You must link pilot-link's libraries before installing any software syncing suite, given their dependencies on this package.

As an example of a syncing suite, let's look at J-Pilot. J-Pilot is available in RPM, Debian, or Slackware binaries or through source code. After installing it you can start it up with the command jpilot.

Click to enlarge

J-Pilot's interface has calendar, address, to-do, and memo sections, and offers editing, sorting, and syncing options. But before you can copy your Palm information onto your Linux workstation, you need to take one more step. J-Pilot by default is configured to search for your handheld at /dev/pilot, while your Linux distribution will surely assign your hardware to the typical USB address of /dev/usb/ttyUSB0 or /dev/usb/ttyUSB1.
You can create a soft link between the two with the command ln -s /dev/usb/ttyUSB0 /dev/pilot, assuming your handheld was assigned to /dev/usb/ttyUSB0. Finally, by selecting the Sync option in J-Pilot, you will be prompted to press the sync button on your handheld cradle, at which time your information will be downloaded to your Linux workstation.

J-Pilot is a helpful application for sharing important data between Linux and PalmOS-based devices. It and the other software suites in the same realm can help you unlock the information residing on your handheld devices for Linux, and vice versa.

Daniel Rubio is the principal consultant at Osmosis Latina, a firm specializing in enterprise software development, training, and consulting, based in Mexico.