Diagnosing and eliminating communications
hardware and configuration issues
 
The TurboPower technical support team for Async Professional is often put in the position of having to tell customers that their problem is not really an APRO issue, but rather something going on with their communications hardware setup.  

One might take the cynical viewpoint that we are simply "passing the buck" when we do this, but it's important to realize that serial communications programming frequently involves us with remarkably primitive and often cantankerous hardware; and in the final analysis no amount of software tweaking, hacking, or fixes will make it work if the cable is not connected.

Given the rapidly changing face of serial communications, it seems prudent for us to share some of our experiences with diagnosing some common hardware and configuration "snags."  We've formatted these into a question and answer format.

Despite the increasing power and sophistication of desktop computer systems, serial communications remains a remarkably primitive and awkward set of standards and practices that leaves a lot of room for things to go wrong.

When it's not working there are a number of places to start looking, depending on your particular situation.

Nothing is working, not even your test programs, what's the problem?
Probably a hardware or cabling problem that you'll need to figure out before you can go any further.  Common problems include disconnected, improperly configured, or outright bad modems; two or more serial ports using the same system resources, or another device (such as a mouse or network card) using a system resource that's usually reserved for a serial port.

No amount of software tweaking, hacking, or fixes will make it work if the cable is not connected.

The modem isn't working. What do I do?
Modems are peculiarly delicate devices that can be easily damaged by physical events, static discharge, or "spiked" currents over the phone line. They even sometimes fail right out of the box.

In general:

·    Make sure that the phone line is attached and is live (check with an actual telephone device to make sure you get a dial tone)

·    Make sure the telephone cord is going into the correct modem jack.  Most modems have two: one for "line" into which you should plug the line that is going to the wall jack, and one for "phone" which allows you to attach a phone or other device beyond the modem.

If you're using an external modem:

·    Make sure the modem is plugged in and turned on (you should see lights on the front panel)

·    Make sure that the cable between the computer and the modem is attached to the correct port on the computer. Some SCSI interface cards have a port that looks exactly like a 25-Pin serial port. Also make sure you get a "straight through" cable for this purpose. A "null modem" cable may sound like what you need, but is actually used for a different purpose.

If you're using an internal modem:

·    Make sure the modem is seated properly in the card slot. A large percentage of internal modems are 'software' modems, some of the functions traditionally supported by hardware are now pushed onto software drivers. Because of this, make sure you are using the latest drivers from the modem manufacturer.

·    See the sections below on Com Port setup for info on possible resource conflicts

If none of these seem to help:

·    Make sure the telephone cord is good (test it with a telephone using that cord)

·    If possible try a different modem device in the same situation to eliminate a bad modem as the problem

·    Try the serial port checks listed next

The serial ports aren't responding. What do I do?
Serial communications on a PC operates through serial "ports." These originally were physical wires that had a particular organization and operation. Nowadays, your setup may include "virtual" serial ports that exist only in software. These allow yolu to communicate with many kinds of devices as if they were serial devices.

In order to communicate over serial ports, they must be correctly configured. Some key configuration issues are discussed in the next few sections.

Resources
In order to function, serial ports require certain "resources" from the computer in which they are installed. Generally, this will consist of a "Interrupt Request" (IRQ) number, and a "Base Address".

The traditional resource assignments for the first four serial ports (COM1-COM4) on IBM PC Compatible computers are shown in the following table.

Port

IRQ

Base Address
(in hexadecimal)

COM1

4

03F8

COM2

3

03E8

COM3

4

02F8

COM4

3

02E8

Note that traditionally COM1 and COM3 share an IRQ, as do COM2 and COM4. This is a hold over from the early days of the IBM PC when there were only 8 IRQs available, and the nature of software at the time made it unlikely that more than one or two ports would be accessed simultaneously.

On modern systems it is generally desirable (and often necessary) to set COM3 and COM4 to different IRQs than those listed in order to prevent conflicts (it's generally best to leave COM1 and COM2 where they are). IRQ5, which is traditionally reserved for LPT2, is often available for one of them.

Internal modems typically present themselves as COM Ports to the computer and similarly require their own unique settings.

Some specialized serial port hardware (such as multi-port boards) permit IRQ sharing among a number of ports, however these will typically have their own specialized driver software to manage the multiple ports.

These are general guidelines, and may, or may not, be applicable for a given system. With the advent of Plug and Play (see the next section), the operating system can share system resources between devices, and use non-standard IRQs and IO addresses. The Windows Device Conflict Wizard will help you resolve most of the problems.

My modem/serial port card says it's "Plug and Play." What does that mean?
Plug and Play is a set of standards that allows computer systems to query devices installed in the system and determine what they are and their capabilities. Plug and Play devices may include items built onto the system's main circuit board, or may include add-on cards of various kinds.

Microsoft Windows 95, 98, Me and 2000 include extensive system-level support for identifying hardware and allocating the appropriate resources. Windows 3.1x and NT3.51 provide almost no support for this, and Windows NT 4 provides very limited support.

Some add-on cards for serial ports are Plug and Play, as are many internal modems.  Also most modern computer main boards have two serial ports on-board which are often handled by Plug and Play.

For one or two ports generally these should work as-is, but a common requirement to get multiple ports operating correctly is to disable Plug and Play for these ports and set their resources manually.

How do I set up those "On-Board" Com Ports?
If your system's main circuit board (motherboard) features on-board serial ports (most do nowadays), there are generally some settings for these available in the BIOS "Setup" program.

The BIOS Setup program is usually accessible via a special keystroke at system start-up (often pressing by Delete or a function key, look for a message indicating how at when your system boots).

Accessing the Serial Port settings varies widely among BIOS models, so check your main board or computer manual for where these might be located.

Often you can set the on-board ports for some kind of "automatic" mode, which means the IRQ and address range are set dynamically by Plug and Play when the system starts.

Ports set up in this way will generally end up with standard IRQ and Base Address assignments, but this is not guaranteed; and some software has problems dealing with ports with peculiar settings.

So what do I do if something isn't working?
If you're having problems with serial ports with hardware set IRQ and Address values (often set by jumpers on an expansion card) make sure that each port's settings are unique.  Don't forget that any internal modems need to be taken into account in this as well.

If you're having problems with serial ports with Plug and Play settings try setting the on-board (or any other Plug and Play) ports to specific IRQs and Addresses rather than allowing them to be determined dynamically. Using the traditional resource assignments mentioned above is usually the best approach.

If the ports are on an expansion card then the same caveat applies as for internal modems make sure that the card is properly seated in the slot.  If the ports are on the main board, there are typically small cables that run from the system board to the physical port outlets on the back of the computer.  The connectors to attach the cables to the main board are often small and are easy to not have seated properly, make sure they are oriented correctly and well seated on the correct pins.   Some port cards also use similar short cables and the same applies to them.

Another possibility is that Windows itself has conflicting or erroneous settings for the ports.

Under Windows 3.x it is possible to have misnamed ports if there is a gap in the sequence of traditional serial port assignments in your machine. For example, if your machine has physical serial ports set for the traditional resources for COM1, COM2, and COM4, Windows 3.x names these ports "COM1," "COM2," and "COM3." Then, if a Windows communication program attempts to open COM4, it will fail since Windows 3.x doesn't recognize that an port named "COM4" exists.

This particular situation is not an issue in the 32-bit Windows environments (NT, Windows 95/98/2000), but it's still possible for Win32 systems to be applying conflicting resource allocations to the ports. There is a different naming issue that comes into play if Tapi is being used (see below).

So how do I fix the Windows settings?
The simplest solution to the Windows 3.x port naming problem is to accept the Windows name for the port and add appropriate COMXBASE and COMXIRQ statements to SYSTEM.INI to reflect the actual hardware configuration. To make Windows treat COM4 as COM3 as in the above example, you would add

COM3BASE=2E8

COM3IRQ=3

to the [386ENH] section of SYSTEM.INI.

Normally however, under Windows 3.x, the proper way to change the Com Port settings is to use the Ports Applet in Control Panel.

Things are radically different in Windows 95, 98 and 2000.  Here all hardware is managed through the Device Manager.  This is accessible in the System applet in Control Panel or by right clicking on My Computer and selecting Properties and then clicking on the Device Manager tab. 

Look for entries under "Ports (COM & LPT)". Clicking on one of the ports listed there and selecting Properties will show an informational dialog, the Resources tab has the settings for the IRQ and Address Range. You can change the IRQ and base address settings for these here. Setting them explicitly can sometimes help with Plug and Play conflicts.

From the Device Manager, you can also list all of the system's IRQs. This list will show which IRQs are available, and which are in-use.

What about Tapi?
Tapi (Telephony Application Programming Interface) is a formalized set of routines to allow programs to make use of various telephone hardware.

16-Bit Windows (Windows 3.x) and NT prior to version 4.0 had limited support for Tapi, usually in the form of specialized drivers provided by particular hardware manufacturers and which were often unavailable to general programming access.

Windows 95 introduced a generic implementation of Tapi that all programs could access, enhanced versions were included in NT 4.0 and later in Windows 98.

If you're having trouble using Tapi to access or operate a particular device:

·    Make sure the device actually appears in the list of Tapi devices (in the "Modems" applet in Control Panel), if it doesn't then it probably needs to have drivers installed.  If you know you installed the drivers already and the device has previously worked; it may not be "visible" to the operating system for some reason, which is usually a hardware issue, check the above sections on "The Modem Isn't Working…"  and "The serial ports aren't responding…" for diagnostics.

·    If you are using Windows 95 OSR1, you may need to obtain the updated TAPI (UNIMODEM/V) software from Microsoft. Windows 95 OSR2 and above, Windows 98 and Windows Me have UNIMODEM/V preinstalled. Windows NT should already have installed newer drivers (though it's still sometimes prudent to check, some device may have installed older drivers over the new ones, and Microsoft may have come out with something new after this was written).

·    If you have device names that are not unique within the first 20-30 characters, early versions of Tapi sometimes get confused in device selection. Unfortunately the only way to change the Tapi assigned names for these devices is to edit the registry or the .INF file that is used for installing the device. The best solution is to install the updated Tapi drivers that don't have this problem.

So, what about WinModems?
A current trend in modem technology is to simplify the physical hardware of the modem device and supply some portion of its functionality in the form of software drivers for the modem. Such devices are generically referred to as Software Modems, and since the vast majority of them are designed to work with some version of the Microsoft Windows Operating System, are also frequently called WinModems.

This approach has made some sophisticated modem technology much cheaper to implement, but has also brought a number of headaches. 

First, these software drivers generally expose a Tapi interface, and so these modems often must be initialized via Tapi in order to work correctly, which can cause problems with older or otherwise Tapi naïve software.

Second, the drivers for these modems are generally Operating System specific: a driver for Win95 may not work on Win98, and almost certainly won't on NT (much less OS/2 or Linux). The skills necessary to write good device drivers are deep and hard won and many drivers don't behave entirely as advertised.  Also, even if a particular Windows 95 driver is good, it doesn't mean that the NT driver for the same modem is as good (or that the manufacturer even has one).

Often the installation software for a WinModem's drivers will replace the default Windows serial drivers with ones of their own. These drivers sometimes behave unpredictably when accessing other serial hardware in the system.

If you're having trouble getting a software modem (WinModem) to work:

·    Make sure that the drivers are installed correctly

·    Make sure you have the latest drivers from the manufacturer

·    Make sure to open the modem using Tapi in your program

In conclusion…
Eliminating any of the above common problems as the source of your difficulties will greatly assist TurboPower's Technical Support engineers in tracking down the real problems behind the difficulties you're facing.

This site is not affiliated, endorsed, or otherwise associated with the entity formerly known as TurboPower Software. The owners and maintainers of Aprozilla.com were merely meager employees of the aforementioned organization, providing this site out of the pure goodness of their collective hearts. SourceForge.net Logo

Last updated: July 22, 2003.