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.
- "normal" syncing,
- syncing to a Windows-XP VM using vmware (see notes below about loading the visor module), and
- (drum roll) ... even getting at the memory stick via MS-import!
[start MSImport on the Clie in your kernel, then mount it using something like mount -t vfat /dev/sdb1 /mnt/MyCoolClie and you can navigate your mounted dir via cd]I will keep the rest of this page around in case it's useful to anyone who is stuck with an older distribution.
![]()
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.
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.
- Download linux kernel version 2.4.20 as well as the usb visor patch from kernel.org.
- 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- 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=mHere 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.
- 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
- Add the following line to /etc/fstab after the /proc entry:
none /proc/bus/usb usbdevfs defaults 0 0
- Sacrifice three chickens and a goat, and bow to the mighty penguin god [optional].
- 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.
- 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
- 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 ttyUSB1If 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 ...)
- 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/ttyUSB1I 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...
- 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!
- 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.
- When I do a backup, the Clie web browsing application NetFront-3.0 causes both gpilotd and pilot-xfer to crash. I've disabled backups for the moment. What causes this? Well, I found this tidbit on USENET:
The problem with NetFront is that their application violates PalmOS specifications, by creating resources larger than 64k in size, which Palm strictly forbids.- Update: (June 4, 2003) The below is no longer true, so I've italicized the text; using MSImport works fine with the stock Redhat 9 kerel version 2.4.20-18.9.
I have not been able to see the memory stick via MSimport. Others with PalmOS 4.x devices have managed to get this to work, but I have not heard of anyone geeting this to work using a Clie with PalmOS 5.0 .
FYI I've compiled in direct or module kernel support for:
Plus, I've applied this patch to drivers/usb/storage/transport.c. No luck.
- usb, usb-devicefs, usb-storage, usb-uhci, usb-serial, usb-serial-generic, visor
- scsi, scsi-blk-sd (scsi disk), scsi cdrom, scsi generic device, the driver for my adaptec card driver
Please send me email if you have any successful experiences to relate.
- Update: (May 16, 2003)
Perry Melange reports that he has this working using the kernel 2.4.21-rc1. You may have problems getting make xconfig to work with this unless you make two trivial changes (looks like someone mucked it up).
- Update: (March 11, 2003)
I bought an external USB MS reader (Dazzle 6-in-1). I can access the MS now via:
mount -t vfat /dev/sdb1 /mnt/clieAnd then treat the MS like a normal file system. Note that /mnt/clie was my choice of names, but that I had to poke around to figure out that the MS was showing us as /dev/sdb1. You also need to make sure the usb-storage module is loaded, and don't forget to umount /mnt/clie when you're done.
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:
- When compiling your kernel, make the visor option a module so you can load and unload it as needed. That is, do not compile it into the kernel directly.
- Update: (June 4, 2003) -- If you use the stock Redhat 9 up2dated kernel, you don't need to compile your own. Just about everthing that can be is a module.
- When setting up your vmware VM, make sure you enable USB (duh!).
- Before syncing in Linux, make sure the visor module is loaded. Perform an lsmod, and see if you see visor in the list. If not, load it via modprobe visor . If you are using pilot-link (alone or because you are using evolution), then you may need to start/reawaken the daemon gpilotd. I do this by simply selecting Tools -> Pilot settings in evolution and then closing it. That's it, you should be ready to try syncing.
- Before syncing in Windows-via-vmware, unload the visor module via rmmod visor. Now go into vmware and push the sync button. It should work. You don't seem to need to kill any active gpilotd instances, but you might need to wake it up when you want to sync with Linux again.
Note that if you have hotplug enabled in Linux, if it's working properly then it will reload the visor module as soon as you finish syncing in Windows. That means you will likely have to explicitly rmmod visor each time you want to sync to Windows.
Last modification: Wednesday September 13, 2006 at 17:44:29 (EDT)