On Tue, 14 Dec 2010 14:25:49 -0500 Don Zickus <dzickus@xxxxxxxxxx> wrote: > Hi, > > I am investigating a bug in RHEL-6 (2.6.32) where the ZTE modem isn't > working (basically devid 19d2:2000). This is one of those devices that > start as a cd-rom that magically converts itself into a modem. > > The initial addition was commit 5bb4bd9895df508ed2bd8b3280252d8a8170e4ac, > but that seemed to have a typo that was fixed here > 3b498a66a698c581535c0fcf1a8907f3fe9449cc (through testing). Later, the > device ids seemed to be removed on the basis they didn't belong there in > commit c420befde6b2747ebc2b8f015687a5dbd6e167ca. I believe that is when > the device stopped working. > > Adding the following patch (basically reverts part of the last commit), > fixes the problem. > > I don't know this code well enough to know if this is the right fix or if > the device ids were supposed to be added somewhere else. > > Hopefully someone smarter than me can help me out here. > > Thoughts? Your patch is wrong. We don't add the device id 19d2:2000 because it's a CD-rom device id (usb-storage). If you notice, it has an /dev/srX entry in your system. When you eject /dev/srX, the device 19d2:2000 disappears, then the real modem device id appears, which then should be in the device id table of option driver. These usb modems expose this /dev/srX with windows drivers etc., but are of no use in Linux. Newer distros automatically should eject this CD-rom only devices to get the real modem, for example usb_modeswitch can be used for this, see his page which also has more explanations: http://www.draisberghof.de/usb_modeswitch/ The other two device ids (0x0001 and 0x0002) are already in device table. > > Thanks, > Don > --- > drivers/usb/serial/option.c | 8 ++++++++ > 1 files changed, 8 insertions(+), 0 deletions(-) > > diff --git a/drivers/usb/serial/option.c b/drivers/usb/serial/option.c > index d9b67a3..55967b1 100644 > --- a/drivers/usb/serial/option.c > +++ b/drivers/usb/serial/option.c > @@ -241,6 +241,11 @@ static void option_instat_callback(struct urb *urb); > #define AXESSTEL_VENDOR_ID 0x1726 > #define AXESSTEL_PRODUCT_MV110H 0x1000 > > +#define ONDA_VENDOR_ID 0x19d2 > +#define ONDA_PRODUCT_MSA501HS 0x0001 > +#define ONDA_PRODUCT_ET502HS 0x0002 > +#define ONDA_PRODUCT_MT503HS 0x2000 > + > #define BANDRICH_VENDOR_ID 0x1A8D > #define BANDRICH_PRODUCT_C100_1 0x1002 > #define BANDRICH_PRODUCT_C100_2 0x1003 > @@ -479,6 +484,9 @@ static struct usb_device_id option_ids[] = { > { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_500A) }, > { USB_DEVICE(ANYDATA_VENDOR_ID, ANYDATA_PRODUCT_ADU_620UW) }, > { USB_DEVICE(AXESSTEL_VENDOR_ID, AXESSTEL_PRODUCT_MV110H) }, > + { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_MSA501HS) }, > + { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_ET502HS) }, > + { USB_DEVICE(ONDA_VENDOR_ID, ONDA_PRODUCT_MT503HS) }, > { USB_DEVICE(YISO_VENDOR_ID, YISO_PRODUCT_U893) }, > { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_1) }, > { USB_DEVICE(BANDRICH_VENDOR_ID, BANDRICH_PRODUCT_C100_2) }, > -- > 1.7.3.2 > -- []'s Herton -- 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