Re: [PATCH] cdc_acm: blacklist Samsung Phones in firmware update mode

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Lars Melin <larsm17@xxxxxxxxx> writes:
> On 2016-01-14 20:02, Oliver Neukum wrote:
>> On Wed, 2016-01-06 at 23:50 -0200, Jose Alonso wrote:
>
>>> In order to run Heimdall, I think that a better solution would be to
>>> temporarily "blacklist" the module "cdc_acm".
>>
>> No. That is no solution. A user may really need cdc-acm.
>> Your work around may cut somebody's connect to the web.
>>
>> 	Regards
>> 		Oliver
>
> Heimdall could easily unbind the cdc_acm driver from the device when
> it wants to communicate directly with the endpoints and not going
> through the created ttyACM device.

It already does that:

bool BridgeManager::ClaimDeviceInterface(void)
{
	Interface::Print("Claiming interface...\n");

	int result = libusb_claim_interface(deviceHandle, interfaceIndex);

#ifdef OS_LINUX

	if (result != LIBUSB_SUCCESS)
	{
		detachedDriver = true;
		Interface::Print("Attempt failed. Detaching driver...\n");
		libusb_detach_kernel_driver(deviceHandle, interfaceIndex);
		Interface::Print("Claiming interface again...\n");
		result = libusb_claim_interface(deviceHandle, interfaceIndex);
	}

#endif

(from https://github.com/Benjamin-Dobell/Heimdall/blob/master/heimdall/source/BridgeManager.cpp#L230 )



IIUC, the problem is that cdc-acm does this when probing the device:

	acm->line.dwDTERate = cpu_to_le32(9600);
	acm->line.bDataBits = 8;
	acm_set_line(acm, &acm->line);

where acm_set_line() is defined as

#define acm_set_line(acm, line) \
	acm_ctrl_msg(acm, USB_CDC_REQ_SET_LINE_CODING, 0, line, sizeof *(line))


The 04e8:685d device is buggy as hell, and might not survive any
unexpected USB request.  And it probably excpects the exact USB packets
received from whatever Windows tool Samsung use in their firmware
developmen lab and absolutely nothing else...

So unbinding the driver might not be enough. Heimdall must prevent
cdc-acm from probing the device in the first place. And since this is
not usable as an ACM device in any case, blacklisting it in the driver
seems like the obvious choice.



Bjørn
--
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



[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux