How I got my Sony Clie NX70V to sync in Linux
(and with WinXP inside vmware too!)

Update: (June 4, 2003) -- If you are using Redhat 9, then upgrade to kernel-2.4.20-18.9 and you can pretty much skip this page. I am now using the latest evolution 1.3 beta (the anti-aliased fonts look beautiful!), together with its pilot conduits, and "it just works", to coin a phrase. That is, now all work without any special tricks, hacked kernels, or goat sacrifices.

I will keep the rest of this page around in case it's useful to anyone who is stuck with an older distribution.

Greetings!

Shamelessly stolen image of a Sony Clie NV70V I've read other people's Clie-with-Linux pages (e.g.,, this one, this one, this one, and this mailing list), and they were helpful ... but only so far. Here is what worked for me ... be aware that this may not work for you.

I started with a Redhat 7.3 system, "up2date"d plus the current release (1.2) of Ximian evolution and all of its friends (gpilotd, etc.). At the end of the day, I had pilot-link, jpilot, and evolution all sync-ing with my NX70V; note that I did not get coldsync to work, nor was I able to mount the memory stick as a USB file system via MSimport (see below).

I also had previously setup my Clie NX70V using a Windows machine and the install CD.

Previously, I had managed to get evolution sync-ing with my old Palm Vx via a serial cradle, so I was hopeful. Initially, I was also hopeful that I would be able to sync over vmware with a WindowsXP guest, but plugging in my Clie (or any USB device) crashes vmware v3.2 immediately. Despite official claims that USB devices are supported in vmware, it's clear that it fundamentally doesn't work for many people. The vmware support site is curiously silent on whether they intend to fix this.

Update: I finally got vmware to allow syncing with my Clie reliably with a WinXP guest OS, although plugging in either my Casio E200 PocketPC or my Canon A40 digital camera still makes vmware crash immediately; see below for details. (I got gtkam to sync with my camera, so now only the PocketPC is an expensive paperweight.)

Update: With the Redhat 9 stock kernel, I can now attach my camera and PocketPC to my WinXP VM successfully. However, my Dazzle 6-in-1 card reader and my HP 990Cxi printer both cause vmware 3.2 to crash.

What I did

