# How to Sync a Sony Clie with jpilot MINI HOWTO!!  (Solved)

## pcardout

Hi -- I have at this point successfully backed up my Sony Clie 

pilot-xfer --port /dev/ttyUSB1 --backup ./pilot ,

And also gotten it to synch with Jpilot

 I feel that newbies could benefit from this post

as an overview of what to do.  [It's not for the faint of heart!]

SECTION I -- REFERENCES 

For Palm-Linux Newbie's

A) The most coherent overview I've found is right here: 

http://www.faqs.org/docs/Linux-mini/Handspring-Visor.html

B) An excellent post from the gentoo forum (It actually is the thing that helped me most - and showed me that

you don't need to mess around with evolution or with udev)

https://forums.gentoo.org/viewtopic-t-299095-highlight-jpilot+clie.html

C) Another rather clear overview of what you have to do, and it goes into what kernel options you need to compile in support directly

http://www.linuxlookup.com/html/guides/visor-jpilot.html

D) This is also very good, though again, he favors modules over compiling support in, but he explains what modules

are needed and why they are all called "visor".

http://pilot-link.org/README.usb

E) A less good, but Clie specific one is

http://homepages.nildram.co.uk/~milnber/cliehowto.html

(The problem with reference "E" is the author assumes you are using modules rather than compiling in support.  Still, it has many good parts, specifically, it talks about how to mount the Clie and its memory stick as read/writeable devices)

SECTION II -- PROCEDURE

How to get as far as synching with pilot-xfer

