Virtual CD-ROM switching utility
# Virtual CD-ROM switching utility

Virtual CD-ROM switching utilities are programs to disable the virtual CD-ROM drive found on many devices. A virtual CD-ROM switching utility is a mode switching tool for controlling "flip flop" (multiple device) USB gear. Several new USB devices (especially high-speed wireless WAN equipment, there seems to be a chipset from Qualcomm offering that feature) have their Microsoft Windows device drivers on board; when plugged in for the first time they act like a USB flash drive and start installing the device driver from there. After that (and on every consecutive plugging) this device driver switches the mode internally, the storage device vanishes (in most cases), and a new device (like a USB modem) shows up. The Wireless WAN (WWAN) gear maker Option calls that feature "ZeroCD (TM)". With USB sniffing programs and libusb it is possible to eavesdrop the communication of the MS Windows device driver, to isolate the command or action that does the switching and to reproduce the same thing under the rule of Linux or the BSD variants.

The problem with most USB 3G modems is they have two modes. In one mode they are a USB flash drive and in the other mode they are a modem. Typically they only ship with Windows device drivers, sometimes Mac device drivers as well. In any case, they seemingly seldom, if ever, ship with Linux device drivers. What normally happens with Windows is the device starts up as a USB flash drive, the hardware drivers are installed and then they are responsible for "switching" the device in to modem mode so you can use it. This "switch" is done via some codes, specific to the device, which controlling software can pass as a command to switch from disk to modem mode. The virtual CD-ROM switching utility manages the switch of mode from disk to modem, the latter disconnects any mounted disk containing software we do not care about that will not work anyway and, crucially, creates a modem port/serial device (usually /dev/ttyUSB0) for the networkmanager.

The approach of adding Virtual CD-ROM with software drivers on 3G or storage devices has two problems: it presumably raises the cost of the device, and it may ship outdated software or even viruses. Most of the times, up-to-date drivers are anyway built into the operating systems (after all, on systems implementing the USB standard like Linux, any 3G device is a USB serial port, and any storage device is a ... USB storage device). Virtual CD-ROM on U3-compatible devices can be removed by a software tool. Some 3G devices such as the Huawei support complete disabling of the Virtual CD-ROM.

Available software utilities include the following:

* ZeroCD: When a device uses the ZeroCD method means that it behaves as a USB CD-ROM when first connected, with a virtual CD-ROM inserted with the Windows device drivers and related Cosmote control program. Once the Windows device drivers are installed, a special USB command is sent to the device to “switch” it to modem mode.
* Ozerocdoff: It temporarily disables ZeroCD for USB Option WWAN modem. The new USB Option WWAN modem devices support a CD-ROM device, which holds the needed Windows device driver to use the WWAN modem. Therefore, the firmware of the WWAN modem announces during the USB enumeration process to work as a virtual CD-ROM device with its vendor name "ZOPTION". This device is now called ZERO-CD. Ozerocdoff is a solution to switch off the ZERO-CD and allow the modem to be a used as a modem.
* USB_ModeSwitch: It is a virtual CD-ROM switching utility. From version 1.0.3 upwards there is a simple framework for integrating the switching with udev (the device manager) to make it fully automatic.
* Switch2modem: It is designed for switching a 3G USB modem. The program works under OpenSolaris.
* Fetch utility: huaweiAktBbo.c is a utility that can be compiled and re-creates the USB communication which is used in Windows.
