16c95x Serial Port Driver ((install)) -
transmitter and receiver FIFOs (First-In-First-Out), which significantly reduce CPU overhead and prevent data loss during high-speed transfers. Automated Flow Control
: Essential for connecting modems, barcode scanners, industrial automation equipment, and POS (Point of Sale) devices. OX16C950 rev B High Performance UART with 128 byte FIFOs
This article provides a deep dive into the 16C95x driver ecosystem. Whether you are a Linux kernel developer, an RTOS engineer, or a hardware integrator, you will learn about driver architecture, key features, common pitfalls, and performance tuning.
Run lspci -v (Linux) or check device manager (Windows) for a serial controller with PCI vendor ID 0x13F0 (Sundance) or 0x14CB (Exar). Look for “UART with 128-byte FIFO”. 16c95x serial port driver
FreeBSD also supports the 16C95x, primarily through its uart framework. The uartlirc driver (for infrared remote controls) can override the generic uart driver to provide specialized functionality, including a /dev/lircX node in addition to standard tty nodes. The FreeBSD kernel probes for serial ports during boot, identifying them by UART type, address, and IRQ.
If the chip has been reconfigured (e.g., using an EEPROM to change the Device ID to 0x950A for a two-serial port solution), the standard driver .inf file (e.g., oxser.inf ) must be manually modified to add the custom Device ID. Refer to the application note "Custom Drivers" for exact instructions.
: Typically used for serial ports (RS-232, RS-422, or RS-485) and sometimes parallel ports. Common Use Cases Whether you are a Linux kernel developer, an
The is the software bridge that allows your operating system to communicate with this hardware. Without the correct driver, the OS may see a "PCI Serial Port" with a yellow exclamation mark in Device Manager, or the port may operate at significantly reduced speeds. Key Features Supported by the Driver
The 16C95X serial port driver is a critical software component that allows modern operating systems to communicate with high-performance, UART-based serial hardware. Derived from the legacy 16550 standard, the 16C950 and its variants (collectively referred to as the 16C95X family) represent the pinnacle of hardware-driven serial communication, offering massive FIFO buffers and advanced automated flow control.
In mainline Linux, the driver is part of drivers/tty/serial/8250/8250_exar.c or, for generic PCIe/PCI 16C95x cards, the 8250_pci.c with added quirks. However, for standalone 16C95x chips on memory-mapped buses, you might need a platform driver. FreeBSD also supports the 16C95x, primarily through its
If your device connects but you receive gibberish (framing errors), it usually means the Baud rate, Data bits, Parity, or Stop bits (N-8-1 configuration) in your software do not match the physical device.
: Drivers are available for a wide range of operating systems, including Windows (XP through Windows 11) and Linux. Hardware Interface
The "16c95x serial port driver" is implemented differently across operating systems.
Ensure FIFO buffers are enabled. The driver allows fine-tuning of trigger levels to optimize interrupt handling.

