Modems

In all my years of PC repair - modems have presented the most difficulty, by far.  I have a 99% success rate, but that 1% "no fix" rate is comprised mostly of Modem problems.  The only solution in some cases is to replace a perfectly good modem, and save it for use with another PC.

Since there are so many problems with modems, this page will only discuss a few of the more important parameters.  First off, let's discuss some of the basics :

A modem (modulator-demodulator. is a device or program that enables a computer to transmit data over telephone or cable lines - but we will only discuss Dial-Up Modems. They simply act as a converter between the digital data in your PC and analog data for the phone line.  Computer information is stored digitally, whereas information transmitted over telephone lines is transmitted in the form of analog waves. A modem converts between these two forms.  

How a Modem Sends Bits across Analog Phone Lines

Actually, the bits (1's and 0's) are sent as bits across your phone line - but they are "modulated" onto sine waves.  Here I will oversimplify - but this is the basic principle.  A sine wave is a constant waving signal moving up and down in polarity - any sound you hear at a constant pitch is a simple sine wave.  The modem uses two pitches, which you can hear as it connects.  It higher pitch represents a "1" and the lower pitch represents a "0".  So as the data is converted to the two pitches and sent out - it looks something like this:

 

Today's modems are very complex and offer all sorts of bells and whistles, such as acting as your answering machine.  

The recent V.92 specification allows your PC to notify you of an incoming call - you can place your Internet connection on hold, answer the call, and return to your session when the call is completed !!

Hardware vs Software Modems

Hardware Modems perform all processing within the modem itself.  Software modems (the most popular is the USR "WinModem") rely on Windows to perform much of the processing, and their circuits are merely used to provide an interface.  The old thinking was that Hardware modems were better because they did not take up CPU cycles.  However, today's PC's are so fast that it is not an issue.  Both can be upgrade - software modems support new and improved drivers, and hardware modems can be "flashed".

USR is the most prolific of all modem manufacturers and they have been instrumental is the creation of many of the standards.  Here is a list of their modems :

 

External vs Internal Modems

External modems use an interface to connect to your computer called RS-232, which uses the 9-pin serial port on the back of your PC.  External modems are almost extinct so I will not cover them here.

Internal Modems are implemented either on-board (the elcetronics is included on the Motherboard) or as an ISA or PCI card.  The on-board modems are usually only found on "value" PC's.  You should stay away from those if possible. 

 

Identify the Product Code (Model) of your Modem 

(USR Modems)

Pull the modem and inspect it for the following:

External modems 

The serial number or product code is printed on a label attached to the bottom of the modem.

     or this:    

 

Internal modems

Your serial number or product code is printed on a label attached to the modem board itself, just behind the bracket.

     or this:    

 

Modem Protocols

X2 - Flex - V.90 - V.92  -  these are modem protocols.  A few years ago, there were two competing protocols:  X2 (US Robotics) and Flex (Motorola).  Finally the two camps agreed on a universal standard called V.90 which is still the prevailing standard.  It is backward compatible with both X2 and Flex.  The latest improvement to that is V.92, which supports new features, the most important one being the ability to be notified of an incoming call (you must have Call Waiting enable) and answer the call without disconnecting.

Serial Ports, Com Ports, IRQ's, and Drivers

 

These four things are the keys to whether your modem will work or not.  

 

Serial Port - hardware interface - the 9-pin Interface or Interfaces (some PC's have two) on the back of your PC.  They can be enable or disabled in the "setup" which is entered upon bootup by hitting a key, such as the Delete key.  The serial port sends and receives data in a "serial" fashion, unlike your Printer Port which is parallel.  This means only one bit is sent at a time.  You parallel port sends an entire "word" at a time, where a word is a set of bits, all sent at one time.

 

Com Port (COMmunications Port)- software port - this is a virtual port that Windows, OR the modem driver sets up.  

 

Windows COM ports - there is a common fallacy that an Internal Modem needs to use the Com port listed by Windows in Device Manager - that port is only for your serial Interface and is only used by an External Modem or some other external device !!!

 

Modem Driver Com Ports - these do not show up in Device Manager, which is a good thing, since if they did - they would be "reserved" for your serial Port.  The modem driver will use an available COM port, such as Com2, Com3, Com4, and in some cases even Com5 is used (very odd, but true).  Com2 seems to be the most reliable, because it uses it's own interrupt.  Com3 and Com4 borrow their interrupts from Com1 or Com2 as follows:

 

Port Interrupt I/O Address Typical use
Com1 IRQ 4 03F8 Serial1
Com2 IRQ 3 02F8 Serial2 or Modem
Com3 IRQ 4 03E8 Modem
Com4 IRQ 3 02E8 Modem

 

Oddly, this is not quite the same as "sharing" interrupts.  In fact, these interrupts cannot be shared by any other device !!  Your modem always needs exclusive rights to it's interrupt !!

 

Now - HERE'S where it gets tricky !!!  The legacy modems were simple, and usually used Com1, 2,3, or 4 and the corresponding IRQ in the Table.  Today's modems use the same COM ports, but often use a different IRQ.  A common setting for a Winmodem is to use COM2, 3, or 4 and use IRQ9.

"Talking" to Your Modem

You can use Windows Hyperterminal to communicate with your modem.  You send it basic queries or command called "AT" commands, and it replies.  They are based on the original "Hayes" modem, which was a standard:

  all Hayes AT Commands

Initialization Strings (Init Strings)

Read this section carefully.  It may make the difference between connecting and not connecting !!  

The default init string that is preloaded by your modem drivers is usually the exact string that you should use  .  .  .  but not always.  It may be that your system setup does not work properly with the default string.  It may be that your ISP's answering modem on the other end does not work properly with your modem, due to the default string.  In short - you may need to customize the init string.  Here we show you how.

IMPORTANT
virtually all Init strings begin with AT&F
For WinXP, enter your own init strings by going to:
Device Manager/Modem/Properties . . .  Advanced Tab
the string is added to the existing string that your modem drivers use (from the .inf file).  To replace the default init string, you start your string with the &F command (Factory), which resets the modem to the factory templates, wiping out the oreviously issued default string.  Then the rest of your custom init string characters after the &F will be replacing the default.

Testing your Init Strings
Dial out, disconnect, then look in the modem log file (see log file section further down).  It will show you the default init string that is issued, and the extra init string (if you have added one).

Strategy for troubleshooting your modem init string

Search several modem init string sites for your modem, and create a text file and record the strings.  For example, I keep a log file called MyModem.txt.  Try them one at a time until you find one that works - then make a notation in your log next to that string.  Continue using - if it begins having problems, try more strings, and make notes in you log.  The idea is to find a string that has a high percentage success rate.  All modems fail sometimes so just because you connection fails from time to time - does not mean the string is wrong !!!  So don't switch your string unless it is failing too frequently.  If all else fails . . . try simply flushing your modem to it's factory settings by using only &F as your extra string in the Advanced settings.

Lists of Modem init strings 

Many lists will show completely different modem strings for the same modem !!!:

 http://www.jenera.com/modems/   for a list or  Ask Mr. Modem for a query form

An initialization string is a series of "AT" commands (see below) that configure the modem prior to it placing the call.  

NOTE:  the modem drivers issue the initialization string for you in the background while dialing out - transparent to you  -  so there is usually no need to add additional strings.  

However, many claim that it helps to add your own, and there are many sites with recommended strings for the many various modems.  I have tried these many times - and have never noticed a boost in speed or reliability, so I don't recommend them unless you are having a lot of problems - even then I see no point in trying it.  The drivers already have optimized initialization strings encoded and ready to go.

Before your modem software dials a phone number, it initializes (inits) the modem by sending it a series (string) of commands, typically Hayes commands. These commands configure the modem's options for things like error correction, data compression, flow control, and many other parameters. The modem manual should list the Hayes commands the modem recognizes, and what effect each command has.

The important thing about modem init strings is that having the right one often makes the difference between connecting and not. Init strings are fairly specific to each modem. The string that made your friend's modem fly may not work at all for your modem.

Not all programs use simple init strings. Some use settings files, such as Windows 95 .inf files, Mac CCL modem scripts, etc.

Extracting the Init String from the Modem INF File

The inf files are usually in the windows\inf folder.  However there are hundreds of init files and it may be hard to tell which one is for your modem - so try to find the original installation drivers for your modem - they will include the inf file.  Open the file in Notepad.  The inf file may have many init strings, because many inf file are made to support multiple modems.  So look for your modem model number and look for the init string.  It should be on a line that begins "HKR, or Init, or 2,,, etc.    For example:

HKR, Init, 2,, "AT &F2 &D2 &C1 E0 V1 Q0 S95=47 S0=0<cr>"

Copy and paste the init string (AT &F2 &D2 &C1 E0 V1 Q0 S95=47 S0=0)  into your Modem Advanced properties (device manager).  The last line above contains the init string inside quotation marks. Note that the "<cr>" is not part of the init string. It is an end-of-string character. 

Note - this is supposed to be the string that is automatically sent to the modem when you dial out, since the inf file is used to set up the modem upon installation.  So only do this if you are having trouble and suspect that the drivers are not working properly as far as the init string is concerned !!

Example - the init string in this example is from my winmodem.inf file:

 

            Init-1    AT

            Init-2    AT&F1E0V1&C1&D2S0=0

 

            The Entire “Data” section of my winmodem.inf

HKR,,InactivityScale, 1, 3c,00,00,00

HKR, Init, 2,, "AT&F1E0V1&C1&D2S0=0<cr>"

HKR, Monitor, 1,, "ATS0=0<cr>"

HKR, Monitor, 2,, "None"

HKR, Hangup, 1,, "ATH<cr>"

HKR, Answer, 1,, "ATA<cr>"

HKR,,Reset,, "ATZ<cr>"

HKR, Settings, Prefix,, "AT"

HKR, Settings, Terminator,, "<cr>"

HKR, Settings, DialPrefix,, "D"

HKR, Settings, DialSuffix,, ";"

HKR, Settings, SpeakerVolume_Low,, "L0"

HKR, Settings, SpeakerVolume_Med,, "L2"

HKR, Settings, SpeakerVolume_High,, "L3"

HKR, Settings, SpeakerMode_Off,, "M0"

HKR, Settings, SpeakerMode_Dial,, "M1"

HKR, Settings, SpeakerMode_On,, "M2"

HKR, Settings, SpeakerMode_Setup,, "M3"

HKR, Settings, FlowControl_Off,, "&H0&R1&I0"

HKR, Settings, FlowControl_Hard,, "&H1&R2&I0"

HKR, Settings, FlowControl_Soft,, "&H2&R1&I2"

HKR, Settings, ErrorControl_On,, "&M4"

HKR, Settings, ErrorControl_Off,, "&M0"

HKR, Settings, ErrorControl_Forced,, "&M5"

HKR, Settings, Compression_On,, "&K1"

HKR, Settings, Compression_Off,, "&K0S15=128"

HKR, Settings, Modulation_CCITT,, "B0"

HKR, Settings, Modulation_Bell,, "B1"

HKR, Settings, Pulse,, "P"

HKR, Settings, Tone,, "T"

HKR, Settings, Blind_Off,, "X4"

HKR, Settings, Blind_On,, "X3"

HKR, Settings, CallSetupFailTimer,, "S7=<#>"

HKR, Settings, InactivityTimeout,, "S19=<#>"

 

Generic init strings:

To keep the modem from answering the phone

Add S0=0 to your init string. (Note that "0" is a zero, not a capital "o".) If you want the modem to pick up after the fifth ring, for instance, you would use S0=5.

Speaker Control Init Strings

These commands will control the speaker on most modems. Note that "0" is a zero, not a capital "o". The Windows Modem Properties (in Device Manager) has a volume control, so using an init string is usually not necessary if you have the correct driver or settings files installed.

M0  Speaker always off
M1  Speaker on during connection
M2  Speaker always on (very noisy)
L0  Lowest volume
L1  Lowest volume (redundant)
L2  Medium volume
L3  Maximum volume

 

Troubleshooting

These pesky little cards are the bane of my existence.  The drivers are very very finicky.  I have worked on modems for days, trying to get the right combination of driver, Com port, and IRQ.  Often, after you remove the modem from Device Manager, upon reboot Windows will automatically reinstate it as the same, "non-working" modem.  

Making Windows Forget the Modem - Windows loves to memorize modem setups, and if it memorizes the wrong setup - no matter how hard you try to remove and reinstall - Windows will keep setting it up with the same old, wrong parameters.  I have had some success by forcing Windows to forget the modem - by moving all the files in the Windows\Inf folder to a temporary folder, and then reinstalling the modem.  Other times I have had to search the entire Windows folder and subfolders for the string that identifies that particular modem - and then temporarily move all those files.  Lastly, you can back up the registry, and then search and delete all keys that contain that string.

Here are some other things to try:

Most important - download the right drivers.  Winmodem and other USR modem model numbers are very hard to identify.  You may need to oull the card since the Model number is sometimes printed on the card - but many times it is not !!!  If you cannot find the model number you will have to try multiple drivers - and there are many of them for Winmodems !!!   If you do get the model number, go to one of these sites  

http://www.usr.com/support/s-main-menu.asp  (for USR modems - of course go to the manufacturer website of your particular modem if you do not have a USR modem)

www.driverguide.com  (user ID = drivers   password = all )

Save the drivers in a Temp folder.  

Then remove your modem, remove all files you can find associated with it (in particular inf files) and reboot.  Dell offers a Modem Removal utility that works for most Winmodems.  Here is another Remove Utility released by USR.  Also, here is a "COMtest utility" that recommends a setting to use - I have not had great luck with this.  This will allow Windows to clear out it's "memory" of the card being there.  Shut down the computer, reinstall the modem, and reboot.  When Windows detects the modem - point it to the Temp folder for the drivers.

If still no worky - write down what Com port is being use, and the Interrupt.  Now try changing these values.  Try to use Com2/IRQ3 if possible.  Then try Com2/IRQ9.  Often, Device Manager will not allow you to change these values !!!.  In this case remove any other cards that might be using IRQ 3 or 4, and retry.

If still no worky - reboot and enter "setup".  Disable any serial ports that exist, and retry.

If still no worky - remove the modem in Device Manager, move all INF files to a temp folder, and reboot, using your drivers in the Temp folder.

Repeat these processes - sometimes, for some odd reason, the third or fourth try is the charm.

If still no worky - and you have another PC - swap the modems - this has worked for me several times in the past.

Lastly - buy another Modem !!!

Speed, Speed  .  .  .  Speed ! !

You may want to first read this Dial-Up FAQ to become familiarized with the various aspects.  There are tons of Modem/Internet tweak utilities out there, but here is a simple yet effective freebie, which is from the same site that hosts the FAQ - "Dr. TCP".

Here are the recommended settings for "most" PC's :

TCP Receive Window: 6432
Windows Scaling: Default
Time Stamping: Experiment with this setting or leave at Default.
Selective Acks: Default
Dial Up (RAS) MTU: 576
Path MTU Discovery: Default
Black Hole Detection: Default
Max. Duplicate ACKs: Blank
TTL: Blank
Adapter settings: Dial-Up Adapter or Network Card
MTU: 576

Click save and then reboot.

You may want to first find out what the actual Maximum MTU of your ISP really is - then back off from that a bit for overhead and set it using Dr. TCP

MTU (Maximum Transmission Unit)

MaxMTU is the largest packet size that your ISP will allow you to send.  Anything larger than that gets fragmented into multiple packets.  These multiple packest waste Bandwidth because the last one is usually small.  For efficient use of your bandwidth, you want to send packets that are just a tad below the MTU, to be safe.  This document does not tell you how to adjust that value, but there are any number of utilities available on the web to do this.

MTU Discovery

The MaxMTU value has to be discovered on an individual basis. To do that follow this: Go to Run and type Command, you'll get a DOS window. Type this:

C:\ping -f -l [value] [your ISP]

I started like this

C:\ping -f -l 1420 www.pacbell.net

And kept going in increments of 5 until the message read that the packets needed to be fragmented. So the idea is to imput the highest value b4 the data gets fragmented. In my case it was 1426, and to the highest value you then add 28, so I reached my ISP's MaxMTU of 1454.

You can use Dr. TCP to enter this setting, or hack the registry as follows :

  1. Start/Run . . . Regedit

  2. Go to:    HKLM\SYSTEM\CURRENT CONTROL SET\SERVICES\CLASS\NETTRANS

  3. When you get there and expand the NetTrans key, you'll find a lot of keys like this 0000, 0001, 0002, etc, in each one of them the value MaxMTU may be  present and you need to right click on it and choose Modify and then enter the value you discover to be the best for your ISP The values you pick up in websites are good but generic, so you need to find the value where the data doesn't get fragmented and at the same time you are sending the max amount of data b4 that occurs. It's pretty simple and that way you'll have the optimal value for your connection :-)

Compression

You know how you can zip a file and it becomes about 1/4th the size.  Well, why not zip down the info that you send through the web ??  That is the concept of Internet connectivity compression - typically this shows up in the configuration options of your modem's dial-up properties as "software compression". 

Modems usually have their own compression scheme.  Microsoft offers another, much faster mode of compression called "STAC" compression.  Not all systems will support STAC compression, but it is worth a try.  Make sure you fist test you system by pinging some IP addresses, then compare after turning STAC compression on.  An even better test would be to send an image file somewhere.

STAC comprssion is a very, very complex subject - so I will link you to another location for the directions on enabling it: 

How to Configure STAC Compression :

Windows 9x
Windows ME
Windows 2000/XP

Modem Log File

Every time you dial out, most modems will report their activities to a log file.  The most common USR modem log files reside in the Windows folder, and the file name begins with "modem" and ends with ".txt".  For example, my log file is "ModemLog_U.S.Robotics Faxmodem Win TI.txt" - here are the contents for one day.  It shows the actual strings that were used.  You will see the seven phases that occur during the process :

  1. Initializing modem

  2. Sending user initialization commands

  3. Waiting for a call

  4. Initializing modem

  5. Sending user initialization commands

  6. Dialing

  7. CONNECT 53333

08-19-2003 09:04:23.679 - File: D:\WINDOWS\System32\tapisrv.dll, Version 5.1.2600 
08-19-2003 09:04:23.679 - File: D:\WINDOWS\System32\unimdm.tsp, Version 5.1.2600 
08-19-2003 09:04:23.679 - File: D:\WINDOWS\System32\unimdmat.dll, Version 5.1.2600 
08-19-2003 09:04:23.689 - File: D:\WINDOWS\System32\uniplat.dll, Version 5.1.2600 
08-19-2003 09:04:23.719 - File: D:\WINDOWS\System32\drivers\modem.sys, Version 5.1.2600 
08-19-2003 09:04:23.719 - File: D:\WINDOWS\System32\modemui.dll, Version 5.1.2600 
08-19-2003 09:04:23.719 - File: D:\WINDOWS\System32\mdminst.dll, Version 5.1.2600 
08-19-2003 09:04:23.719 - Modem type: U.S. Robotics Faxmodem Win TI
08-19-2003 09:04:23.719 - Modem inf path: mdmusrgl.inf
08-19-2003 09:04:23.719 - Modem inf section: ModemTI_ISA_Gen
08-19-2003 09:04:23.719 - Matching hardware ID: *usr0098
08-19-2003 09:04:23.719 - 57600,8,N,1, ctsfl=1, rtsctl=2
08-19-2003 09:04:23.719 - Initializing modem.
08-19-2003 09:04:23.729 - Send: AT<cr>
08-19-2003 09:04:23.769 - Recv: AT<cr>
08-19-2003 09:04:23.769 - Command Echo
08-19-2003 09:04:23.769 - Recv: <cr><lf>OK<cr><lf>
08-19-2003 09:04:23.769 - Interpreted response: OK
08-19-2003 09:04:23.779 - Send: AT&F&D2V1Q0E0S0=0&C1<cr>  (default drivers init string)
08-19-2003 09:04:23.819 - Recv: AT&F&D2V1Q0E0S0=0&C1<cr>
08-19-2003 09:04:23.819 - Command Echo
08-19-2003 09:04:23.819 - Recv: <cr><lf>OK<cr><lf>
08-19-2003 09:04:23.819 - Interpreted response: OK
08-19-2003 09:04:23.829 - Send: AT&A3X4&B1<cr>
08-19-2003 09:04:23.869 - Recv: <cr><lf>OK<cr><lf>
08-19-2003 09:04:23.869 - Interpreted response: OK
08-19-2003 09:04:23.879 - Send: AT&A0<cr>
08-19-2003 09:04:23.919 - Recv: <cr><lf>OK<cr><lf>
08-19-2003 09:04:23.919 - Interpreted response: OK
08-19-2003 09:04:23.929 - Send: ATS7=60S19=0L0M1&M4&K1&H1&R2&I0B0X4<cr>
08-19-2003 09:04:23.969 - Recv: <cr><lf>OK<cr><lf>
08-19-2003 09:04:23.969 - Interpreted response: OK
08-19-2003 09:04:23.969 - Sending user initialization commands.
08-19-2003 09:04:23.979 - Send: AT&f&c1&d2<cr>   (use specified init string)
08-19-2003 09:04:24.029 - Recv: <cr><lf>OK<cr><lf>
08-19-2003 09:04:24.029 - Interpreted response: OK
08-19-2003 09:04:24.029 - Waiting for a call.
08-19-2003 09:04:24.039 - Send: ATS0=0<cr>
08-19-2003 09:04:24.069 - Recv: ATS0=0<cr>
08-19-2003 09:04:24.069 - Command Echo
08-19-2003 09:04:24.069 - Recv: <cr><lf>OK<cr><lf>
08-19-2003 09:04:24.069 - Interpreted response: OK
08-19-2003 09:04:24.069 - 115200,8,N,1, ctsfl=1, rtsctl=2
08-19-2003 09:04:24.069 - Initializing modem.
08-19-2003 09:04:24.079 - Send: AT<cr>
08-19-2003 09:04:24.120 - Recv: AT<cr>
08-19-2003 09:04:24.120 - Command Echo
08-19-2003 09:04:24.120 - Recv: <cr><lf>OK<cr><lf>
08-19-2003 09:04:24.120 - Interpreted response: OK
08-19-2003 09:04:24.130 - Send: AT&F&D2V1Q0E0S0=0&C1<cr>
08-19-2003 09:04:24.170 - Recv: AT&F&D2V1Q0E0S0=0&C1<cr>
08-19-2003 09:04:24.170 - Command Echo
08-19-2003 09:04:24.170 - Recv: <cr><lf>OK<cr><lf>
08-19-2003 09:04:24.170 - Interpreted response: OK
08-19-2003 09:04:24.180 - Send: AT&A3X4&B1<cr>
08-19-2003 09:04:24.220 - Recv: <cr><lf>OK<cr><lf>
08-19-2003 09:04:24.220 - Interpreted response: OK
08-19-2003 09:04:24.230 - Send: AT&A0<cr>
08-19-2003 09:04:24.270 - Recv: <cr><lf>OK<cr><lf>
08-19-2003 09:04:24.270 - Interpreted response: OK
08-19-2003 09:04:24.280 - Send: ATS7=60S19=0L0M1&M4&K1&H1&R2&I0B0X4<cr>
08-19-2003 09:04:24.320 - Recv: <cr><lf>OK<cr><lf>
08-19-2003 09:04:24.320 - Interpreted response: OK
08-19-2003 09:04:24.320 - Sending user initialization commands.
08-19-2003 09:04:24.330 - Send: AT&f&c1&d2<cr>
08-19-2003 09:04:24.370 - Recv: <cr><lf>OK<cr><lf>
08-19-2003 09:04:24.370 - Interpreted response: OK
08-19-2003 09:04:24.370 - Dialing.
08-19-2003 09:04:24.380 - Send: ATDT###-###-####<cr>
08-19-2003 09:04:24.430 - Recv: ATDT703-935-6884<cr>
08-19-2003 09:04:24.430 - Command Echo
08-19-2003 09:04:44.669 - Recv: <cr><lf>
08-19-2003 09:04:44.669 - Interpreted response: Informative
08-19-2003 09:04:44.669 - Recv: CONNECT 53333/ARQ<cr><lf>
08-19-2003 09:04:44.669 - Connection established at 115200bps.
08-19-2003 09:04:44.669 - Error-control off or unknown.
08-19-2003 09:04:44.679 - Data compression off or unknown.

More Tips

Winmodem & Sportster Winmodem Troubleshooting
---------------------------------------------

Also refer to the USR Installation Pamphlet - it contains a troubleshooting section for WinModems - zoom in to read the tiny text.


Types of USR Modems
-------------------
56k Winmodem 
Sportster Winmodem 56k x2 
Sportster Winmodem 56k V.90 

Why isn't 56k actually 56k ??
-----------------------------
FCC regulation prevents all devices attached to the telephone network from exceeding a certain power output. As a result, USR had to scale back the output, which has a direct effect on the speed at which we can transfer data. Currently, they have the server modem limit set to 53333. 

USR Support
-----------
you can call U.S. Robotics Technical Support for U.S. Robotics modems at (801) 401-1141. 

BUT !!! Before you contact support, please dial into the U.S. Robotics BBS or another V.90 server with a terminal program (BVRP, HyperTerminal, MacComCenter, ZTerm, etc)

1) Dial in to the BBS at 847-262-6000
2) Wait one minute then type +++
3) When the modem responds OK type ATI4I6I7I11Y11 and then press the ENTER key. 
4) type ATH and press the ENTER key to hang up. 

