When a connection to the internet is established, there always exists a modem between the connected device and the ISP (Internet Service Provider). The Operating System (OS) on your PC controls the modem which communicates with the ISP to establish a connection.
When you cannot connect to the internet, the most probable reason is that either your modem is not configured / installed properly or the login parameters being used are incorrect.
You can think of it as a simple phone in your premises which is used to make a Call. We can list the same process as below –
At your premises –
1. You pick up the phone and hear a Dial tone.
2. You dial a Number to the person you are calling.
3. The phone company checks if you have sufficient credit to make the call.
4. If you pass the test at step 3, then you are connected and you can talk to the person on the other end but if it fails then the connection is unsuccessful.
5. When finished, you hang up.
In your PC –
1. The Operating system checks for a modem and initializes it.
2. The Operating system dials in to your ISP.
3. The modem requests a connection to the internet with your ISP which checks your user credentials.
4. If you pass the test at step 3, then the modem establishes a successful connection to the internet and you can browse the web but if it fails then the connection is unsuccessful.
5. When finished, you disconnect.
The above may not be applicable to “always on” connections when you are connecting via a local area network. However the same process is happening at a modem further away from you (next to the router).
Types of modems:
I have come across various types of modems that can be grouped into any of the three categories below --
A dial-up modem where you can plug in a phone line. These use a fax tone when connected and the line remains busy as long as the connection is active. However these are becoming obsolete and one may see even less of them in the near future.
If you are using an ADSL modem, then the same thing happens when your OS creates a virtual modem (WAN miniport) that establishes a connection to the internet via your ISP.
USB type – It can be any of the below types –
a) Once you plug the device into your USB port that behaves like a modem (one of those GPRS / 3G / EVDO) dongles where a SIM card from your ISP provides internet services.
b) When you tether your mobile phone (via a USB cable) that installs a modem
c) When you connect your mobile phone via Bluetooth, a virtual modem is installed that provides internet services when connected.
These days you will find USB modems discussed in the last section being used much more than the others.
Modems with built in drivers (ZeroCD architecture) :
Everything is getting smaller and things are made to work out of the box. Modems being shipped these days are designed in such a way that they contain the drivers within the modem itself thus eliminating the need to carry a CD for drivers.
Natively, when you first plug the modem in a USB port, the modem appears a CD-Rom drive to the OS. This CD-Rom contains the necessary drivers and dialer software to help the modem connect to the internet. Once the software is installed and running, the modem switches its mode from CD to the native Modem mode for which it is designed to operate. This is called the ZeroCD architecture.
Knowing the VendorID : ProductID of your USB device in advance (for linux users)
USB devices identify themselves with a VendorID : ProductID combination (in hexadecimal format) when connected to a USB port. The operating system looks at these values to identify and control the device.
In Windows, install the modem and then navigate to the following path to get the Device ID and Vendor ID.
1. Press the Windows + R key together and it will bring up the Run dialog box.
devmgmt.msc and hit ok. This will open up the Device Manager Window.
3. Expand Modems
4. Select your modem & right click for properties
5. Diagnostics tab
6. Under Modem information note the String listed in the Field under Value after Hardware. In my case, it is
USB\Vid_05c6&Pid_9000&Rev_0000&MI_03 7. Ok out everything.
The value after Vid is the Vendor ID and Pid is the Product ID. In the above case, it turns out to be 05c6 for the Vendor ID and 9000 for the Product ID.
The Vid:Pid values are required for successful installation of a modem in the Linux Operating System.
Checking for proper installation of your modem (in windows):
Windows XP users can check for the concerned modem via the following method –
1. Start Button
2. Control Panel (classic view)
3. Phone and modem options
4. Modems tab
5. Select your modem & right click for properties
6. Diagnostics tab
7. Click the Query modem Button
8. If you see several AT commands with some information, your modem is installed and working properly.
9. Ok out everything and exit.
Attached is what I see.
ATQ0V1E0 - OKAT+GMM - +GMM: SoftV92 Data Fax ModemAT+FCLASS=? - 0,1AT#CLS=? - COMMAND NOT SUPPORTEDAT+GCI? - +GCI: 53AT+GCI=? - +GCI: (00,01,02,03,04,05,06,07,09,0A,0B,0C,0D,0E,0F,10,11,12,13,14,15,16,19,1A,1B,1C,1D,1E,1F,20,21,22,23,24,25,26,27,28,29,2A,2B,2C,2D,2E,2F,30,31,32,33,34,35,36,37,38,39,3A,3B,3C,3D,3E,40,41,42,43,44,45,46,47,48,49,4B,4C,4D,4E,4F,50,51,52,53,54,55,56,57,58,59,5A,5B,5C,5E,5F,60,61,62,63,64,65,66,67,68,69,6A,6B,6C,6D,6E,6F,70,71,72,73,74,75,76,77,78,79,7A,7B,7C,7D,7E,7F,80,81,82,83,84,85,86,87,88,89,8A,8B,8C,8D,8E,8F,90,92,93,94,96,97,98,99,9A,9B,9C,9D,9E,9F,A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,AA,AB,AC,AD,AE,AF,B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,BA,BB,BC,BD,BE,BF,C1,C2,C3,C4,C5,C7,C8,C9,CA,CB,CC,CD,CE,CF,D0,D1,D2,D3,D4,D5,D6,D7,D8,D9,DA,DB,DC,DD,DE,DF,E0,E1,E2,E3,E4,E5,E6,E7,E8,EB,EC,ED,EE,EF,F0,F1,F2,F3,F4,F5,F7,F8,F9,FA,FB,FC,FE)ATI1 - 255ATI2 - OKATI3 - SoftK56V_B2.1_V7.12.09ATI4 - SoftV92 Data Fax ModemATI5 - 083ATI6 - SoftK56 CModem Version 12 Rksample Version 342ATI7 - 255
Using Mode Switch to overcome Zero CD architecture limitation (for linux users only)
Most of the software is written for Windows and Macs, so Linux users as usual always have to get their hands dirty when trying to make such things work. If you are a linux user, you may already be familiar with the Terminal.
I love Ubuntu (one of the most popular linux flavors). When plugged in a linux box, the modem switches itself to the CD-Rom mode as discussed above. However, the drivers for Linux are not there and so it is useless unless some hacking is done. In order to make it work, we have to make the Linux OS see the device as a modem and not a CD-Rom.
USB mode switch is software written specifically for changing the above IDs to list the device in its native mode rather than the ZeroCD mode. Download USB mode switch from
http://www.draisberghof.de/usb_modeswitch/ and install it as per instructions from the website. After installation, browse to /etc/usb_modeswitch.d folder and see if your device ID shows up in one of the file names.
If yes then, chances are your device is supported even if the model or brand does not match. My device was already listed as one of the files, so no further editing of the /etc/usb_modeswitch.conf file was required. If you don’t find a file that starts with your UsbID, follow the instructions from the website to edit this global file with the credentials that may be applicable to you.
Plug in your device. Wait for a few seconds. In the Terminal run lsusb (command for listing USB devices installed in your system) and see if your device is identified with the VendorId and ProductId as per the Ids listed in Windows. If yes, then the tough job has been done since Usbmode_switch is working.
Plug in the modem, Open Terminal and type lsusb and hit Enter. If you get the output with the correct values of Pid:Vid as desired, usb_mode_switch is working properly. Specifically in my case, the modem negotiates with the cellular network automatically with a blue flashing light indicating that it has enrolled with the 3G network. However this does not indicate successful installation of the modem in ubuntu.
Issue the following command in Terminal (replacing with your details)--
Make sure you wait for at least two to three minutes before attempting to connect to the internet. This is because even in windows, the software takes a good time to initialize the modem. If you try to connect within this wait period, then the connection will fail and the modem will switch to error mode. Reissue the sudo modprobe command again to switch the modem back to normal mode.
Checking for proper installation of your modem (in linux):
You can find out the port on which your modem is installed using the dmesg command in linux. Using the information from the output of dmesg, it is possible to see if your modem is identified and installed properly.
One unfortunate part with software modems with interfaces: PCI, AMR, Mini-PCI pcmcia, or USB, or built into motherboard is that they are not supported by linux owing to the following reason –
“These use software on the host computer to do the majority of the work. This software is often guarded by the manufacturer and is typically not supported, not open source, and very complicated and hardware dependant. In practice the software is extremely complex and guarded by the manufacturers, so support is very limited.
These companies go out of business or drop support so that they can sell new products. A Linmodem is a software modem that works thanks to the Linmodems.org project. Most software modems have closed source drivers only released and or officially supported only with windows, so they are known as winmodems and you should avoid them.”
However all is not lost. See
http://linmodems.org/ for successful installation & configuration of your modem in linux.
Creating a connection in windows:
Though the speed and look of modems has changed drastically, the basic idea still remains the same. A Dialup connection is always created in windows that helps to connect to the internet.
Generally, you would use some dialer software that was installed by the modem to connect to the internet. However in the background the Dialer software actually creates a New Connection under Windows Network connections.
You can always set it up manually, if you happen to know the correct credentials.
GSM and CDMA connections:
Generally GSM connections use the number *99# with no credentials for the username and password. This requires the following setting to be entered as an “Extra initialization command” under Modem settings. In Windows XP, it would be Control Panel >> Phone and modem options >> Modems tab >> Select your modem and click the Properties Button >> Advanced tab and enter the following command in the field provided –
at+cgdcont=1,"ip","bsnlnet","",0,0 --- where bsnlnet is the name of your Access Point.
If this command is not entered, the modem will fail to connect throwing a PPP error as per screenshot.
Alternatively, you can use the number *99***1# without defining the above setting. However you will have to specify the name of the access point under default connections in your phone or the modem configuration.
For my Nokia E63, it is Menu >> Tools >> Settings >> Connections >> Data connections >> Access Point Name (APN as an abbreviation) >> Name of APN. Once this is done, the modem should connect well.
Either way, the basic idea is to make the modem know in advance which APN, it needs to connect to. Of course, the related drivers in question must be functional.
3G Gsm and Evdo CDMA modems-
I have been lucky enough to experience both types of GSM and EVDO modems and noticed the following differences in general-
The number dialed is *99#
The modem always needs a Sim card to operate
Userid and Password are generally not needed in the connectoid
The number dialed is #777
The modem may not need a Sim card to operate. Generally the required phone number is burnt on to the modem Chip. However, much depends on the service provider.
Userid and Password are the phone number allotted to the subscriber.
Note that the SIMs of both types of modems are not swappable and one won’t work in the other as the technologies used are completely different.
I have tried to list all that I have learnt about modems from my personal experience but may have not been able to cover some queries that may incur to the reader. However feel free to post any doubts in the comments section (or as a separate Question at Experts Exchange) you may have on the subject and I’ll be too glad to assist.
I have written a couple of other articles on Experts Exchange which you may find worth reading. Links to them are on my Member Profile page
https://www.experts-exchange.com/M_5142878.html ; just scroll to the “Skills / Accomplishments Section” to view them all. Last but not the least, click the Blue Yes button where it asks “Was this article helpful?”, if you do feel it was.
Please post comments, so that I may improve on it further. Your input will help me to improve and benefit all future readers.