In detail, and to the best of my recollection, here is what I did. Your mileage may vary. Note that I am far from an expert, so this may not be the smartest approach.

  1. Download linux kernel version 2.4.20 as well as the usb visor patch from kernel.org.

  2. Unpack the kernel in /usr/src, and apply the patch.
        cd /usr/src 
        tar xvfz downloadDir/linux-2.4.20.tar.gz 
        cd linux-2.4.20
        patch -p1 < downloadDir/usb-visor-2.4.20-pre11.patch 
        
  3. Configure the kernel to your heart's desire ... as long as you include the following (i.e., after you finish make [x]config, you should see these entries embedded within the resulting file /usr/src/linux-2.4.20/.config):
        # General setup
        # CONFIG_HOTPLUG is not set
    
        # USB support
        CONFIG_USB=y
    
        # Miscellaneous USB options
        CONFIG_USB_DEVICEFS=y
    
        # USB Host Controller Drivers
        CONFIG_USB_UHCI=m
        # CONFIG_USB_UHCI_ALT is not set
        # CONFIG_USB_OHCI is not set
    
        # USB Device Class drivers
        CONFIG_USB_STORAGE=y
    
        # USB Serial Converter support
        CONFIG_USB_SERIAL=m
        CONFIG_USB_SERIAL_GENERIC=y
        CONFIG_USB_SERIAL_VISOR=m
    
    Here is a .config file that worked for me for kernel version 2.4.20, really truly. YMMV.

    Initially, I found that I had to disable hotplug support to get things working; for some reason, hotplug wasn't able to find the right driver even after I hacked the config file /etc/hotplug/usb.distmap to map my Clie to the visor module. However, now I have re-enabled it because it seems that it can correctly load the visor module when I attach my Clie. This also means that when I want to sync to WinXP under vmware, I have to make sure I rmmod visor each time since hotplug keeps reloading the visor module for me.

    My motherboard supported UHCI, but you'll need to figure out what your USB support is; see this document for more information. Probably it's OK just to configure all three options as modules and load the appropriate one at run time.

  4. Now recite the magical incantation that creates and installs a new Linux kernel:
    make dep; make; make bzImage; make modules; make install; make modules_install

  5. Add the following line to /etc/fstab after the /proc entry:
        none       /proc/bus/usb             usbdevfs        defaults   0   0
    

  6. Sacrifice three chickens and a goat, and bow to the mighty penguin god [optional].

  7. Reboot and select the new kernel (probably called linux-2.4.20). If you have to rebuild the kernel a few times and your grub boot menu starts to bloat, you can hand hack the boot menu; on my system, it's in /boot/grub/menu.lst.

  8. As root, run lsmod and see if usbserial, visor, and usb-uhci (or whatever) are running; if not, add them via modprobe.
        # modprobe visor
        # modprobe usb-serial
        # modprobe usb-uhci
    

  9. Follow steps 2 and 3 from this page to make sure that /dev/ttyUSB0 and /dev/ttyUSB1 exists on your system and that it can detect your device. If /var/log/messages says the right stuff (see below), you should be in business:
        Dec 11 09:26:15 olympus kernel: visor.c: Handspring Visor / Palm 4.0 / 
            Cli� 4.x: port 1, is for Generic use and is bound to ttyUSB0
        Dec 11 09:26:15 olympus kernel: visor.c: Handspring Visor / Palm 4.0 / 
            Cli� 4.x: port 2, is for HotSync use and is bound to ttyUSB1
        
    If you have other USB devices already, then the Clie may not be bound to ttyUSB[01]; that's OK, just adjust your conduit settings appropriately. I found it useful to create a symlink so I wouldn't have to keep remembering how to type ttyUSB1. Some Linux PDA programs are expecting /dev/pilot so you could do this:
        # ln -s /dev/ttyUSB1 /dev/pilot 
    (Myself, I used /dev/clie, since I also have a older Palm Vx attached. Why does the Clie want two USB slots? Why bind conduits to the second one? I dunno ...)

  10. Now we need to get a conduit working. Many other pages recommend using coldsync, but I couldn't get version 2.2.5 to work for me (I pressed the hotsync button, started coldsync, and it said "Please press the HotSync button." I suspect this may be a compatibility problem with PalmOS 5.0 devices.)

    Instead, I downloaded and installed version 0.11.5 of the pilot-link suite. The doc/README.usb file was particularly helpful; I strongly recommend that you read it.

    Now press the hotsync button and then try this as root:

        # dlpsh -p /dev/ttyUSB1 
    I got a successful connection on my first try. Within this shell, try "ls" and see if you get a listing of the contents of your Clie. If so, you're in business! Note that you may have to kill any gpilotd process that's running or it will try to grab the sync request for you...

  11. I then started up evolution and configured my conduits in the normal way. After the old turn-it-off-turn-it-on trick that gpilotd seems to require sometimes (i.e.,, open a conduit such as ECalendar, disable it then re-enable it), I was sync-ing with evolution.

    Joy oh joys! A happy camper I am! Long live the penguin!

  12. For fun, the next day I installed version 0.99.3 of jpilot and verified that it too worked just fine with my Clie. However, I think I'll stick to using evolution as my desktop PIM client.

Things that don't work (yet)

Dual syncing with vmware

After compiling a new kernel, I found that vmware (version 3.2.0 with a WinXP-pro guest OS) was able to deal with my Clie after all! Plugging in other USB devices still causes vmware to crash immediately, tho.

While I prefer to sync with Linux (since that's where I keep my datebook and addressbook apps), there are some applications that just seem to want to sync with a windows app. In particular, there's currently no way I know of to install apps to the memory stick via Linux. (As far as I know, there's no way of even accessing the memory stick directly through a PalmOS 5 device, tho I am informed that you can access the stick using an external USB card reader.)

If this sounds like you (Linux host OS, Windows guest OS), then you too can be a dual-syncer! Just make sure you do this:


Michael W. Godfrey PhD, Professor
School of Computer Science, University of Waterloo
Waterloo, Ontario, N2L 3G1, CANADA
Office: DC2340
email:
URL: http://www.uwaterloo.ca/~migod

Last modification: Wednesday September 13, 2006 at 17:44:29 (EDT)