If comm.drv is corrupt, add "ForceBridgeOrRouter=TRUE" to SYSTEM.INI (this bypasses the current communications driver and goes directly to the Winmodem)

Clean Winmodem removal: 
-----------------------
1) Make sure the Vendor key USR1001 is not in the registry. This can be done by selecting Edit/Find in regedit, and searching for USR1001. If this key is in the registry, delete it
2) In SYSTEM.INI [Boot] section, remove DRIVERS=C:\WINMODEM\WINMODEM.DRV
3) In the [386enh] section of the SYSTEM.INI, remove DEVICE=C:\WINMODEM\WINMODEM.386.
4) remove all items contained in the [Winmodem] section of the SYSTEM.INI 
5) From the WIN.INI file, remove C:\WINMODEM\wmconfig.exe and C:\WINMODEM\winmodem.exe 


Test Modem
----------
Start Hyperterminal
Select Cancel at the new connection dialog box to open the Terminal window. 
type ati3 and press the ENTER key. If the modem responds, on screen, that the modem is a Sportster Winmodem
Type AT and press Enter. You may not see the letters, which is fine. 
The modem should respond with an OK message. If you did not see the letters A and T as you typed them, type ATE1 and press Enter. You should now see the AT commands as you type them, in addition to the responses. 
Type ATDT and press Enter. 
If the modem comes back with a No Dial Tone message, type ATX3DT18473304569 (or a local ISP or BBS number) and press Enter. 
Note: The number in the command code is the actual number to be dialed. 
If the modem dials out instead of coming back with a No Dial Tone message, you have a non-standard dial tone. At this point you should either have your phone line checked or try adding X3 to the Extra Settings field. Access Extra Settings for help locating the Extra Settings field specific to your operating system. 
If the modem doesn't attempt to connect and it comes back with a No Carrier message, the issue may not be phone line related. 

