@@ -334,16 +334,23 @@ int usb_discover(void)
334334 usbmuxd_log (LL_WARNING , "Endpoint count mismatch for interface %d of device %d-%d" , intf -> bInterfaceNumber , bus , address );
335335 continue ;
336336 }
337- if ((intf -> endpoint [0 ].bEndpointAddress & 0x80 ) != LIBUSB_ENDPOINT_OUT ||
338- (intf -> endpoint [1 ].bEndpointAddress & 0x80 ) != LIBUSB_ENDPOINT_IN ) {
337+ if ((intf -> endpoint [0 ].bEndpointAddress & 0x80 ) == LIBUSB_ENDPOINT_OUT &&
338+ (intf -> endpoint [1 ].bEndpointAddress & 0x80 ) == LIBUSB_ENDPOINT_IN ) {
339+ usbdev -> interface = intf -> bInterfaceNumber ;
340+ usbdev -> ep_out = intf -> endpoint [0 ].bEndpointAddress ;
341+ usbdev -> ep_in = intf -> endpoint [1 ].bEndpointAddress ;
342+ usbmuxd_log (LL_INFO , "Found interface %d with endpoints %02x/%02x for device %d-%d" , usbdev -> interface , usbdev -> ep_out , usbdev -> ep_in , bus , address );
343+ break ;
344+ } else if ((intf -> endpoint [1 ].bEndpointAddress & 0x80 ) == LIBUSB_ENDPOINT_OUT &&
345+ (intf -> endpoint [0 ].bEndpointAddress & 0x80 ) == LIBUSB_ENDPOINT_IN ) {
346+ usbdev -> interface = intf -> bInterfaceNumber ;
347+ usbdev -> ep_out = intf -> endpoint [1 ].bEndpointAddress ;
348+ usbdev -> ep_in = intf -> endpoint [0 ].bEndpointAddress ;
349+ usbmuxd_log (LL_INFO , "Found interface %d with swapped endpoints %02x/%02x for device %d-%d" , usbdev -> interface , usbdev -> ep_out , usbdev -> ep_in , bus , address );
350+ break ;
351+ } else {
339352 usbmuxd_log (LL_WARNING , "Endpoint type mismatch for interface %d of device %d-%d" , intf -> bInterfaceNumber , bus , address );
340- continue ;
341353 }
342- usbdev -> interface = intf -> bInterfaceNumber ;
343- usbdev -> ep_out = intf -> endpoint [0 ].bEndpointAddress ;
344- usbdev -> ep_in = intf -> endpoint [1 ].bEndpointAddress ;
345- usbmuxd_log (LL_INFO , "Found interface %d with endpoints %02x/%02x for device %d-%d" , usbdev -> interface , usbdev -> ep_out , usbdev -> ep_in , bus , address );
346- break ;
347354 }
348355 libusb_free_config_descriptor (config );
349356
0 commit comments