(1) emerge jpilot (it also emerges pilot-xfer if you haven't installed that already)

(2) Recompile kernel with Palm support.  There are other posts on how to do this, but I'm having a hard time finding them, so here are the essentials:

Here are several important lines from my /usr/src/linux/.config file  

```

CONFIG_USB=y

CONFIG_USB_DEBUG=y

CONFIG_USB_DEVICEFS=y

CONFIG_USB_ARCH_HAS_HCD=y

CONFIG_USB_ARCH_HAS_OHCI=y

CONFIG_USB_EHCI_HCD=y

CONFIG_USB_OHCI_HCD=y

CONFIG_USB_UHCI_HCD=y

CONFIG_USB_HID=y

CONFIG_USB_HIDINPUT=y

CONFIG_USB_SERIAL=y

CONFIG_USB_SERIAL_VISOR=y

```

No one recommends editing .config by hand, so here is how those lines got there:

/usr/src/linux/make menuconfig

Then (Each slash (/) denotes another level deep in menuconfig)

/ Device Drivers / USB Support

   Enable EHCI  and OHCI and UHCI support

   Enable USB HID (full support) and HID input layer (the next option in menuconfig)

   Finally locate and enable "USB Serial Converter Support" , descend another level

   and finally enable  

   USB Handspring Visor / Palm m50x / Sony Clie Driver (it's all one line)

(3) I'm assuming you know how to recompile and install your kernel after make menuconfig.

(4) Now attach your Palm or Sony Clie with USB support.

(5) Can do dmesg or, what I like  tail -f /var/log/messages (as root of course)

You will see nothing, then, when press the hot-sync button on palm, you'll see this:

```

Mar 24 17:06:35 dirac hub 1-0:1.0: state 5 ports 8 chg ff00 evt 0040

Mar 24 17:06:35 dirac ehci_hcd 0000:00:02.2: GetStatus port 6 status 001803 POWER sig=j  CSC CONNECT

Mar 24 17:06:35 dirac hub 1-0:1.0: port 6, status 0501, change 0001, 480 Mb/s

Mar 24 17:06:35 dirac hub 1-0:1.0: debounce: port 6: total 100ms stable 100ms status 0x501

Mar 24 17:06:35 dirac ehci_hcd 0000:00:02.2: port 6 full speed --> companion

Mar 24 17:06:35 dirac ehci_hcd 0000:00:02.2: GetStatus port 6 status 003001 POWER OWNER sig=se0  CONNECT

Mar 24 17:06:35 dirac ohci_hcd 0000:00:02.1: wakeup

Mar 24 17:06:36 dirac hub 3-0:1.0: state 5 ports 4 chg fff0 evt 0008

Mar 24 17:06:36 dirac ohci_hcd 0000:00:02.1: GetStatus roothub.portstatus [2] = 0x00010101 CSC PPS CCS

Mar 24 17:06:36 dirac hub 3-0:1.0: port 3, status 0101, change 0001, 12 Mb/s

Mar 24 17:06:36 dirac hub 3-0:1.0: debounce: port 3: total 100ms stable 100ms status 0x101

Mar 24 17:06:36 dirac ohci_hcd 0000:00:02.1: GetStatus roothub.portstatus [2] = 0x00100103 PRSC PPS PES CCS

Mar 24 17:06:36 dirac usb 3-3: new full speed USB device using ohci_hcd and address 9

Mar 24 17:06:36 dirac ohci_hcd 0000:00:02.1: GetStatus roothub.portstatus [2] = 0x00100103 PRSC PPS PES CCS

Mar 24 17:06:36 dirac usb 3-3: ep0 maxpacket = 16

Mar 24 17:06:36 dirac usb 3-3: new device strings: Mfr=1, Product=2, SerialNumber=0

Mar 24 17:06:36 dirac usb 3-3: default language 0x0409

Mar 24 17:06:36 dirac usb 3-3: Product: Palm Handheld

Mar 24 17:06:36 dirac usb 3-3: Manufacturer: Palm, Inc.

Mar 24 17:06:36 dirac usb 3-3: hotplug

Mar 24 17:06:36 dirac usb 3-3: adding 3-3:1.0 (config #1, interface 0)

Mar 24 17:06:36 dirac usb 3-3:1.0: hotplug

Mar 24 17:06:36 dirac visor 3-3:1.0: usb_probe_interface

Mar 24 17:06:36 dirac visor 3-3:1.0: usb_probe_interface - got id

Mar 24 17:06:36 dirac usb 3-3: palm_os_4_probe - error -32 getting connection info

Mar 24 17:06:36 dirac visor 3-3:1.0: Handspring Visor / Palm OS converter detected

Mar 24 17:06:36 dirac usb 3-3: Handspring Visor / Palm OS converter now attached to ttyUSB0

Mar 24 17:06:36 dirac usb 3-3: Handspring Visor / Palm OS converter now attached to ttyUSB1

```

Congratulations! -- Linux sees your Palm.  Now there is some discussion about just where to mount it.  There are those who say it goes in

/dev/tts/1 or some such, but the messages above suggest it wants to go in /dev/ttyUSB0 and /dev/ttyUSB1.  

I've been able to glean

that /dev/ttyUSB1 is the correct device for hotsynching, so, in jpilot, under prefs, you put /dev/ttyUSB1.  

It can be useful to have a link between /dev/pilot and /dev/ttyUSB1.  For example, then you can run "install-user" with

default port settings, and also run Jpilot with default settings.  Here is how to do that.  It can't hurt!

```

cd /dev

ln -s /dev/ttyUSB1 pilot

```

Then in Jpilot, I can use /dev/pilot as the synching device in preferences.

One problem is that I had no /dev/ttyUSB1.  

(The error I got then was:   "unable to bind to the port")

So I created /dev/ttyUSB1  as follows.

```
 mknod /dev/ttyUSB0 c 188 0

            mknod /dev/ttyUSB1 c 188 1

            mknod /dev/ttyUSB2 c 188 2

            mknod /dev/ttyUSB3 c 188 3

            etc...

            chmod 666 /dev/ttyUSB*
```

Here is how jpilot looked when I click "Sync" after doing that.

****************************************

 Syncing on device /dev/ttyUSB1

 Press the HotSync button now

****************************************

[AND SO YOU PRESS HOTSYNC]

pi_bind Invalid argument

Check your serial port and settings

Exiting with status SYNC_ERROR_BIND

Finished 

Despite this error, this represents progress.  Before I did the mknod commands above, I got a

"unable to bind to the port" error from jpilot. That error is specifically mentioned here:

http://www.faqs.org/docs/Linux-mini/Handspring-Visor.html

So, what's the final step?  It turns out that the pilot-xfer package comes with several useful utilities.  The most critical of these is

install-user.  Now install-user, if provided with arguments, will create a user in your Palm (and perhaps wipe out an existing one?).

Fortunately, if run w/o arguments, it merely sucks existing user and UserID info out of a palm.  So, if it's a new Palm and Linux is its first

OS, you need to create a user with Install User.  If it's already been setup on a Windows machine, just suck that info out.

```

install-user

   No $PILOTPORT specified and no -p <port> given.

   Defaulting to '/dev/pilot'

   Port not connected, sleeping for 2 seconds, 3 retries..

   Listening to port: /dev/pilot

   Please press the HotSync button now... Connected

   Palm user: Mahatma Gandhi

   UserID:    7402

```

Once install-user has been run, Jpilot sucks the user and UserID out of wherever it put them.  (Haven't figured out where that is, but no matter!)

SECTION III - ERRORS

1) Note from my dmesg I still get this error, even though everything works great.

Mar 24 17:06:36 dirac usb 3-3: palm_os_4_probe - error -32 getting connection info 

Like so many errors, it doesn't seem to matter.  Everything works fine.  Ignore it!

2) Here's a nice error:    "unable to bind to the port"  (This shows up when try to Sync in Jpilot).

It translates as, "You need to create /dev/ttyUSB1 ... dummy".

3) Here's my final error, also from Jpilot when trying to Sync.)

