You are not logged in.

#1 2006-01-24 01:50:13

jstech
Member
From: Baltimore
Registered: 2004-05-06
Posts: 27

Palmtop/udev issues [solved]

I'm trying to get my palmtop (Sony Clie TH-55) to work with jpilot, but I am having trouble writing the udev rule to get the /dev/pilot device to show up.  Some background:

I have usb-serial and visor built as modules, and loaded:
lsmod

Module                  Size  Used by
visor                  16780  0 
usbserial              25192  1 visor

And the kernel sees it when I hit the hotsync button:
dmesg|tail

clie_5 ttyUSB1: Sony Clie 5.0 converter now disconnected from ttyUSB1
visor 3-2:1.0: device disconnected
usb 3-2: new full speed USB device using uhci_hcd and address 8
visor 3-2:1.0: Sony Clie 5.0 converter detected
usb 3-2: Sony Clie 5.0 converter now attached to ttyUSB0
usb 3-2: Sony Clie 5.0 converter now attached to ttyUSB1
usb 3-2: USB disconnect, address 8
clie_5 ttyUSB0: Sony Clie 5.0 converter now disconnected from ttyUSB0
clie_5 ttyUSB1: Sony Clie 5.0 converter now disconnected from ttyUSB1
visor 3-2:1.0: device disconnected

Other (potentially) useful information:
udevinfo -p /sys/class/tty/ttyUSB1 -a

device '/sys/class/tty/ttyUSB1' has major:minor 188:1
  looking at class device '/sys/class/tty/ttyUSB1':
    KERNEL=="ttyUSB1"
    SUBSYSTEM=="tty"
    SYSFS{dev}=="188:1"

follow the "device"-link to the physical device:
  looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.0/ttyUSB1':
    BUS==""
    ID=="ttyUSB1"
    DRIVER=="clie_5"
    SYSFS{detach_state}=="0"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1/usb3/3-2/3-2:1.0':
    BUS==""
    ID=="3-2:1.0"
    DRIVER=="visor"
    SYSFS{bAlternateSetting}==" 0"
    SYSFS{bInterfaceClass}=="ff"
    SYSFS{bInterfaceNumber}=="00"
    SYSFS{bInterfaceProtocol}=="00"
    SYSFS{bInterfaceSubClass}=="00"
    SYSFS{bNumEndpoints}=="04"
    SYSFS{detach_state}=="0"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.1/usb3/3-2':
    BUS==""
    ID=="3-2"
    DRIVER=="usb"
    SYSFS{bConfigurationValue}=="1"
    SYSFS{bDeviceClass}=="00"
    SYSFS{bDeviceProtocol}=="00"
    SYSFS{bDeviceSubClass}=="00"
    SYSFS{bMaxPower}=="  2mA"
    SYSFS{bNumConfigurations}=="1"
    SYSFS{bNumInterfaces}==" 1"
    SYSFS{bcdDevice}=="0100"
    SYSFS{bmAttributes}=="c0"
    SYSFS{configuration}==""
    SYSFS{detach_state}=="0"
    SYSFS{devnum}=="7"
    SYSFS{idProduct}=="0144"
    SYSFS{idVendor}=="054c"
    SYSFS{manufacturer}=="Palm. Inc."
    SYSFS{maxchild}=="0"
    SYSFS{product}=="Palm Handheld"
    SYSFS{speed}=="12"
    SYSFS{version}==" 1.10"

cat /proc/bus/usb/devices:

T:  Bus=03 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  7 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=054c ProdID=0144 Rev= 1.00
S:  Manufacturer=Palm. Inc.
S:  Product=Palm Handheld
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  2mA
I:  If#= 0 Alt= 0 #EPs= 4 Cls=ff(vend.) Sub=00 Prot=00 Driver=visor
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=84(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=05(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

lsusb -v:

Bus 003 Device 008: ID 054c:0144 Sony Corp. Clie PEG-TH55 PDA
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x054c Sony Corp.
  idProduct          0x0144 Clie PEG-TH55 PDA
  bcdDevice            1.00
  iManufacturer           1 Palm. Inc.
  iProduct                2 Palm Handheld
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           46
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower                2mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           4
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x84  EP 4 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x05  EP 5 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0

All these outputs were edited to remove irrelevant info.

This is one rule I've tried in /etc/udev/rules.d/10-udev.rules:

BUS="usb", SYSFS{product}="Palm Handheld", NAME="pilot", OWNER="root", GROUP="pilot"

No rule I have come up with has resulted in a /dev/pilot device when I hit the hotsync button (in fact, there is no difference in /dev when I hotsync).

Can someone help me?

Thanks,
John

Offline

#2 2006-01-24 09:13:44

tomk
Forum Fellow
From: Ireland
Registered: 2004-07-21
Posts: 9,839

Re: Palmtop/udev issues [solved]

Well, I can see your problem, but I don't know the answer. The device chain sections in udevinfo should say

BUS=="usb"

not

BUS==""

Do you have other USB devices, and if so, are they working properly? What kernel are you using?

Sorry I can't suggest a solution. There's a rule in the default udev ruleset for palm devices, by the way - it looks like this:

BUS=="usb", KERNEL=="ttyUSB*", SYSFS{product}="Palm Handheld*", SYMLINK+="pilot"

but that won't help you until your udevinfo is right.

Offline

#3 2006-01-24 16:06:01

jstech
Member
From: Baltimore
Registered: 2004-05-06
Posts: 27

Re: Palmtop/udev issues [solved]

I have a CF card reader that works correctly, and the palmtop also works as a Memory Stick reader--which it does correctly.  I am using a custom 2.6.10 kernel.  I'm using the same USB port to (attempt to) hotsync as I use for Memory Stick access.

Offline

#4 2006-01-25 05:44:59

jstech
Member
From: Baltimore
Registered: 2004-05-06
Posts: 27

Re: Palmtop/udev issues [solved]

I found, somewhere on the internet, someone complaining of a similar problem, and it was recommended that they upgrade their kernel, since Sony has been changing things around a lot, apparently.  Sounded like a good enough reason to upgrade to a brand spankin' new 2.6.15.1 kernel, which I did.  Now /dev/pilot shows up (and using the default udev rule).

Now I've just got to figure out all the mess with creating the dev entry for jpilot to find before hitting the hotsync button.

Thanks for the help.

Offline

#5 2006-01-27 07:00:48

jstech
Member
From: Baltimore
Registered: 2004-05-06
Posts: 27

Re: Palmtop/udev issues [solved]

Got the whole thing to work.  The most elegant solution (which I found here) was to make the following script:
/etc/udev/scripts/hotsync

#!/bin/sh
/usr/bin/logger "Sending J-Pilot sync request."
/bin/su - john -c "/usr/bin/jpilot -s"

Then amend the standard udev rule to run it:

BUS=="usb", KERNEL=="ttyUSB*", SYSFS{product}="Palm Handheld*", GROUP="pilot", MODE="660", SYMLINK+="pilot", RUN="/etc/udev/scripts/hotsync"

(I also added the GROUP="pilot", created a pilot group, and added myself to it.)

This setup is really nice, because I just start jpilot, and hit hotsync on the palmtop, and it runs automatically, and jpilot isn't confused about finding /dev/pilot, and it also starts up fast enough that it doesn't want me to hit the hotsync button again, when I already have.

Marking this one [solved].

:-D

John

Offline

Board footer

Powered by FluxBB