I've run into a weird one, and if anyone has any ideas, I'd appreciate it.

I'm working with a joystick from CH Products.  It works OK when it's connected
to the system at boot, but not correctly after a hot connect, or a driver
re-load. The data reported never changes.  In fact, the values seemed to be
latched to whatever the joystick would report when it's first connected.  For
example, if the joystick button is held down when the USB connector is plugged
it, the button state is reported ON ever after, regardless of the actual button
state.

I've tried this on a number of systems, with both VIA and Intel UHCI
controllers - it's all the same.  I've tried the uchi driver instead of
the usb-uchi driver; still no good.

If I run Win2000 on the same box, it works each time without fail.

I've turned on debug in the driver, and the interrupt transactions are
occurring, but the data in the transfer buffer is the same each time.  I even
zero-ed out the buffer after each report was received, to make sure the data
was changing.  I've dumped the TD records, and there's no error status or NAK
reports.

I've used SnoppyPro to find out what setup messages are being sent to the
device, and don't see anything particularly different from what the usb-uhci
driver generates.

I'm working with 

kernel 2.4.21-0.26mdk
usb-uchi.c Revision: 1.275
hid-core.c: v1.8.1
CH PRODUCTS CH HFX 2 AXIS 1 BUTTON JOYSTICK 68e e2 0

There don't seem to be significant differences between the UHCI driver in the
linux-usb.org BitKeeper 2.4 archive and the one I have.

For what it's worth, here are some extracts from the log files.
Thanks in advance for any help with this.

 Product: CH HFX 2 AXIS 1 BUTTON JOYSTICK
 usb.c: unhandled interfaces on device
   Length              = 18
   DescriptorType      = 01
   USB version         = 1.01
   Vendor:Product      = 068e:00e2
   MaxPacketSize0      = 8
   NumConfigurations   = 1
   Device version      = 0.00
   Device Class:SubClass:Protocol = 00:00:00
     Per-interface classes
 Configuration:
   bLength             =    9
   bDescriptorType     =   02
   wTotalLength        = 0022
   bNumInterfaces      =   01
   bConfigurationValue =   01
   iConfiguration      =   04
   bmAttributes        =   80
   MaxPower            =   32mA
 
   Alternate Setting:  0
     bLength             =    9
     bDescriptorType     =   04
     bInterfaceNumber    =   00
     bAlternateSetting   =   00
     bNumEndpoints       =   01
     bInterface Class:SubClass:Protocol =   03:00:00
     iInterface          =   05
     Endpoint:
       bLength             =    7
       bDescriptorType     =   05
       bEndpointAddress    =   81 (in)
       bmAttributes        =   03 (Interrupt)
       wMaxPacketSize      = 0003
       bInterval           =   0a

Root-Hub: stat port1: 5ab port2: 580
--clear port connect (0x02 --> port_reg)
Root-Hub: stat port1: 5a9 port2: 580
--port reset (0x40 --> port reg)
Root-Hub: stat port1: 78a port2: 580
Root-Hub: stat port1: 5af port2: 580
Root-Hub: stat port1: 5a5 port2: 580

SETUP to pipe 84000000: 0 5 2 0 0 0 0 0         (set address)
SETUP to pipe 84000280: 80 6 0 1 0 0 8 0        (get descriptor)
SETUP to pipe 84000280: 80 6 0 1 0 0 12 0       (get descriptor)
SETUP to pipe 84000280: 80 6 0 2 0 0 8 0        (get descriptor)
SETUP to pipe 84000280: 80 6 0 2 0 0 22 0       (get descriptor)
SETUP to pipe 84000200: 0 9 1 0 0 0 0 0         (set configuration)
SETUP to pipe 84000280: 80 6 0 3 0 0 4 0
SETUP to pipe 84000280: 80 6 1 3 9 4 ff 0       
        --> (return 'CH PRODUCTS')
SETUP to pipe 84000280: 80 6 2 3 9 4 ff 0       
        --> (return 'CH HFX 2 AXIS 1 BUTTON JOYSTICK'

SETUP to pipe 84000280: 81 6 0 22 0 0 33 0
hid-core.c: report descriptor (size 51, read 51) =  
05 01 09 04 a1 01 05 01 09 01 a1 00 09 30 09 31 15 00 26 ff 00 75 08 95 02 
81 02 05 09 19 01 29 01 15 00 25 01 95 01 75 01 81 02 95 01 75 07 81 01 c0 c0

SETUP to pipe 84000280: 80 6 1 3 9 4 ff 0
SETUP to pipe 84000280: 80 6 2 3 9 4 ff 0

SETUP to pipe 84000200: 21 a 0 0 0 0 0 0        (hid set idle interface)


----> interrupt transaction, transfer descriptor info:
TD @ c6154000/06154000, MaxLen=02 DT0 EP=1 Dev=2 PID=( IN  ) buf=090e4cd8
        Len=02 e3 LS IOC 

hid-core.c: report (size 3) (unnumbered) 8 79 0      <-- joystick report

----> interrupt transaction, transfer descriptor info:
TD @ c6154000/06154000, MaxLen=02 DT1 EP=1 Dev=2 PID=( IN  ) buf=090e4cd8
        Len=02 e3 LS IOC

hid-core.c: report (size 3) (unnumbered) 8 79 0      <-- joystick report




-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to