Check to see if Modem supports V.90
enter ati7
V.90 should be listed on the options line

Dial In to the 3COM BBS
3COM BBS - 847-262-6000 (you will be prompted to create an account)

How to use Hyperterm
--------------------
To use AT commands in HyperTerminal, follow these steps: 
Start HyperTerminal (Hypertrm.exe). 
Enter a name for the connection (for example, Test) in the Name box. 
Click an icon for the connection in the Icon box, and then click OK. 
In the Connect Using box, click Direct To Com X (where X is the port your modem is connected to) and then click OK. 
Verify the settings on the Port Settings tab and then click OK. 
On the File menu, click Properties. On the Settings tab, click ASCII Setup. 
Click the Send Line Ends With Line Feeds and Echo Typed Characters Locally check boxes to select them. 
Click OK, and then click OK. You can now type AT commands. 
Quit HyperTerminal. When you are prompted "Save session <name>?" click Yes if you want to save the session so that you can use AT commands at another time. 

Common AT Commands
------------------
AT&F - Resets the modem to the default factory settings. 
AT&F1 -Resets the modem to the secondary default factory settings. 
L0 - Sets the modem speaker to the lowest volume. 
L1 - Sets the modem speaker to a low volume. 
L2 - Sets the modem speaker to a high volume. 
L3 - Sets the modem speaker to the highest volume. 
M0 - Turns the modem speaker off completely. 
M1 - Turns the modem speaker on. 
S11=x where "x" = 50 to 255 - Sets the dialing speed of the modem (lower is faster). 
W2 - Allows Windows to report your true connection speed. 
X2 - The modem will check for a dial tone before it starts dialing. 
X3 - The modem will not check for a dial tone before it starts dialing.


