In kernel 3.13.0 I still have the same issues. So I also did some
debugging. Major findings:
- in hid-core.c the function usbhid_parse() is called after the joystick is
attached
- usbhid_parse() calls function hid_set_idle(), and this one fails while
sending an URB (details see below). Reason: the joystick returns -EPIPE.
- Same thing can be seen, if Wireshark is used to look at the traffic
- According to the documentation, EPIPE means "Endpoint stalled". It
furthermore says: "For non-control endpoints, reset this status with
usb_clear_halt()."
Unfortunately the return value is not checked in the kernel module. I
added this check, and tried to do a "usb_clear_halt". However, I cannot
quiet understand how things work in the code, and all my trials ended in
crashing the kernel.
---
hid-core.c:usbhid_parse:1006, ret=2
hid-core.c:hid_set_idle:669
message.c:usb_control_msg:132
message.c:usb_internal_control_msg:81
usb_start_wait_urb: 44
submits URB and waits for response with a timeout
not: ret = usb_submit_urb() -> ret is zero
*actual_length = 1
ctx: struct api_context { .done:struct completion,
.status:int }
completion: struct { done: uint, wait:
wait_queue_head_t }
expire = msec_to_jiffies(5000) = 1250
not: ret = ctx.status or -ETIMEDOUT, since dev_dbg does not
appear
ret = ctx.status -> so the -32 is ctx.status. This is
"broken pipe", as seen in the Wireshark trace
---
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1035723
Title:
Joystick (SideWinder FF2) Force Feedback doesn't reset properly
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1035723/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs