On Mon, 2016-01-04 at 12:32 +0700, Lars Melin wrote: > On 2016-01-04 05:00, Jose Alonso wrote: > > > > The program Heimdall (http://glassechidna.com.au/heimdall) is used > > to flash a new firmware in Samsung Mobile Phones. It uses only the > > library libusb to access the device. > > > > The module "cdc_acm" recognizes it as CDC ACM device, creates a > > device /dev/ttyACM* and send a USB_CDC_REQ_SET_LINE_CODING. Then, > > for some phones when Heimdall call libusb_set_interface_alt_setting > > or libusb_get_string_descriptor_ascii the device locks. > > Also, the ModemManager initialization locks the device. > > > > There are 3 devices used by Samsung in firmware update mode: > > idVendor=0x04e8 idProduct=0x6601 idProduct=0x685d IdProduct=0x68c3 > > source: > > (https://github.com/Benjamin-Dobell/Heimdall/blob/master/heimdall/ > > source/BridgeManager.h) > > > > Signed-off-by: Jose Alonso <joalonsof@xxxxxxxxx> > > --- > > drivers/usb/class/cdc-acm.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c > > index 26ca4f9..8728afc 100644 > > --- a/drivers/usb/class/cdc-acm.c > > +++ b/drivers/usb/class/cdc-acm.c > > @@ -1843,6 +1843,17 @@ static const struct usb_device_id acm_ids[] = { > > .driver_info = IGNORE_DEVICE, > > }, > > > > + /* Exclude Samsung Mobile Phones in firmware update mode */ > > + { USB_DEVICE(0x04e8, 0x6601), > > + .driver_info = IGNORE_DEVICE, > > + }, > > + { USB_DEVICE(0x04e8, 0x685d), > > + .driver_info = IGNORE_DEVICE, > > + }, > > + { USB_DEVICE(0x04e8, 0x68c3), > > + .driver_info = IGNORE_DEVICE, > > + }, > > + > > /* control interfaces without any protocol set */ > > { USB_INTERFACE_INFO(USB_CLASS_COMM, USB_CDC_SUBCLASS_ACM, > > USB_CDC_PROTO_NONE) }, > > -- > > NAK > > 04e8:6601 is also used for Samsung SCH-U209 CDMA modem so can not be > ignored. > 04e8:685d is an update mode id so it can be ignored by cdc-acm. > 04e8:68c3 does not look like update mode, it has cdc-acm modem and > cdc-acm device management interfaces. Ok, there is trouble. And some stupid vendors. Jose, could you break up this patch intro three parts? Lars, do you have any sure information about 04e8:68c3? 04e8:6601 may need a special case in probe(), but we should discuss the series separately. Regards Oliver -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html