16550 UART FIFO Support under Windows NT (103108)



The information in this article applies to:

  • Microsoft Windows NT Server 3.1
  • Microsoft Windows NT Workstation 3.1
  • Microsoft Windows NT Advanced Server 3.1

This article was previously published under Q103108
WARNING: Using Registry Editor incorrectly can cause serious, system-wide problems that may require you to reinstall Windows NT to correct them. Microsoft cannot guarantee that any problems resulting from the use of Registry Editor can be solved. Use this tool at your own risk.

SUMMARY

On COM ports that have a 16550 UART chip, Windows NT will automatically enable FIFO support. To verify this, run Event Viewer and look at the system log. Upon startup, each COM port that has a 16550 UART should generate an event whose source is listed as "Serial." If the FIFO for that port has been enabled, the description of the event will read:

While validating that COM1 was really a serial port, a FIFO was detected. The FIFO will be used.

MORE INFORMATION

While enabling FIFO does grant a speed advantage when communicating over the serial port, there are several known hardware issues with the 16550 UART that show up when FIFO is enabled:

  • The 16550AF has a documented transmit problem that can result in the random loss of a byte. The transmit FIFO occasionally fails to transmit if there is a single character still in the shift register and one is put in the holding register. The character does not transmit, you are not informed, and no interrupts are generated. This and other problems are fully documented in National Semiconductor errata (8/9/90). The transmit problem may or may not be fixed in the 16550AFN revision.
  • It is not possible to determine, through software, which revision of the chip is installed, so drivers cannot adapt to the problems of the different chips.
  • Enabling FIFO by default will guarantee occasional data loss for any configurations that use 16550AF chips or earlier revisions and possibly later revisions also.
NOTE: 16550 UART chips on Intel motherboards with SMC665 chip sets (used by Gateway 2000, Dell Computers and others) have a known problem involving data loss with the use of FIFO.

If you are experiencing data loss with FIFO enabled, there is a utility included on the Windows NT CD-ROM to turn FIFO on and off. The utility is in the SUPPORT\SUPTOOLS\I386 directory and consists of the following three files:
   FIFO.CMD       - A batch file to turn FIFO on and off
   FIFO_ON.INI    - A data file used to turn FIFO on in registry
   FIFO_OFF.INI   - A data file used to turn FIFO off in registry
To use the utility, either change to the correct directory on the Windows NT CD-ROM drive or copy those three files to another drive and change to the directory they are now in and issue one of the following commands:
   FIFO OFF       - To turn FIFO support OFF
   FIFO ON        - To turn FIFO support ON
If you cannot access these three files or no longer have them, FIFO support can still be changed in the registry through the following steps:

  1. Run Registry Editor (REGEDT32.EXE).
  2. Select the key:
          \HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Serial
  3. One of the values in that key will be ForceFifoEnable. By default, this value will be set to 1, which enables it. To disable it, select the value, press ENTER and change the value to 0. To enable it, change the value back to 1.
  4. Choose the OK button.
  5. Exit Registry Editor, shut down and restart the system.

Modification Type:MajorLast Reviewed:11/20/2003
Keywords:kbenv KB103108