Re: PATCH: Ignore card reader interface on Huawei E1750

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

 



Michal Malý <madcatxster@xxxxxxxxx> writes:
> On Monday 30 of September 2013 12:19:41 you wrote:
>> Michal Malý <madcatxster@xxxxxxxxx> writes:
>> > my Huawei 3G modem has an embedded Smart Card reader which causes
>> > trouble when the modem is being detected (a bunch of "<warn>
>> > (ttyUSBx): open blocked by driver for more than 7 seconds!" in
>> > messages.log). This trivial patch corrects the problem for me. The
>> > modem identifies itself as "12d1:1406 Huawei Technologies Co.,
>> > Ltd. E1750" in lsusb although the description on the body says "Model
>> > E173u-1"
>> 
>> This is surprising because the first thing option_probe() does is:
>> 
>> 	/* Never bind to the CD-Rom emulation interface	*/
>> 	if (iface_desc->bInterfaceClass == 0x08)
>> 		return -ENODEV;
>> 
>> 
>> so it shouldn't ever bind to any storage functions.  Unless it is a
>> vendor specific storage function, of course...
>> 
>> > +	{ USB_DEVICE_AND_INTERFACE_INFO(HUAWEI_VENDOR_ID, 
> HUAWEI_PRODUCT_E1750,
>> > 0xff, 0xff, 0xff), +		.driver_info = (kernel_ulong_t)
>> > &net_intf2_blacklist },
>> 
>> Does this mean that intf #2 is actually a storage function using
>> ff/ff/ff class codes?
>> 
>> 
>> Bjørn
>
> The device has 4 interfaces. IF 0 and IF 1 are used to talk to the modem, IF 3 
> is a micro SD card reader and IF 2 is a mysterious interface. According to 
> Windows .INF the "USB\VID_12d1&PID_1406&MI_02" device is a "HUAWEI Mobile 
> Connect - USB Smart Card Reader"; whatever that means. The SD card reader has 
> 0x08 interface class and it seems to be picked up correctly.

Yes, that's what I thought.  So intf #2 probably doesn't have anything
to do with the SD reader?


> IF 2 info from lsusb:
> Interface Descriptor:
>       bLength                 9
>       bDescriptorType         4
>       bInterfaceNumber        2
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass       255 Vendor Specific Class
>       bInterfaceSubClass    255 Vendor Specific Subclass
>       bInterfaceProtocol    255 Vendor Specific Protocol
>       iInterface              0 
>       ** UNRECOGNIZED:  36 21 00 01 00 07 00 00 03 00 00 00 a0 0f 00 00 a0 0f 
> 00 00 00 00 00 00 00 2a 00 00 16 40 05 00 00 00 00 00 fe 00 00 00 00 00 00 00 
> 00 00 00 00 30 02 01 00 0f 01


Right.  Based on the length and ID of this class descriptor, I am pretty
sure this is a CCID interface descriptor, except that the class codes
are wrong.  You could hack up a copy of lsusb to decode the vendor
specific class as if it was USB_CLASS_CCID and have this additional
descriptor nicely decoded into CCID properties.

I believe some modems provide a CCID interface to the SIM.  Could this
be such a device?

In any case, I guess the patch is necessary. This interface should be
blacklisted as it's not a serial interface.  CCID support is done in
userspace.  Thanks a lot for providing the additional info.



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