Disable virtual CD-ROM drive with built in software on Huawei and ZTE GSM modem devices

Huawei E220Like 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

Minicom setup screen 1

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:

Network manager - connection information

Minicom setup screen 2

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:

Minicom

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)
nMCDSDUINSCRemarks
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.

DevGenii

E-commerce is a breeze with Magento Certified Developer Plus & Zend Certified PHP Engineer nearby. Get in touch!

14 thoughts on “Disable virtual CD-ROM drive with built in software on Huawei and ZTE GSM modem devices

  1. Kieron

    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?

    Reply
    1. Marko Author

      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.

      Reply
  2. lyes

    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

    Reply
    1. Marko Author

      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. 😉

      Reply
  3. Ulf Renman

    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.

    Reply
    1. Marko Author

      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.

      Reply
  4. andri_ch

    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.

    Reply
  5. andri_ch

    And disabling the ZeroCD feature for USB modem ZTE K3520-Z it doesn’t work too. What am I doing wrong?

    Cheers,
    Andrei

    Reply
  6. 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,

    Reply
  7. avadh

    give suggestion for this problem for windows 8 pro also. since i am facing the same problem in my windows 8 pro… thanx..

    Reply
  8. JBJ

    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

    Reply
  9. Ugi

    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!

    Reply
  10. Luke

    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.

    Reply
  11. Bruce Jerrick

    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

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *