Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.

Bug 125353

Summary: hid-core: USB joystick adapter [0925:8866] not working
Product: [Fedora] Fedora Reporter: Jack Spaar <jspaar>
Component: kernelAssignee: Pete Zaitcev <zaitcev>
Status: CLOSED UPSTREAM QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: rawhide   
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-02-23 23:37:14 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 165247    
Attachments:
Description Flags
Output of lsbusb -v
none
dmesg output w/ CONFIG_USB_DEBUG defined none

Description Jack Spaar 2004-06-04 23:14:14 UTC
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 23:20:22 UTC
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-11 02:52:34 UTC
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 16:49:42 UTC
Same in kernel-2.6.7-1.494.2.2.

Comment 4 Pete Zaitcev 2005-02-03 00:15:24 UTC
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-03 02:27:49 UTC
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 08:21:39 UTC
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 16:31:26 UTC
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 21:51:44 UTC
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 06:55:47 UTC
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 16:19:22 UTC
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 23:37:14 UTC
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.