On Sun, 21 Aug 2005, Jamie Guinan wrote:

> On Thu, 26 May 2005, jklaas wrote:
> 
> > I bought two MP-8866 based Playstation to USB controllers.  One works
> > fine, the other doesn't.  I haven't sniffed it on windows yet, and I'm
> > hoping to see if I can resolve this from Linux only.
> > 
> > Here's the output from dmesg:
> > 
> > usb 1-1: new low speed USB device using ohci_hcd and address 6
> > input: USB HID v1.00 Mouse [1241:1111] on usb-0000:00:03.0-1
> > usb 1-2: new low speed USB device using ohci_hcd and address 7
> > usb 1-2: string descriptor 0 read error: -32
> > usb 1-2: string descriptor 0 read error: -32
> > input: USB HID v1.00 Joystick [0925:8866] on usb-0000:00:03.0-2
> > 
> > The top one is the troublesome controller.
> > 
> > Here's the lsusb fro the two of them.
> > 
> > Bus 002 Device 003: ID 0925:8866 Lakeview Research WiseGroup Ltd, MP-8866 
> > Dual Joypad
> > Bus 001 Device 007: ID 0925:8866 Lakeview Research WiseGroup Ltd, MP-8866 
> > Dual Joypad
> 
> Hi, I recently got one of these too, and while it works fine in WinXP, 
> it shows up but does not generate any button/joystick events in Linux.
> I've tried both a Sony PSX controller and a Level6 dancepad.  I did 
> try the start+up+select trick, but that (1) didn't help, (2) wasn't
> needed under XP.
> 
> As a reference point, I have an EMS/USB unit that works absolutely
> fine.  While it would be cheaper/easier to just junk the WiseGroup
> unit and buy another EMS, I want to at least try and figure out
> what's wrong.  
> 
> I'm going to try "usbmon", and since I'm running 2.6.12, I'll go
> ahead and upgrade to 2.6.13-rc6 while I'm at it.

Ok, I did get around to this, using 2.6.13 (final).  The EMS unit on 
plug-in shows these C callbacks with data (I edited out the S lines),

d242dce0 2943627131 C Ci:015:00 0 18 = 12010001 00000008 430b0300 12190102 0001
d242dce0 2943633122 C Ci:015:00 0 9 = 09022200 01010280 32
d242dce0 2943643179 C Ci:015:00 0 34 = 09022200 01010280 32090400 00010300 
00020921 00010001 228e0007 05810308
d242dce0 2943730099 C Ci:015:00 0 142 = 05010904 a1018501 05091901 29101500 
25013500 45017501 95108102 05010930

The usbmon log is then quiet until I start a joystick test program
which does open(/dev/input/js0), then usbmon starts streaming this 
endlessly,

  d242d860 2971399609 S Ii:015:01 -115 8 D
  d242d860 2971415503 C Ii:015:01 0 8 D
  d242d860 2971415609 S Ii:015:01 -115 8 D
  d242d860 2971431535 C Ii:015:01 0 8 D
  ...

I can press buttons, and the joystick test program reads them
correctly... but nothing changes in usbmon log, just the same
stream.


Then the Wisegroup unit, on plug-in,

d242d660 3095139882 C Ci:017:00 0 18 = 12010001 00000008 25096688 88020102 0001
d242d660 3095144848 C Ci:017:00 0 9 = 09022200 01010080 c8
d242d660 3095152860 C Ci:017:00 0 34 = 09022200 01010080 c8090400 00010300 
00000921 00010001 22bc0007 05810307
d242d660 3095223907 C Ci:017:00 0 188 = 05010904 a1018501 0901a100 05091901 
290c1500 25013500 45017501 950c8102

Again the log goes quiet until I start a joystick test app on 
/dev/input/js0, when it streams endlessly,

  d242d460 3098842266 S Ii:017:01 -115 7 D
  d242d460 3098850250 C Ii:017:01 0 7 D
  d242d460 3098850271 S Ii:017:01 -115 7 D
  d242d460 3098858234 C Ii:017:01 0 7 D
  ...

I noticed that the number is different - 7 instead of 8.

So I turned on DEBUG and DEBUG_DATA in hid-core.c, and I found
that the EMS happily returns button info with each "report",

  drivers/usb/input/hid-core.c: report (size 8) (numbered)
  drivers/usb/input/hid-core.c: report 1 (size 7) =  00 00 80 80 80 80 41
  hid-debug: input Button.0001 = 0
  hid-debug: input Button.0002 = 0
  ...

but with the Wisegroup, hid_input_report() doesn't like what its
seeing,

  drivers/usb/input/hid-core.c: report (size 7) (numbered)
  drivers/usb/input/hid-core.c: report 0 (size 6) =  00 00 00 01 00 00 
  drivers/usb/input/hid-core.c: undefined report_id 0 received
  drivers/usb/input/hid-core.c: report (size 7) (numbered)
  drivers/usb/input/hid-core.c: report 0 (size 6) =  00 00 00 01 00 00
  drivers/usb/input/hid-core.c: undefined report_id 0 received
  ...

thus things never propagate up to the joystick layer.

On other attempts the data bytes changed, but same error,

  drivers/usb/input/hid-core.c: report (size 7) (numbered)
  drivers/usb/input/hid-core.c: report 0 (size 6) =  00 00 02 01 20 00
  drivers/usb/input/hid-core.c: undefined report_id 0 received
  drivers/usb/input/hid-core.c: report (size 7) (numbered)
  drivers/usb/input/hid-core.c: report 0 (size 6) =  00 00 02 01 20 00
  drivers/usb/input/hid-core.c: undefined report_id 0 received
  ...

Hmmm...

-Jamie


-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to