Heimdall set interface failure (errno 110) on 2 similar gallaxy y devices
I have been debugging problems like Issue #429 on 2 gallaxy y/young devices:
- GT-S5360
- GT-S6102
The problem seems to be that these devices never respond to the set_interface so the host injects (usb_kill_urb(urb)
) a ENOENT response just after the 5 second timeout. (Modifying the kernel to wait 7 seconds caused the ENOENT status just after 7 seconds.)
Since they both only have one alt setting they are allowed to STALL, but I think their failure to respond is not the same as an explicit STALL. So I think these ODIN implementations could be marked USB_QUIRK_NO_SET_SET_INTF.
According to usb2.0 section 9.2.3 the default alternate configuration is configuration zero, so there is never a need to perform this call on these devices.
I commented out the call to lib_usb_set_interface_alt_setting
and they are able to go on to complete a normal print-pit.
I think a correct and conservative solution in heimdall would be to skip the libusb_set_interface_alt_setting
call whenever there is only alternate 0, since the interface never could be on another alternate. I can put together a merge request if there is interest?