Easy Palm Device Setup

Most other instructions on how to setup and sync Palm devices on Linux with USB cradles involve Hotsync Button voodoo. This document will give instructions for two methods (the newer libusb and the older custom UDEV rule / visor module method) to setup Palm device without having to even think about /dev/ttyUSB1. Behold the power of UDEV...

Method #1: libusb (newer)

For Jaunty Jackalope and newer systems using USB cradle/cable syncing this is the preferred method and should "just work". While settings are for gnome-pilot / evolution they are similar in J-Pilot (and probably others like kpilot):

Setup Gnome-Pilot / Evolution to use libusb

  1. Starts the "gnome-pilot Settings" program by either:
    • 1a. Go to System -> Preferences -> PalmOS Devices

      • -OR-
      1b. Open a terminal window and type
  2. Under Devices Tab -> (select your device) -> Edit -> Device: usb:

    • gnome-pilotDeviceSettings1.png

  3. Complete settings in "gnome-pilot Settings" and close it.

Method #1 Notes

  • This method takes advantage of the newer style libusb method. This is incompatible with adding the visor module to the kernel since they will conflict and will produce error messages.

  • In most cases it should not be necessary but writing a custom UDEV rule is compatible as long as the KERNEL="usb:" option is used.

Gnome-Pilot / Evolution Syncing

Note: these syncing instructions should work with either the libusb or visor module method.

  1. Either
    • 1a. Press your Palm Pilot's hotsync button and it may sync as is
      • -OR- to monitor gnome-pilot's progress...
      1b. In a terminal window and type
      • 1b1. Press your Palm device's hotsync button and watch gnome-pilot's progress in the terminal window 1b2. After sync completion stop gpilotd by typing in the same terminal window you started gpilotd from:
  2. In a terminal window type
    •       killall gpilotd

      When testing in Lucid Lynx and gpilotd 2.0.17-ubuntu5 with a Treo 700p the original author of this method (nUboon2Age June 23, 2010), found this step avoided problems caused by the gpilotd daemon.

J-Pilot Syncing

  1. Push Palm hotsync button
  2. Start J-Pilot sync

General notes applying to both methods

  • System conflicts between gpilotd and modemmanager package may produce Palm Pilot panics/resets (example) which may require modemmanager's removal.

  • When running from the command line if you see warnings from gpilotd complaining about missing Hal support you may need to add the hal package.
  • If you have the addressbook conduit set to sync with UbuntuOne, and if UbuntuOne service is not available for any reason the sync may stall on that step and your Palm will give you an error message about an incomplete sync. If this happens, set gnome-pilot to sync with 'personal' and it should work.

  • There may be system conflicts between gpilotd and networkmanager. If so, networkmanager may be removed and replaced by wicd.
  • Some devices such PalmOne, Handspring, or Treo devices have different product names and IDs. (In some cases to recognize these devices Gnome-Pilot may require inserting a new entry into /usr/share/gnome-pilot/devices.xml.)

    • These entries include the USB ID numbers for Vendor and Product.

    • An entry in the /usr/share/gnome-pilot/devices.xml file includes two lines such as:

      •          <!-- Treo 700p -->
                 <device vendor_id="0830" product_id="0061" />
    • During synchronizations the command lsusb should show USB-connected Palm devices the system recognizes and will display USB IDs for Vendor:Product. For example: Palm, Inc:Treo 700p is 0830:0061 and might look like: Bus 001 Device 001: ID 0830:0061.

  • In some cases the command lsusb may resolve a USB connection problem since it does a bus scan for USB devices and can 'wake up' a device.

Method #2 Custom UDEV Rules / visor Module (older)

This second method comes originated from the Unofficial Ubuntu Guide and the document "Writing UDEV rules".

Note: It appears this method was working for gnome-pilot and definitely for J-Pilot on Ubuntu Breezy Badger through Karmic Koala.

Write a custom UDEV rule

  1. Create/Edit the file /etc/udev/rules.d/010-custom.rules. One way is by
    • Open a terminal window by going to Applications -> System Tools -> Terminal

    • Type the following line (including for Jaunty 9.04): (enter your password when asked)
      gksudo gedit /etc/udev/rules.d/010-custom.rules
      -OR- for Kubuntu (Triple left click it. Then right click for copy and paste.)
      sudo kate /etc/udev/rules.d/010-custom.rules
  2. Insert the following line into the file:
    • BUS="usb", SYSFS{product}="Palm Handheld*", KERNEL="ttyUSB*", NAME{ignore_remove}="pilot", MODE="666"
    • For older Ubuntu 5.10 (Breezy Badger) you may need to use "==" instead of "=" for some options. For example:
      BUS=="usb", SYSFS{product}=="Palm Handheld*", KERNEL=="ttyUSB[13579]", NAME="pilot", GROUP="uucp", MODE="0660"
  3. Save the file, close the editor application, and close the terminal window.

Note: the file name could be anything since any .rules files in that directory can work. However this name was chosen to be descriptive and to make sure it would load first since they are processed in lexical order (ie. Ubuntu 5.10 (Breezy Badger) reportedly has a 020_permissions.rules file).

Add the visor module to the kernel

For Ubuntu 7.04 (Feisty Fawn), 7.10 (Gutsy Gibbon), 8.04 ( Hardy Heron) and 9.04 (Jaunty Jackalope) if after trying the writing a custom UDEV rule its still not working:

  • Edit the /etc/modules file adding the visor module. Either start an editor application from your menu or from a terminal you can type:
    • gksudo gedit /etc/modules
      • -OR-
      sudo kate /etc/modules
    Add after last line
    • visor
      and save the file. Restart your computer.
  • You can load the module immediately without restarting by issuing
    • sudo modprobe visor


There you go. These custom UDEV rules redirect Gnome-pilot and other sync applications away from their default /dev/pilot to now look for the device at /dev/USB* (or wherever you instruct it). This simple fix allows your Palm device to finally be plug-and-play.

Method #2 Notes

  • J-Pilot Note: REMEMBER, first push Palm hotsync button, after that start J-Pilot sync. Method confirmed working with J-Pilot on Fiesty Fawn, July 17, 2007 by ton-strik.

  • All Palm handhelds create 2 connections when the hotsync button is pushed. In most cases these are /dev/ttyUSB0 and /dev/ttyUSB1. For some they may be /dev/ttyS0 and /dev/ttyS1 or others. Your connections may vary, depending on what other USB devices you have connected.
  • For most Palm devices, the data communication takes place on the second connection created (i.e. /dev/ttyUSB1). There are a handful of Palm devices which use the first connection to do data communication. You may have to try both to discover which is appropriate for your particular device. Reporter had once seen a list specifying which devices went which way.
  • The kernel option ttyUSB* works for most. However if that doesn't work, ttyUSB[13579], or ttyS* or ttyS[1234] may be needed. Run dmesg to determine whether ttyUSB* or ttyS* is actually being used. First try using the corresponding "*" kernel option and if that doesn't work, try using the explicit "[1234]" kernel option. For example in one case the ttyUSB* kernel option udev kept creating a /dev/pilot symlink pointing to /dev/ttyUSB0. The fix was to specify "ttyUSB[13579".

  • Just a note on the difference between "==" and "=" in the above. The former is used for equality comparisons (as in BUS, SYSFS, & KERNEL), whereas the latter is for assignments (as in NAME & MODE). This is a very important distinction which if ignored will yield a rather elaborate udev no-op line in your rules file!

  • J-Pilot works self-contained and matches fields on your device. "kpilot" syncs with Kubuntu/KDE's Kontact and maps fields, as best it can.
  • Underneath, Gnome-Pilot runs pilot-xfer to do its work. So if you're still having problems and want to figure out if Gnome-Pilot is the source of the problem or its something deeper see the Gnome-Pilot entry on this page.

Method #2 Notes From Other Reporters

* If your sync doesn't work, before immediately creating a new UDEV rule, check if you don't already have a similar rule or line related to a Palm device. In Ubuntu 5.10. Reporter had 2 custom rules (created before, in previous attempts) plus a basic one in the udev.rules file. To make it work, reporter had to delete all rules or lines related to Palm in my udev tree. Then create a brand new one as explained. Then test the results by pressing the hotsync button and doing a ls -l /dev/ttyUSB* or ls -l /dev/pilo*. Something must show up if the rule is working. Then gnomepilot/jpilot/kpilot or whatever should work.

  • If syncing is unreliable, consider hardware problems. Try another USB connection. If using a USB hub, eliminate it or try another. Don't be afraid to swap the USB cable either. These are easy things to try, and some syncing problems can be caused by both a hub AND a cable.
  • Reporter used these directions and they worked great. but after upgrading to Gusty Gibbon reporter had problems again. It seems that in Gusty Gibbon there is a udev rule already set up for palm devices that conflicted with this rule above. in the file "60-symlinks.rules" reporter commented out the rule that was for palm devices and my Treo 650 syncs again like before. With the 2 rules together reporter was getting /dev/pilot becoming symlink to IT'S SELF. if you see some thing like this:
    • ls -l /dev/pilot
      lrwxrwxrwx 1 root root 5 2008-01-21 00:10 /dev/pilot -> pilot
      you might have a similar problem.
  • On Hardy Heron syncing didn't work until using the sudo visor modprobe command ton-strik on May 4, 2008).

  • To get Palm T5 to sync reporter added line
    BUS="usb", SYSFS{product}="palmOne Handheld*", KERNEL="ttyUSB[13579]", SYMLINK="pilot

    to /etc/udev/rules.d/010-custom.rules file. This was done with information found on this link.

Method #2 Notes by Specific Devices and Ubuntu Version

Treo 650

Important for all Treo 650 users trying to sync with Evolution: before doing anything, you should make sure that you add the lines <!-- Treo 650 --> and <device vendor_id="0830" product_id="0061" /> to your /usr/share/gnome-pilot/devices.xml file. Without this line, your Treo will behave erratically when syncing and may crash Gnome Pilot (especially if you are trying to sync tasks).

Treo 650 on Ubuntu 5.10 - Breezy Badger

  • Using info from "Writing UDEV rules" reporter got their Treo 650 to work. Reporter amended the line in the "010-custom.rules" file to the following:

    BUS=="usb", SYSFS{product}=="Palm Handheld*", KERNEL=="ttyUSB[13579]*", SYMLINK=="treo". Then run the PalmDevices setup.
  • Reporter was having trouble syncing with all the information provided on this link. It would sync once and then not again, or maybe it was random but it didn't sync every time reporter tried. The reporter switched to jpilot and changed the "010-custom.rules" file to:
    BUS=="usb", SYSFS{product}=="PalmOne Handheld*", KERNEL=="ttyUSB*", NAME{ignore_remove}=="treo", MODE=="666".  That worked like a charm for the Treo 650.  Now it syncs every time.

Treo 650 on Ubuntu 6.10 - Edgy Eft

Created a file named "/etc/udev/rules.d/010-custom.rules" containing

  • 'BUS=="usb", SYSFS{product}=="*[Visor]*", KERNEL=="ttyUSB[13579]", SYMLINK+="pilot", GROUP="dialout", MODE="0660"'. 

Then did "/etc/init.d/udev restart". Synchronization didn't work until J-Pilot was set to 57600. Now it syncs every time.

Handspring Visor Prism(color) on Ubuntu 9.04 - Jaunty Jackalope

Works and requires the visor module method to load on boot.

Treo 680 on Ubuntu 7.04 - Feisty Fawn

Reporter found that Feisty comes with all the right settings; notably no changes are needed to the rules files. However, the rules are set up such that the link /dev/pilot is created dynamically when the OS recognizes the palm device, at the time the hotsync button is pressed. This has complications for the sync software such as kpilot.

The sync software (notably the daemon that's opening the device node) must be started _after_ the hotsync button is pressed. Otherwise the OS might reassign the device node and the daemon will be looking at a stale device node.

This can be avoided by having the sync software talk to /dev/ttyUSB0 directly, rather than via the /dev/pilot, but if you use multiple serial devices, then they might confuse each other, as the OS will pick the next free device node, e.g. ttyUSB1, ...

Treo 755p on Ubuntu 8.04 - Hardy Heron

Treo isn't detected after hitting the sync button on the USB cable until a "lsusb" command is issued in the terminal. Then, it syncs properly via gnome-pilot. Note: Reporter had to load the "visor" module but didn't have to alter any udev config files.

Palm Centro

Palm Centro on Ubuntu 8.10 - Hardy Heron (amd64)

Evolution syncing with Palm Centro worked well after following the instructions above.

Palm Centro on Ubuntu 9.04 - Jaunty Jackalope (amd64)

Just use usb: (libusb) instead of /dev/pilot (visor module) and it will work fine for usb cradle synchronization.

  • Reading this note started the research that eventually resulted in writing the above libusb method (nUboon2Age)

Palm TX on Ubuntu 9.04 - Jaunty Jackalope

in /etc/udev/rules.d/10-custom.rules, add the line (all on one line):

  • BUS="usb", SYSFS{product}="Handspring Visor*", KERNEL="ttyUSB*", NAME{ignore_remove}="pilot", MODE="666"

The Palm TX identifies itself as "Handspring Visor", not with a string starting with "Palm"

Palm T5 on Ubuntu 9.10 - Karmic Koala

  • Ubuntu: 2.6.31-20-generic (Feb 8 09:05:19 UTC 2010)
  • Palm OS: Garnet v.5.4.8
  • J-Pilot:

With this combination, following the visor module method above, any attempt at syncing panics the Palm.

The workaround is File|Preferences|Conduits then disable all conduits except memo. This should permit you to sync successfully. Then enable one more conduit at a time until you find the culprit or you have all the conduits working that you require.

Categories Problem

With the above combination, sync removes all categories. This leaves all memo entries set to 'unfiled'.


PalmDeviceSetup (last edited 2010-08-24 17:13:43 by pool-71-97-184-190)