The entry for vendor=0x05c6 and product=0x1000 in "unusual_devs.h"
is specific for only one maker. There are several other devices
which share these IDs (used by a Qualcomm chipset for storage device
mode) but need a different handling to switch their mode to "modem".
I received a report recently that one device ("Anydata ADU-510L")
could not be switched by the userspace tool "usb_modeswitch" when
used with 2.6.30rc5, compared to 2.6.27. In the latter, dmesg shows
there are problems with the storage device at plugin time,
presumably caused from the "option_ms_init" function, but afterwards
the storage device is bound correctly. This fails in 2.6.30rc5 with
the error:
"usb-storage: probe of 6-2:1.0 failed with error -5".
Alan Stern schrieb:
A usbmon trace of the failed probe might provide a clue.
I'll try to get one from the reporter. Anyway, the problem vanished
when commenting out the entry in "unusual_devs.h".
I presently know about three different modem devices (or families)
that show vendor=0x05c6 and product=0x1000 (all storage class):
- Older "Option" 3G modems
- AnyData 3G modems
- Samsung SGH-Z810
They need three different switching commands which may interfere if
used in a sequence.
If there's no way to tell these devices apart but they need different
switching commands, how do other operating systems handle them?
They have their Windows drivers onboard in the 'storage part';
either these drivers do an (yet unknown) additional ID routine, or
(what I suspect at least in some cases) they don't care at all about
the possibility of a third party device with the same ID.
I wonder if Filip Aben of Option can comment on this (or did he so
earlier?). Does the Windows driver e.g. of the GlobeSurfer iCON
identify the device apart from the vendor/product ID? The text
description says just "Qualcomm, Inc." ...
Do you know what the different switching commands are?
- Option uses the REZERO command (0x01)
- AnyData uses the START/STOP command (eject, 0x1b)
- Samsung uses a command with number 0x16 (not found in specs)
If "eject" is used for switching, the device needs to be initialized
as storage obviously. There was a precedent with ZTE devices, I believe.
- Usb-storage has a module option "option_zero_cd". Set the default
to be "2" (Allow CD-Rom) instead of "1" (Force Modem)
- Remove entry from "unusual_devs.h" entirely
Either way you're likely to get arguments from other people.
I'll get them anyway even when things stay as they are, which would
mean that one hardware manufacturer is privileged before others.
(My basic opinion still is that usb-storage is the wrong place to
handle device switching, but that's annother thread :-))
Josua Dietze
--
Man is the only creature on earth enabled to take a
warm meal while flying! Loriot
--
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