I have a MCS9904 serial pci card and I want to use it on debian 10. When i run:

dmesg | grep tty

it returns:

00:05: ttyS0 at I/O 0x3f* (irq = 4) is a 16550A

0000:02:00:0: ttyS1 at I/O 0xd030 (irq = 18) is a ST16650V2

0000:02:00:1: ttyS2 at I/O 0xd020 (irq = 19) is a ST16650V2

0000:02:00:2: ttyS3 at I/O 0xd010 (irq = 16) is a ST16650V2

it returns only 4 ports. One built in serial port and the other 3 from my PCi card. I can't the last port to work. i have downloaded the driver from here I ran the follwing commands to install the driver:

  1. make
  2. make install

can anyone kindly guide me on this issue?

  • Please edit the question with an excerpt from dmesg (no grep, that can throw away important information) that shows the relevant messages when the serial PCI card is initialized, as well as your built-in port, so we at least have some idea how your hardware works.
    – dirkt
    Nov 7, 2019 at 12:31
  • I have edited the post.
    – peterbrown
    Nov 8, 2019 at 5:45
  • You have omitted important information, but I guess the first part is the PCI address, so the ports are on different functions. Please edit question with output of lspci -nn and cat /proc/tty/driver/serial.
    – dirkt
    Nov 8, 2019 at 7:24

1 Answer 1


The early PCs used to have a maximum of 4 serial ports based on the 8250 UART chip. Going over this limit was possible, but usually took either other hardware implementations or at least special drivers to enable the higher number of ports. The modern 16550A can actually be backwards compatible with those old 8250 chips on both programming and physical levels.

(In late 1980s/early 1990s, when upgrading to a newer, faster dial-up modem with an older/cheaper computer, it might have been necessary to pry the actual 8250 chips out of their sockets and replace them with 16550As to achieve consistently error-free downloads.)

By some quick Googling, the ST16650V2 seems to be a version that's been modernized for PCI(e) bus compatibility, but it still is as compatible as possible to the old programming interfaces.

The Linux kernel has a compile-time parameter "Number of 8250/16550 serial ports to register at runtime" (CONFIG_SERIAL_8250_RUNTIME_UARTS), which is set to 4 by default. Debian 10 has not changed this default in their standard kernel packages.

But this value can be overridden by a kernel boot parameter 8250.nr_uarts (or maybe just nr_uarts for old kernel versions, although I think this is way too old to apply to Debian 10).

Since you seem to have a total of 5 ports that are handled by the 8250-compatible serial ports driver, you should add 8250.nr_uarts=5 to the end of the GRUB_CMDLINE_LINUX_DEFAULT= line in /etc/default/grub. The resulting configuration line might look like this:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash 8250.nr_uarts=5"

After making the change, you should run update-grub as root to make the change effective in GRUB. After rebooting, your system should then be able to use all 5 8250-compatible serial ports.

  • Thanks a lot for the clear explanation. I will try that and update.
    – peterbrown
    Nov 10, 2019 at 12:51

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .