My Palm Tungsten T3 normally sits downstairs, plugged into the family PC, but I have got fed up with forgetting to bring it up to my office on a Monday morning and consequently missing a conf call!
So, I've hooked up the cradle to a spare USB port on my trusty SunBlade 2000 and wondered whether or not I could actually get it to do anything remotely interesting with Solaris.
First problem - I need to install a device-driver for the device. A rather slow poke around the internet turned up this handy tip from a colleague at Sun who was trying to get his digital camera working with Solaris. I followed the example and determined that the magic needed to get Solaris to install a driver for the Palm Tungsten T range is:
# add_drv -m '* 0666 root sys' -i '"usb830,60.100"' ugen
This installs the generic USB driver when the Palm attaches itself to the USB bus when the "HotSync" button is pressed.
So now, how about getting some form of syncing of the Palm ?
Well, after more furkling around on the Internet (it is a jolly useful medium, don't ya think?), I discovered the joys of libusb and also that Solaris 10 has this installed by default. Coupled with a little bit of Open Source: Coldsync, this looked like it should do the trick.
It didn't. Well, not at first, anyway.
I downloaded and built the 3.0pre4 version of coldsync, ran it up, and then had all manner of wierd and wonderful problems with the USB endpoints. I thought, at first, that this was a fault with the Solaris libusb implementation, but determined to press on, I decided to go for the bleeding edge and use the Coldsync source from their CVS repository.
I downloaded the source from the repository, copied the "configure" script over from the 3.0pre4 sources and proceeded to build it. There are a few niggles in the "install" target (like: it looks in the wrong place for install-sh), but I managed to get it built and installed without too much fuss.
So, now to running it. First, I set up a simple config file for coldsync:
$ more ~/.coldsyncrc
#
# We use libusb for the coldsync operations.
# Note that /dev/palm is a symlink to: /devices/pci@8,700000/usb@5,3/device@1
# This device is created when the Palm attaches itself to the USB bus in
# preparation for a HotSync operation. The "ugen" USB driver is bound to
# the device as a result of an add_drv command:
# add_drv -m '* 0666 root bin' -i '"usb830,60.100"' ugen
#
listen libusb "usb" {
device: "/dev/palm";
}
#
# Default directory for syncing.
#
pda "My Tungsten T3" {
snum: "";
directory: "/export/home/trevw/.palm";
username: "xxxx";
userid: ######;
}
Then, I ran coldysnc as follows (NOTE: not as root):
$ coldsync --listen usb
This prompts you to press the HotSync button on the cradle and away you go.
Well, I had reasonable success. Many of the databases on the Tungsten synced ok, but a couple (notably the calendar) hung for a few seconds before complaining about not being able to read a record.
I spent a lot of time on debugging this, and I thought I'd got it at one point - it looked as if the Tungsten was reporting that a record was not found in the db (I'm not sure whether this is ok or not), and that was causing the sync of that db to fail. With some debugging code in place, I think I finally got it syncing all databases. However, having removed the debugging to try to get a better handle on how to properly fix the source, I started getting USB timeouts with requests for certain records from some of the databases (calendar again).
I have temporarily given up trying to figure out what's wrong, but thought I'd document what I'd got so far, anyway, in case anyone is remotely interested.
BTW, one thing I did get working was to dump the Memo db out to flat file. I added the following to the .coldsyncrc file:
#
# Set up a conduit to dump memos to text files.
#
conduit dump {
path: "/export/home/trevw/.palm/conduits/memo-text";
type: memo/DATA;
arguments:
File: /export/home/trevw/Docs/Personal/Palm/Memos;
Delete: no;
}
Sure enough, after the sync, /export/home/trevw/Docs/Personal/Palm/Memos contains all of my memos.
Cool! Now, I just need to figure out a use for it
