Like many of you out there I use mobile broadband as my Internet connection. What bugs me the most is that annoying virtual CD-ROM drive that pops out every time I put my stick in my USB connector. The idea is that average user has all of its modem drivers (of course Windows only) nearby. What's the use for that thing on our beloved Linux boxes? I know one. We can have fun disabling this annoyance once and for all. In this article I'll show you how to use your your Linux PC to disable virtual CD-ROM drive with built in software on Huawei and ZTE GSM modem devices.
Disclamer: In this article you are going to send direct AT commands to your modem hardware and if you try real hard you can mess your hardware to the point where you will be unable to use it to connect to Internet.
I've tested following procedure with my Huawei E220 and ZTE MF100 devices but it should work for all Huawei and ZTE hardware. I know that you will probably proceed because that's what every Linux geek (my self included) would do in your place but you've been warned.
So let's cut to the chase. In this article I'm using Ubuntu Linux 10.04 but the logic is the same for any Linux distribution. We will use minicom
to communicate with our modem so let's install it first;
sudo apt-get install minicom |
Now lets configure minicom for our modem device and select "Serial port setup" from the "Configuration" menu:
sudo minicom -s |
For "Serial Device" you will select /dev/ttyUSB0
if you have Huawei E220 device or /dev/ttyUSB2
if you have ZTE MF100 modem device. If you have some other modem device for the "ttyUSBX" part take a look at the "Connection information" window from your Network Manager when you have established Internet connection. That will give you serial device location for your hardware. Here are the screen shots for my Huawei E220:
After you've finished just select "Save setup as dfl" option and "Exit from Minicom" what will bring you back to terminal.
Now you should be able to communicate directly with your modem using AT commands. Keep in mind that Network Manager locks your modem device as soon as you establish Internet connection using this device. It stays locked even after you disconnect so to be on the safe side now is the time to right click to your Network Manager and uncheck "Enable Mobile Broadband" or even "Enable Networking" option to release your device for use with minicom.
Now run minicom using:
sudo minicom |
If everything is correct you will be presented with the following screen:
Huawei modem devices
Now comes the most important part, AT commands to disable virtual CD-ROM drive. If you have Huawei device other than E220 you should consult the table bellow before entering any AT commands. If your device is Huawei E220 you can simply do the following:
AT^U2DIAG=0 |
Here's the more detailed table for more settings you can use instead of "0". It should stand for most Huawei modem devices:
- modem (M)
- NAND-flashmemory drive (CD)
- microSD-drive (SD)
- PC UI interface (UI)
- network adaptor (N)
- smartcard (SC)
n | M | CD | SD | UI | N | SC | Remarks |
0 | + | + | |||||
1 | + | + | |||||
3 | + | + | + | won't work on devices without SC* | |||
5 | + | + | + | won't work on devices without N* | |||
9 | + | + | + | won't work on devices without N & SC* | |||
10 | + | + | + | won't work on devices without SC* | |||
12 | + | + | + | won't work on devices without N* | |||
255 | + | + | + | + | ? | ? | reset to factory defaults |
256 | + | + | + | for most devices: everything enabled except the flashmemory; microSD-drive will be available under Windows even without drivers installed | |||
257 | + | + | + | ||||
259 | + | + | + | + | won't work on devices without SC* | ||
261 | + | + | + | + | won't work on devices without N & SC* | ||
265 | + | + | + | + | won't work on devices without N & SC* | ||
266 | + | + | + | + | won't work on devices without SC* | ||
267 | + | + | + | won't work on devices without N* | |||
268 | + | + | + | + | won't work on devices without N* | ||
276 | + | + | + | + | + | ? | reset to factory defaults |
ZTE modem devices
On the other hand if you have ZTE GSM modem device (tested with ZTE MF100) you can use following AT command to disable virtual CD-ROM drive with built in software on ZTE GSM modem devices:
AT+ZCDRUN=8 |
If you change your mind later you can use following AT command to enable virtual CD-ROM device:
AT+ZCDRUN=9 |
If everything is OK restart your Linux PC and you'll never see that annoying virtual CD-ROM drive again. If something got broken you can post here and I or someone else will assist.
Works fine to remove the CD-ROM, but my modem is now detected as an E620!
Still works fine, but just curious as t why the change?
Yes that is true for my huawei hardware. I guess lspci also looks for some kind of capabilities flags when determining exact hardware specification. Mine E220 is also E620 but works just fine.
If you are using putty to access COM port, you’ll most probably get “command error” when you type “AT^U2DIAG=0”. To fix that, it’s better to write the desired command on notepad for example and coy/paste it on putty terminal
Possibly. I don’t use Windows, Notepad or Putty so I can’t confirm. I can confirm you won’t have problems using Linux operating system and its terminal but thanks for the info for Windows users. 😉
Excellent article!
Is this procedure a replacement for the usb_modeswitch command I use now and in that case what is the benefits of either approach?
Have you accidently switched the enable and disable commands for CD-ROM at ZTE modems? I have done some googling on the topic and in all other places AT+ZCDRUN=8 seems to be the disable command.
Hello,
if I understand right usb_modeswitch does this switch temporarily probably by issuing these same AT commands. If this is true I see no benefits of one or the other. I’ve switched my devices my self so I don’t have usb_modeswitch installed.
Yes I’ve made a mistake with AT+ZCDRUN command by switching enable and disable commands, thank you very much for noticing it. It is corrected now.
Hi,
Somehow, the ZeroCD disable command is not remembered by my modem, when I disconnect & connect it again, the modem acts as a CDROM!
I have a ZTE MF190 modem connected on /dev/ttyUSB2.
To disable ZeroCD I type the following:
sudo minicom
AT+ZCDRUN=8
## and I get:
Close autorun state result(0:FAIL 1:SUCCESS):1
OK
So when I connect the modem to the same or another computer, it still acts as a cdrom.
And disabling the ZeroCD feature for USB modem ZTE K3520-Z it doesn’t work too. What am I doing wrong?
Cheers,
Andrei
Hello,
has anyone found a way to disable the virtual cd permanently on ZTE mf190? everytime I reconect it gets back.
Thanks in advance,
give suggestion for this problem for windows 8 pro also. since i am facing the same problem in my windows 8 pro… thanx..
Hi and thanks for the great guide, this works fine for WCDMA modems and I tried it on my Huawei E1552 and it works – But I now have a new modem where I need to remove the virtual CD-Rom on also, unfortunately it has no visual com ports. Can you help me out?
The new modem is Huawei E3531(E3531s under the cap).
I’m normally using Windows 7 and have putty, but I also have access to a LiveCD I made myself(my own setup and progs) with Peppermint Linux 5, and one pc with it installed.
My old modem(E1552) works fine with my router, but the E3531 does not – in the router its not recognized as a modem but as an USB Disk. I think its because, it is loading the cd-rom first and not second as the E1552.
with kind regards
JBJ
Hi! I’d just like to know, I found somewhere a few other commands like AT+ZCDRUN=255 and ZCDRUN=256, I think that these are correct commands. Do you know what they exactly do? I think something with SD memory card, if the modem has the slot for it. Thanks!
I doesn’t work with my Huawei E586.
I have test all values with U2DIAG but it doesn’t have any effect.
Actually, I can change U2DIAG but no effect.
Success on a ZTE Z222 AT&T GoPhone.
First of all, it has to be in GSM modem mode when minicom is run.
To do that I did what I formerly had to do everytime I wanted to use it:
Briefly connect it to a VMware virtual machine running Windoze (XP, but 8.1 also worked), with the driver from CD-ROM mode already installed. Then when it’s reconnected to the Linux host, it’s seen as GSM modem.
Before running minicom be sure to “Disconnect” it in NetworkManager.
Unlike the other ZTE examples, I connected minicom to /dev/ttyUSB0 (not /dev/ttyUSB2).
I used AT+ZCDRUN=8 (I just got an error with AT+ZCDRUN=255).
Like andri_ch, it replied:
Close autorun state result(0:FAIL 1:SUCCESS):1
but for me, it worked — after a power down of the Z222 and a reboot of Linux (Fedora F23, but with many F24/25 packages, including ModemManager and NetworkManager), there’s no more CD-ROM mode, just GSM modem.
(Long ago I saved the ZTE_Handset_USB_Driver.exe file that appears in CD-ROM mode.)
— Bruce Jerrick
Hi
Has anyone found a way to enable voice mf190 for using in asterisk pbx server?