Bug 125353 - hid-core: USB joystick adapter [0925:8866] not working
hid-core: USB joystick adapter [0925:8866] not working
Status: CLOSED UPSTREAM
Product: Fedora
Classification: Fedora
Component: kernel (Show other bugs)
rawhide
All Linux
medium Severity medium
: ---
: ---
Assigned To: Pete Zaitcev
:
Depends On:
Blocks: FCMETA_USB
  Show dependency treegraph
 
Reported: 2004-06-04 19:14 EDT by Jack Spaar
Modified: 2007-11-30 17:10 EST (History)
0 users

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2006-02-23 18:37:14 EST
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
Output of lsbusb -v (1.98 KB, text/plain)
2004-06-04 19:20 EDT, Jack Spaar
no flags Details
dmesg output w/ CONFIG_USB_DEBUG defined (15.04 KB, text/plain)
2004-06-10 22:52 EDT, Jack Spaar
no flags Details

  None (edit)
Description Jack Spaar 2004-06-04 19:14:14 EDT
Description of problem:
A PSX/USB dual joystick adapter (id below) fails to work in FC2 with
either kernel-2.6.5-1.358 or kernel-2.6.6-1.383 (from testing).

Version-Release number of selected component (if applicable):
kernel-2.6.5-1.358
kernel-2.6.6-1.383

How reproducible:
Every time.

Steps to Reproduce:
1. Plug in PSX/USB joystick adapter.
2. View kernel messages.
3. Run "jstest /dev/js0"
  
Actual results:
dmesg acknowledges device but issues errors (see below).
"jstest /dev/js0" issues a few initial non-sense events and doesn't
respond to joystick input.

Expected results:
No errors from usb module, valid jstest output.

Additional info:
On plug-in, dmesg contains:
Jun  4 15:20:23 localhost kernel: usb 1-2: new low speed USB device
using address 3
Jun  4 15:20:23 localhost kernel: usb 1-2: string descriptor 0 read
error: -42
Jun  4 15:20:23 localhost kernel: usb 1-2: string descriptor 0 read
error: -42
Jun  4 15:20:23 localhost kernel: drivers/usb/input/hid-core.c: ctrl
urb status -32 received
Jun  4 15:20:23 localhost kernel: drivers/usb/input/hid-core.c: ctrl
urb status -32 received
Jun  4 15:20:23 localhost kernel: input: USB HID v1.00 Joystick
[0925:8866] on usb-0000:00:02.0-2

-----------------
Output of lsusb:
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 004: ID 0925:8866 Wisegroup, Ltd MP-8866 Dual USB Joypad
Bus 001 Device 002: ID 0f03:0001
Bus 001 Device 001: ID 0000:0000
Comment 1 Jack Spaar 2004-06-04 19:20:22 EDT
Created attachment 100886 [details]
Output of lsbusb -v

Should mention this device works on the same hardware in Win98.

Here's a report on linux-usb-users for the same issue (by someone else using a
different distro):
http://www.mail-archive.com/linux-usb-users@lists.sourceforge.net/msg10248.html
Comment 2 Jack Spaar 2004-06-10 22:52:34 EDT
Created attachment 101056 [details]
dmesg output w/ CONFIG_USB_DEBUG defined

FWIW, attached dmesg output from kernel-2.6.5-1.358 compiled with
CONFIG_USB_DEBUG defined.  Device attachment occurs immediately after last
(unrelated) i2c_adapter message.
Comment 3 Jack Spaar 2004-08-06 12:49:42 EDT
Same in kernel-2.6.7-1.494.2.2.
Comment 4 Pete Zaitcev 2005-02-02 19:15:24 EST
So, what about the FC3 with 2.6.10-1.741_FC3? It has the new
enumeration exactly for cases like this one.
Comment 5 Jack Spaar 2005-02-02 21:27:49 EST
Thx for checking back Pete.

No joy with .741_FC3 or .760_FC3.  Error messages are a bit different.
Here's dmesg during connect/lsusb:

usb 1-1: new low speed USB device using ohci_hcd and address 2
usb 1-1: string descriptor 0 read error: -32
usb 1-1: string descriptor 0 read error: -32
usb 1-1: string descriptor 0 read error: -32
input: USB HID v1.00 Joystick [0925:8866] on usb-0000:00:02.0-1
usb 1-1: string descriptor 0 read error: -32
usb 1-1: string descriptor 0 read error: -32
usb 1-1: string descriptor 0 read error: -32
usb 1-1: string descriptor 0 read error: -32
usb 1-1: string descriptor 0 read error: -32
usb 1-1: string descriptor 0 read error: -32
usb 1-1: string descriptor 0 read error: -32
usb 1-1: usbfs: process 5830 (lsusb) did not claim interface 0 before use

lsusb -v output essentially identical to previous attachment.

Same single burst of nonsense values from jstest followed by silence.
 Noticed one oddity, first jstest after plugin generates a few more
"events" than subsequent runs.  [cat /dev/input/js0 > somefile gives
352 bytes the first time after plugin, and 336 bytes every time after
that.  FWIW.]

Diabolical scheme to get girlfriend hooked on Linux foiled again by
cheesy dancepad adapter.
Comment 6 Pete Zaitcev 2005-10-18 04:21:39 EDT
The -32 is a stall condition, so device is consciously refusing to return
the descriptor. I suppose you could make a one-off kernel which simply
does not read it. It's probably not all that needed... Just a device name
or vendor name.

Not sure what to do about it in the common case though.
Comment 7 Andrew Fuller 2006-01-21 11:31:26 EST
I've been trying to debug this one on my Gentoo system.  I've found that if  
you run usbmodules with the --device paramter will have the side effect of  
allowing the adapter to work.  
  
For example:  
Plug in adapter [joydev is loaded, /dev/input/js0 is created]  
cat /dev/input/js0 [a few bytes, then silence; never any response from pushing  
buttons]  
usbmodules --device /proc/bus/usb/###/### [no output]  
cat /dev/input/js0 [now it responds to button presses]  
Comment 8 Tim Christie 2006-02-18 16:51:44 EST
I had the same problem with a USB dance pad adepter under FC4 running
2.6.14-1.1644_FC4.  It is recognized when plugged in, but a cat of js0 shows no
activity after the plug-in.  But if I run:

usbmodules --device /proc/bus/usb/xxx/yyy

it works very nicely.
Comment 9 Jack Spaar 2006-02-21 01:55:47 EST
No joy so far using the above method with kernels 2.6.15-1.1831_FC4,
2.6.14-1.1656_FC4, and 2.6.13-1.1526_FC4.  I don't have 1644 on hand.

Since FC4's usbutils package does not build usbmodules by default, I configured
the usbutils-0.70-1.1 SRPM with --enable-usbmodules and compiled usbmodules.

Usbmodules is silent except in the case of the 1656_FC4 kernel, where it shows
that the yealink phone driver module is registered.  Cat or jstest on
/dev/input/js0 show no output beyond the initial burst of garbage as usual.

My particular adapter has a Cypress Semiconductor CY7 C63001 chip.
Comment 10 Andrew Fuller 2006-02-23 11:19:22 EST
Update: 
 
The usbmodules hack only worked with old versions (0.11) not with the newer 
(0.70+) 
 
Fortunately the bug has been identified.  Due to a quirk in the hardware, it 
would lock itself during part of the initialization sequence.  The usbmodules 
hack was just giving it a nudge and it would put itself back into a valid 
state. 
 
The patch is here: 
http://marc.theaimsgroup.com/?l=linux-usb-devel&m=114038593204406&w=2 
 
(it's only two lines; it just marks this device as having this particular 
quirk) 
Comment 11 Jack Spaar 2006-02-23 18:37:14 EST
I applied the wisegroup.patch to kernel-2.6.15-1.1831_FC4.src.rpm and it works
for me.  Events now work properly, also both joysticks on the dual adapter show
up in /dev/input instead of just one.

Hey Andrew nice job of chasing this thing down, getting the USB gods to throw
enough crumbs to help you figure this one out yourself, and reporting the fix
back to the rest of us!

I guess proper bz ettiquette would be to close as UPSTREAM, where the patch belongs.

Note You need to log in before you can comment on or make changes to this bug.