Palm Zire support under Linux 2.4.10

Here is the cheap - and probably dirty - trick I used to sync (via USB) my Palm Zire to my Linux box (actually a SuSE 7.3, with a 2.4.10-SuSE kernel). This device is naturally supported from kernel 2.4.20, but if - as I did - you don't want to change your whole kernel (too slow a connection) or wait for the next release of your favorite distro (too long), here is what you can do. I assume your kernel is 2.4.10 or newer, and therefore naturally includes the visor driver with support for USB-connected Palm devices and PalmOS 4.0 hack. Maybe you can do it with earlier 2.4 kernel, but not sure... (let me know if it works)

Disclaimer: I'm no way close to be a kernel hacker. The trick worked for me, no garantee it will work for you!

Following the Palm ZIRE drivers/usb/serial/visor patch from David Garcia, I directly hacked the original driver sources visor.c and visor.h, maintained by Greg Kroah-Hartman. As for me, it was version 1.4 (08/30/2001). So, here are the steps:

  1. Install (if needed) the Kernel sources. visor.c and visor.h will then be under something like /usr/src/linux/drivers/usb/serial/.
  2. Edit (as root) these files to add support for the Zire: In my case, I finally obtained these visor.h and visor.c files.
  3. Compile and install this single module (as root), with the following commands (thanks to David A. Desrosiers for the tip):
    make modules SUBDIRS=drivers/usb/serial
    make modules_install SUBDIRS=drivers/usb/serial
    I did not test the previous commands, and as for me, I used to compile this single module (as root), with a command such as
    gcc -D__KERNEL__
           -I/usr/src/linux-2.4.10.SuSE/include -Wall -Wstrict-prototypes
           -Wno-trigraphs -O2 -fomit-frame-pointer -fno-strict-aliasing
           -fno-common -pipe -mpreferred-stack-boundary=2 -march=i586
           -DMODULE -c -o visor.o visor.c
    and to replace the initial module visor.o (most probably somewhere like /lib/modules/2.4.10/drivers/usb/serial/ by the brand new module.
  4. Load the usbserial and the visor modules (in that precise order).
  5. If needed, check the permissions on the USB device, probably /dev/ttyUSB1.

You should be all set: you can now hotplug your Zire, and sync it e.g., with J-Pilot. Note that you probably need a recent version of Pilot-link (mine was v0.11.7, but any 0.11.x version should do it). Let me know if it works with you!

By the way, the Palm Zire looks like is a cheap and nice little machine!

What about the Palm Zire71 (and other fancy devices)?

Antonio Giungato applied the previous trick to add support for the Palm Zire71 to his 2.4.20 kernel, by defining the following device in visor.h:

#define PALM_ZIRE71_ID 0x0060
and adding the corresponding lines to visor.c.

Most probably the trick would work equally well for other similar devices, once the vendor/product ID (e.g. 0830/0x070 for Palm Zire) is known. Have a look in e.g., /var/log/syslog after having plugged your device to know the vendor/product IDs.

For the latest developments regarding these matters (driver model updates and prod/vendor ID strings), have a look at the Device matrix and Visor structures of the pilot-link.org WIKI (thanks to David A. Desrosiers, maintainer of pilot-link)


Comments welcome!/Les commentaires sont les bienvenus! Contact

This page was last modified on Mon Aug 25 10:44:44 CEST 2003