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

Reply via email to