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 ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs