Before You Call Tech Support…

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 is rather something going on with their communications hardware and/or 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 and ameliorating some common hardware and configuration “snags”.  We’ve formatted these into a question and answer format.

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 resource(s); or another device (e.g.: a mouse or network card) using a system resource usually reserved for a serial port.

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.

The modem isn’t working. What do I do?

Modems are peculiarly delicate devices; they can be easily damaged by physical events, static discharge, or “spike” 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 phone device to make sure you get a dial tone)

·    Make sure the phone 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

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

If none of these seem to help:

·    Make sure the phone cord is good (test with a phone 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 communicating with many kinds of devices as if they were serial devices.

In order to communicate over serial ports, they must be configured correctly. Such 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”.

On IBM PC Compatibles, the traditional resource assignments for the first four serial ports (COM1-COM4) are:

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 (traditional for LPT2) is often available for one of them.

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

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

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.

Many new computer systems include built-in support for “Plug and Play” hardware. The Windows 95 and 98 operating systems include extensive system level support for identifying hardware. As of this writing, Windows NT’s support for this is sketchy; but is reportedly going to be greatly improved in the next version.

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, Win95/98); 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 (and NT through version 4.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 and 98.  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”; then click 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.

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’re using Windows 95 you may need to obtain the updated Tapi (UNIMODEM/V) software from Microsoft, Windows 98 and 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 Win95 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 the Tech Support engineers to track down your difficulties more quickly.

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.