You are not logged in.
Pages: 1
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
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
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
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
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
Pages: 1