Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add more than 4 serial tty devices in Linux?

When I run command "dmesg | grep tty", then it displays just 4 ttyS devices from 0 to 3. I used #MAKADEV and makenode commands and they created ttyS... files in /dev folder. So now, I cannot use them because their properties such as MMIO addresses are not set. I have heard of the "setserial" command, but I can not see that it sets serial device MMIO address. So is there a way I can do that?

It is critical because my computer has 8 serial ports and I want to use them all. In my Linux, I can only use 4 of them..

like image 359
neavyseal Avatar asked Feb 12 '23 21:02

neavyseal


1 Answers

If your system uses the driver 8250 to handle serial ports, please check CONFIG_SERIAL_8250_NR_UARTS parameter in the configuration file of your kernel. This defines the maximum number of the serial ports the kernel will handle.

From Kconfig for that driver:

config SERIAL_8250_NR_UARTS
    int "Maximum number of 8250/16550 serial ports"
    depends on SERIAL_8250
    default "4"
    help
      Set this to the number of serial ports you want the driver
      to support.  This includes any ports discovered via ACPI or
      PCI enumeration and any ports that may be added at run-time
      via hot-plug, or any ISA multi-port serial cards.

config SERIAL_8250_RUNTIME_UARTS
    int "Number of 8250/16550 serial ports to register at runtime"
    depends on SERIAL_8250
    range 0 SERIAL_8250_NR_UARTS
    default "4"
    help
      Set this to the maximum number of serial ports you want
      the kernel to register at boot time.  This can be overridden
      with the module parameter "nr_uarts", or boot-time parameter
      8250.nr_uarts 

Chances are, the value of CONFIG_SERIAL_8250_NR_UARTS is still 4 on your system. If so, you can set a greater value in the kernel configuration and rebuild the kernel to make all ports available.

Note that 8250.nr_uarts kernel runtime parameter can only set the number of ports between 0 and CONFIG_SERIAL_8250_NR_UARTS, so it is not enough to set it at boot time.

like image 97
Eugene Avatar answered Feb 15 '23 10:02

Eugene