Palm, Inc. doesn't support Linux, but the community supports the Palm. A step-by-step guide to making your Palm device work with Linux.
If you’ve ever been to a Linux user group meeting, installfest, or trade show, you know that the PalmPilot is an essential accouterment to any well-heeled Linux user. If you’ve ever bought a Palm device, you’ll realize how amazing this is, given the fact that 3Com subsidiary Palm, Inc. doesn’t supply any Linux software with its Palm devices.
Palm devices (commonly known as PalmPilots) are the most common type of Personal Digital Assistant (PDA) on the market today. When you buy one of these little machines, you get an address book, calendar, memo pad and some other useful, PDA-type utilities, but two features have made the Palm the runaway success that it is. First, literally thousands of third-party applications can be downloaded and run on the Palm, everything from e-mail clients to Web browsers to games. Second, you can back up and maintain your Palm applications’ data onto your desktop computer, so the calendar and address book you keep on your desktop can be zapped into your Palm device and taken anywhere you might want to carry it.
Most of the five million Palm devices that are out there were sold by Palm Computing, but you can get them from other companies as well: Symbol Technologies makes a Palm that can scan bar-codes; Qualcomm makes a Palm cell phone; and Finland’s Nokia has begun work on a line of wireless devices that will be based on the Palm Computing Operating System (Palm OS).
In the world of the Palm OS, the connection between the Palm device and your computer is usually made with a cradle — basically a souped-up serial cable you use to connect your PDA to your desktop. One end holds the Palm, the other plugs into any free serial port on your Linux system. The cradle has a HotSync button that synchronizes the data between the two computers.
Windows and Macintosh users get software, called the Palm Desktop, to sync up and display Palm data on their desktops when they buy a Palm device, but in the Linux world, things are just a little bit more interesting. First off, there are a number of software packages to chose from KPilot, J-Pilot, and PilotManager being just three of them. Check out our Choices, Choices sidebar (pp. 86-87) to see how the different applications compare. These packages all have different strengths and weaknesses, and they’re all under development, so what they can do actually changes from week to week.
One of the cool things about all of this open source development is that if there’s a particular feature you need, you can e-mail the developer directly — who knows, he might just add the feature you request.
The Palm Desktop software manages a collection of programs (actually DLLs in Windows), called conduits that transfer data between applications on the Palm and the desktop. There is a conduit for your address book, your calendar, your memo pad, and so forth. Linux also uses conduit applications to sync up data, but since Palm, Inc. hasn’t ported the Palm Desktop to Linux, hackers have come up with a variety of ways to organize these conduits. The pilot-link tools, for example, are each separate, standalone, conduit programs. Other Linux software —
J-Pilot for example — provides Palm synchronization tools that allow you to sync up more than one Palm application in a single HotSync session. There are also closed applications, such as StarOffice, that synchronize only with their own desktop software. One thing worth noting, however, is that conduits written for one type of these “conduit managers,” J-Pilot for example, will not work with another (PilotManager).
All of the different synchronization software (except pilot-tools) are based on a graphical user interface (GUI), so they all need to be run from within the X Window System, the graphical system that comes with almost every Linux distribution.
When you’re trying out any of these tools, the very first thing you should do is back up your Palm device. Then back up your desktop data, so that if you have problems while acclimating to your new software, you have a way to recover. As I said before, this stuff is all under development, so you’ll need to proceed with a modicum of caution.
Downloading Palm Stuff from the Internet
One of the great advantages of Palm devices over other digital organizers is the ability to install additional programs and databases. You can get everything from games to Web browsers to dictionaries to electronics references to diver’s charts for nothing, or next to nothing, from the Internet. Program and document files for Palm devices generally end with prc. Data files end with pdb and are generally available from the same sources as program files.
If the program or document is self-contained, it might be made available as a prc file. Often, though, other files are included and all of the files are packaged into a single archive file. Generally, Palm goodies are packaged into zip-formatted (a.k.a. PKZIP) archives, since this is the standard for Windows systems. These are usually tagged with a zip suffix. However they are packaged, they can be downloaded by a Web browser or FTP client.
Linux systems archives are usually built of a directory and some underlying files and subdirectories. There does not seem to be any such convention for zip archives. I suggest that you read the list of files in a zip archive and create a directory for the contents if one will not be created automatically. This will help keep your files organized and prevent you from doing things like accidentally overwriting a file whenever you get two archives with a readme.txt file in them.
Here’s how to download software, in three easy steps:
1. Read the list of files contained in a zip archive:
unzip -l archive-file
2. If the archive is laid out in a directory structure, extract the files:
Otherwise, create a directory and extract the files from the archive into that directory:
unzip archive-file -d directory
3. Once you have unpacked the archive, you can install the prc and .pdb files with a conduit manager (J-Pilot, for example).
Some good places to go trolling for Palm treats are:
|Figure 1: Writing a memo with J-Pilot.|
J-Pilot is as close as Linux gets to Palm, Inc.’s Palm Desktop software. The interface (see Figure 1) is very similar to Palm’s software, and the synchronization and data-editing software is integrated into one easy-to-use tool. It is a good choice for people who are willing to start afresh with new calendar and address-book applications.
The first thing you’ll need to do is install J-Pilot, since it does not come with most Linux distributions. See the Seven Steps To J-Pilot sidebar above for instructions on how to do this.
The initial view of J-Pilot is a bit disconcerting, since nothing much more than a blank space on the screen shows up. If you press any of the four data-view selectors (they look like the buttons on a Palm device), however, you’ll be able to look at your data.
To synchronize your main Palm applications (Address Book, Date Book, To Do List, and Memo Pad) with J-Pilot, you need to press the J-Pilot “Sync” button and then (with your PalmPilot in its cradle) press the cradle’s HotSync button. This will not back up third-party applications and their data. For that, you will need to perform another synchronization, this time pressing the J-Pilot “Backup” button.
If there’s a drawback with J-Pilot, it’s on the PIM (Personal Information Manager) side of things. Editing data can be awkward (new memos are added to the end of the list instead of being inserted alphabetically, things like that) and it is very tricky to add records to the Address Book database. But as I’ve mentioned before, all of these programs are works in progress. Who knows, maybe most of these irritations will be fixed by the time this story is published.
Seven Steps to J-Pilot on Red Hat Linux
|Prepare to Sync: The J-Pilot preferences panel.|
J-Pilot does not come on the Red Hat 6.0 CD-ROM, which means you will not be able to include it as part of your initial system installation. You will need to acquire a copy of it and install the software that it depends on. I use the rpm program in the examples. You may find it easier to use one of the graphical front ends, such as kpackage, but these instructions will work on even the most minimal Red Hat 6.0 system.
1. Download the J-Pilot RPM from http://jpilot.linuxbox.com/. You should get the latest version available, since it will be likely to have bug fixes and additional features.
2.Figure out what additional software you need to install. You should be able to find the software you need (packaged in RPM format) on your Red Hat installation CD-ROM, assuming you have one. Use this command to find out which libraries the J-Pilot RPM requires:
rpm -q -p jpilot-0.95-1.i386.rpm -requires
Currently, all of the packages you need are included on the Red Hat 6.0 CD-ROM. It’s possible that a newer version of the J-Pilot package will require newer RPMs. You should be able to find these on the Red Hat mirror sites listed in http://www.redhat.com/download/mirror.html.
3. Assuming your distribution has the packages you need, mount the distribution CD-ROM that contains them, and run the following commands:
RPM rpm -install pilot-link-0.9.0-8.i386.rpm
The directory and version numbers shown presume that you are using the Red Hat 6.0 CD-ROM. If you don’t have the CD-ROM, you can get these files (or newer versions of them) from one of the Red Hat mirror sites.
4. Install the J-Pilot program:
rpm -install jpilot-0.95-1.i386.rpm
5. Launch J-Pilot
6. Configure J-Pilot. Go to the configuration panel in J-Pilot’s “File -> Preferences” menu. You will need to set the “Serial Port” value to correspond with the serial port you’re plugging your cradle into. The rest of the configuration settings are less essential and can be changed at any time. You will probably wish to set the “Serial Rate” to the highest setting that works with your hardware configuration. Press the “Done” button to dismiss the Preferences panel.
7. Synchronize your data. Place your Palm device in its cradle, press the J-Pilot “Sync” button, and press the HotSync button on your Palm device’s cradle.
|Figure 2: Creating an active list with PilotManager.|
PilotManager is a Perl-based conduit manager that provides a synchronization framework and a variety of conduits from which the user can choose. This gives the user a choice of what Linux software the Palm data is synchronized with. For example, the Date Book data can be synchronized with Sun’s Calendar Manager or Thomas Driemeyer’s Plan. There are also conduits for third-party Palm applications. The choice of conduits is generally made when you install PilotManager and does not need to be redone unless you acquire additional PilotManager conduits or your needs change.
While J-Pilot gives you the option of either backing up everything on your palm device, or one-by-one HotSynching each individual application, PilotManager lets you create what’s called an “active list” of the conduits you want to use in a HotSync session and it invokes the conduits in whatever order you desire (see Figure 2). So you can sync up your Calendar, Address Book, and Memo Pad and then back everything up, just by pressing HotSync once. With J-Pilot this would require four separate HotSyncs.
You need to configure your conduits using PilotManager’s graphical interface, but once things are up and running, you can start a synchronization session from the command line. It’s also possible to choose to sync only a single conduit for one specific synchronization session. Alternatively, you can start up PilotManager in a daemon mode so it monitors your Palm’s serial port, just waiting for you to press that HotSync button.
PilotManager is a straightforward piece of software that is pretty good at the one thing it tries to do: manage communication between a Palm device and a collection of conduits. While there are more conduits available than with any of the other Linux Palm synchronization software, the selection is a bit eclectic.
PilotManager is distributed in a set of three gzipped tar packages. One contains the platform-independent Perl programs that make up the main program. The other two are dependent upon the hardware you have and the versions of your operating system and Perl interpreter. One of these contains Tk (a windowing toolkit). The other contains a collection of small Perl packages. There is no Red Hat RPM for PilotManager, and installation from the prebuilt PilotManager tar packages is currently confounded by the lack of a small-package collection for Linux on the i386, using Perl 5.005. Hopefully, one of these problems will have been corrected by the time this article is printed. Otherwise, you may just need to build these packages yourself.
If you don’t use the X Window System, then pilot-link is the software for you. The pilot-link libraries provide the backbone of almost all Linux (and Unix and OS/2, for that matter) tools that work with Palm devices.
pilot-link has separate, self-contained conduit programs instead of a conduit manager that coordinates a bunch of individual conduit modules. When you want to move data between your Palm device and Linux system, you run the appropriate pilot-link program and press the HotSync button.
There are too many of these programs to list them all here, but some examples are install-memo (copies a Linux file into a Palm’s Memo database), read-ical (copies data from a Palm’s Date Book and To Do databases into the format needed by the ical program), and pilot-addresses (copies Address records into and out of the Palm device).
Probably the single most useful standalone conduit in the pilot-link suite is pilot-xfer. This works with the entire set of Palm databases instead of just one of the applications, so it can be used to back up your entire Palm device onto your Linux box. It’s probably the simplest way of doing a straight backup of your Palm device, something I highly recommend.
To back up all of the data from your Palm device, you would type:
pilot-xfer [-p port]
Once you’ve made a backup file on your Linux machine, you can use the update command to copy changed Palm databases to the Linux backup directory:
pilot-xfer [-p port]
You can restore everything from the backup on your Linux box to a blank PalmPilot with this nifty command:
pilot-xfer [-p port]
pilot-xfer can also be used to install new programs or databases:
pilot-xfer [-p port]
install filename [ ... ]
Finally, if you just want to see which applications are installed on your Palm device, you can use this command:
pilot-xfer [-p port] -list
The pilot-xfer (1) and pilot-link (7)man pages have more details.
Most Linux distributions have a precompiled version of pilot-link available. If you can’t find it for your distribution, you can get the source code from ftp://ryeham.ee.ryerson.ca/pub/PalmOS/ and compile it yourself.
If you do not specify the serial port you’d like to use in the pilot-xfer command, pilot-link tools will default to the port named /dev/pilot. If you don’t feel like specifying your serial port every time you use this command, you can set up a symbolic link from /dev/pilot to the serial port you use (thus creating an alias) with the command:
ln -s /dev/ttyS1 /dev/pilot
Now the default serial port is ttyS1 . So instead of having to type:
pilot-xfer -p /dev/ttyS3
you can type:
pilot-xfer -backup BackupDir.
Of course, you need to be logged in as root to make this change to your system. Replace ttyS1 with the name of the serial port you actually use.
pilot-link is not for everyone. Most people will probably not find its tools as useful as the integrated tools like J-Pilot and PilotManager. When there was nothing else available, pilot-link ruled. But now these tools serve more as useful examples for software developers and a very solid backup to the less stable, under-development conduit managers in use today.
gnome-pilot seems to be in an early stage of development. GNOME, in general, is a pretty snazzy setup, and gnome-pilot carries on that tradition. When gnome-pilot is installed, its configuration panels are seamlessly inserted into the “GNOME Control Center” (GNOME’s system-configuration utility). Very slick!
gnome-pilot is very ambitious in several ways. It handles multiple PalmPilots and multiple cradles. gnome-pilot runs as a daemon, monitoring the configured ports.
gnome-pilot provides the synchronization daemon and a few generic conduits (backup, file install, and e-mail). Other than those, GNOME applications are expected to provide their own conduits.
Because gnome-pilot is still in the early stage of development, it may be difficult for you to actually get it up and running.
|Figure 3: Friendly interface: KPilot’s configuration panel.|
KPilot (Figure 3) is a combination of J-Pilot and gnome-pilot. It incorporates some PIM functionality, but the general setup seems to expect that other programs (notably KOrganizer) will provide the interface that people will actually use to enter data on the Linux side.
KPilot is another “under construction” package, and it may be difficult to get it to synchronize reliably. The version on the Red Hat 6.0 CD-ROM can be installed, but, as with gnome-pilot, I’ve had difficulty getting it to run reliably.
StarOffice is a very complete suite of office tools. It contains just about every office program you can think of, plus a Web browser, and more. One downside to it is that all of the StarOffice programs are encapsulated within the StarOffice desktop, instead of sitting out on your X desktop with your other programs. In fact, that pretty much sums up the StarOffice approach — you are not supposed to need any programs outside of those provided by StarOffice. The only thing that makes this work is that StarOffice is amazingly complete.
Naturally, there is a PalmPilot synchronization module included, which can be optionally installed. This should allow the StarOffice Address Book, Events, and Tasks programs to be synchronized with the Palm Address Book, Date Book, and To Do List applications.
For me, however, all of this synchronization remained highly theoretical, since the PalmPilot synchronization module seems to make my copy of StarOffice crash on startup.
An Imperfect World
Life for the Linux Palm user is not perfect. I had problems with every piece of software mentioned here, and it may be that you do nothing more than simply back up your Palm device with pilot-xfer. But the good news is that, despite the fact that Palm, Inc. doesn’t support Linux, it is possible to make your Palm device work with Linux. And thanks to the power of open source development, things are getting better.
There are other tools out there, and more will appear as time goes on. Don’t be afraid to experiment with new tools that may make your life easier. But do yourself a favor. Whatever Palm software you use, make your first step a complete backup.
BACKUP ON THE ROAD: All of these tools are fine and dandy when you’re in the safety of your home, but what happens when you go on the road? What happens if your Palm dies during a week-long road trip? Are you down and out in a strange town? Not if you’ve got the nifty Penguin Backup utility.
Penguin Backup is a stripped-down Linux system that fits on a floppy. It contains just enough of the system to boot, communicate with a Palm device, and work with data on an MS-DOS formatted floppy disk.
Almost any Intel 80386 or compatible PC can be booted with the Penguin Backup disk. And since this Linux kernel has no drivers for hard disks, it can’t monkey with the hard drive on the system you’re using. Penguin Backup is so small, it doesn’t even have a mouse driver.
When Linux boots, it brings up a series of text-based menus through which you back up your Pilot. Most of the options are self-explanatory. You will need to configure the system after each bootup through the “Basic Configuration” menu option. If you need to format a data floppy with Penguin Backup, you will find the option under the “Tools” menu.
You can download a copy of Penguin Backup from http://wwwipd.ira.uka.de/~witte/pilot/backup/. You will need two floppy disks: one for the Penguin Backup itself and one to store your PalmPilot’s data.
CRADLE RELIEF: If you find that carrying your Palm device’s cradle about is a bit cumbersome, you might be interested in using Palm Computing’s HotSync Cable instead of the cradle. Since there is no HotSync button on this cable, you will need to go into the HotSync application on your Palm device and press the “Local Sync” icon to start the synchronization session.
|CHOICES, CHOICES, CONTINUED|
|RPM, Debian, Source|
|Plan, Ical, Various File Formats|
|RPM, Debian, Suse RPM, Source|
|Integrated With J-Pilot|
|Debian, Precompiled Tarballs, Source|
|Calendar Manager, Plan, Files of Various Formats|
|RPM (Earlier Version), Source|
|KOrganizer, Integrated With KPilot, PopMail|
|CD contains one installation program for all i386-compatible Linux versions|
|Integrated With StarOffice|
|*Basic applications are Date Book, Address Book, and To Do List|
|CHOICES, CHOICES, CONTINUED|
|Functions From Command Line|
|Provides a Daemon|
|C compiler (Suggested: Perl, Tcl, Python)|
|pilot-link, Gtk+, C compiler|
|Yes, After Configuration|
|pilot-link, Perl, Tk|
|KDE (Minimum 2.0 Beta 4), Qt, C++ compiler|
|Yes, Allows For Multiple Users|
|pilot-link, GNOME Development Packages, C compiler|
|Source Is Not Yet Available|
David Silber writes custom computer applications through his company Silber Software Engineering. He can be reached at email@example.com.