pi_bind Invalid argument

Check your serial port and settings

Exiting with status SYNC_ERROR_BIND

This one means: "You never ran install-user".

----------

## TheRAt

instead of using /dev/ttyUSB1 to sync, can U use /dev/usb/tts/1 ??

----------

## pcardout

This works!!

pilot-xfer --port /dev/ttyUSB1 --backup ./pilot

 *Quote:*   

> 
> 
> Listening to port: /dev/ttyUSB1
> 
> Please press the HotSync button now... Connected
> ...

 

So my remaining problem is only with jpilot.   Or perhaps I don't understand conduits.

----------

## pcardout

/dev/USB/tts/1 didn't work.  Same error as /dev/ttyUSB1.

Got another idea ... or can you explain the error??   And thanks much for your quick response!!

----------

## TheRAt

 *pcardout wrote:*   

> (BTW -- Do you know those ladies who are on your icon ... quite an eyeful even at 80x60 pixels!)

 

They have been on my desktop for a while now... called the Digital Girls... they are not a photograph...

----------

## TheRAt

Not sure what the error is... Does the user you are trying to sync with have access to /dev/ttyUSB1 ??

----------

## pcardout

The How-To that I cited in my first post recommended after the mknod that one do a

chmod 666 /dev/ttyUSB1 

in order to finesse all these permissions issues.  So yes, my user does have permissions.

OTOH -- I haven't created any users in JPilot ... it isn't clear where you do that.  I thought maybe

on the first sync it would happen (as on Windoze).    

Too, there is some post suggesting that jpilot needs to be

told it's talking to a Clie [scratch that, it's KPilot that needs that, not jpilot!]

----------

## pcardout

Excepts from my /var/log/messages:

```

Mar 24 17:06:36 dirac usb 3-3: new device strings: Mfr=1, Product=2, SerialNumber=0

```

Should "SerialNumber=0" make me suspicious? 

```

Mar 24 17:06:36 dirac usb 3-3: palm_os_4_probe - error -32 getting connection info

```

So what's error -32 ... and does it matter? 

----------

## pcardout

You are reading a long thread as I suffered through a new Linux Pilot setup.  I'm done now.  It works ... All happy.  Read the first post of the thread for a HOWTO.

Please add more detail if you want in subsequent posts.  I might actually make a formal HOWTO sometime.

----------

