Using Palm Devices with Unix

This is a collection of notes I've made about using Palm devices on unix. Currently the only box I have to connect my palm to is a annoying Linux box at work... So I don't have details for NetBSD yet. I've been told that USB devices work much better under NetBSD than Linux, so I'm looking forward to moving my stuff as soon as I get a NetBSD box that has a USB port!

Pilot-Link Toolkit

Pilot-link is the basis for most unix palm connectivity. It is a suite of tools, common libraries, and ??? Most of the other Palm tools for unix are built on top of it.


J-Pilot is an X Windows System application which uses the Pilot-Link libraries to communicate with Palm devices. J-Pilot provides a GUI interface to editing the data stored in the Palm. It also provides syncing, backup, program loading, and other facilities.

One big downfall of J-Pilot is that it does not MERGE the info that it holds with the info on the Palm. If you need to add "info" to your database and your palm is not present you are hosed. Or if it is deleted by accident from your palm, you lose it from the J-Pilot database. Oops.

Configuring Pilot tools and the Palm Pilot

  1. You will need to identify which port the Palm Hot-Sync cradle is connected to. You can specify the -p port option to each Pilot-Link command, and to each application. OR, you can specify the device in the environment variable PILOTPORT, and that port will be used unless over-ridden by a command-line option, or by some GUI port specification.

  2. To use your Palm Pilot with the Pilot-Link tools you need to setup your palm. You must set a username and id on the Palm. This is done so that each unit may be identified uniquely. This can be done with the Pilot-Link tool install-user. I use my unix username and UID to keep things simple:

    install-user -u USERNAME -i UID



Before using the various Palm software you need to initialize the linux drivers. Before starting any palm user-land applications ..

  1. Connect the hot-sync USB cradle to a available USB port.
  2. Dock the palm into the cradle.
  3. Initiate a hot-sync button with the hot-sync button.

This will cause the unix kernel auto-module loader to configure the USB and "Visor" (aka palm USB) devices. After that is complete it will will leave the /dev/ttyUSB devices setup to work with a palm. Whenever I run it I see the kernel configuring all USB tty devices:

If you examine the dmesg output you will see the USB infrastructure being initialized. Unfortunately all this code does not indicate which USB port the cradle is connected to. You have to know or discover which hardware port one the cradle is connected to.

I don't know how that works if you have a USB hub -- my guess is that the Linux Driver doesn't have multiple USB device support. I'll update this section if I get a USB hub to experiment with.

After doing that, you can set the PILOTPORT environment variable to the pathname of the appropriate USB tty device. That works for pilot-link tools. $PILOTPORT will also work with jpilot if you leave the serial port entry in the GUI config empty.

As of Redhat 9 the USB drivers immediately unload once a device is unplugged. This means you can no longer just hit the "sync" button in Palm applications, dock the palm, and tell it to sync. The palm must be connected before any program->palm communication takes place. This is somewhat of a pain compared to the prior USB infrastructure where ... "it just works" (after the first time after boot).

Bolo's Home Page
Last Modified: Thu Jun 10 11:29:03 CDT 2004
Bolo (Josef Burger) <>