Extra Settings
---------------
The Extra Settings box is a blank field which can be used to send manual AT commands to your modem. Use the Extra Settings field when configuring your modem for use with software applications using the windows driver settings. You will not need to include AT as the standard prefix when inserting a specific command. To locate the Extra Settings field, select the appropriate operating system from the following: 

Locating the Extra Settings field in Windows 95 and Windows 98
Double-click My Computer. 
Double-click Dial-Up Networking. If a Dial-Up Networking folder is not present, do the following: Select Start, select Programs, select Accessories, and then select Dial-Up Networking. 
Right-click your connection icon and choose Properties. 
Click Configure. 
Select the Connection tab. 
Click Advanced. The Extra Settings field is located toward the bottom of the screen.

Locating the Extra Settings field in Windows Me
Select Start, select Settings, and double-click Control Panel. 
Select Modems. 
Select Connection and select Advanced. The Extra Settings field is located toward the bottom of the screen.

Locating the Extra Settings field in Windows NT
Select Start, select Control Panel, and select Modems. 
Select the corresponding modem (if only one modem is listed it will automatically be selected) and select Properties. 
Select Connection and select Advanced. The Extra Settings field is located toward the bottom of the screen.

Locating the Extra Settings field in Windows 2000 and Windows XP
Select Start, select Control Panel, and select Phone and Modem Options. 
Select Modems, select Properties, and select Advanced. The Extra Settings field is located toward the bottom of the screen.