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) }, -- 2.5.0 -- 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