What versions of Linux support my PCI-Express serial card?
Linux Support for the Brainboxes PCIe (PX) range of serial cards
The Linux kernel has built-in support for a selection of the Brainboxes PCIe (PX) cards. A relatively new kernel version is required for the devices to be used. The following table lists the minimum kernel versions required for the devices:
| Linux Kernel Version | Brainboxes device(s) |
|---|---|
| 4.17.0 and later | PX-272 PX-306 |
| 5.15.61 (LTS) and later 5.15 releases 5.19.2 and later | PX-101 (Revision 2 only) PX-203 (no LPT support) PX-235 (Revision 2 only) PX-246 (Revision 2 only) PX-257 (Revision 2 only) PX-420 (Revision 2 only) PX-803 (Revision 2 only) PX-846 (Revision 2 only) PX-857 (Revision 2 only) |
| 5.15.138 (LTS) and later 5.15 releases 6.1.62 (LTS) and later 6.1 releases 6.5.11 and later 6.5 releases 6.6.1 (LTS) and later | IX-100 IX-200 IX-400 PX-101 (Revision 3) PX-235 (Revision 3) PX-246 (Revision 3) PX-257 (Revision 3) PX-260 PX-268 PX-275 PX-279 PX-310 PX-313 PX-320 PX-324 PX-335 PX-346 PX-368 PX-376 PX-387 PX-420 (Revision 3) PX-475 (no LPT support) PX-701 PX-803 (Revision 3) PX-820 PX-846 (Revision 3) PX-857 (Revision 3) |
| 4.14.333 (LTS) and later 4.14 releases 4.19.302 (LTS) and later 4.19 releases 5.4.264 (LTS) and later 5.4 releases 5.10.204 (LTS) and later 5.10 releases 5.15.143 (LTS) and later 5.15 releases 6.1.68 (LTS) and later 6.1 releases 6.6.7 (LTS) and later | IX-500 IX-550 PX-146 PX-157 |
| 4.14.333 (LTS) and later 4.14 releases 4.19.302 (LTS) and later 4.19 releases 5.4.264 (LTS) and later 5.4 releases 5.10.204 (LTS) and later 5.10 releases | PX-203 (LPT port only) PX-475 (LPT port only) |
| 5.15.143 (LTS) and later 5.15 releases 6.1.68 (LTS) and later 6.1 releases 6.6.7 (LTS) and later | PX-203 (LPT and serial support) PX-475 (LPT and serial support) |
| 5.4.268 (LTS) and later 5.4 releases 5.10.209 (LTS) and later 5.10 releases 5.15.148 (LTS) and later 5.15 releases 6.1.74 (LTS) and later 6.1 releases 6.6.13 (LTS) and later 6.6 releases 6.7.1 and later | PX-263 PX-295 |
How can I tell what Linux kernel version I am using?
You can find out the version of the kernel that your Linux system is using with the terminal command: uname -v This will print the running kernel version. For example, Debian 11 (Bullseye) prints: #1 SMP Debian 5.10.179-2 (2023-07-14) The system is running version 5.10.179 LTS, so is not compatible with the cards, thus a newer kernel version would be required to be installed.
Which Linux distributions use which kernel versions?
The following table is a selection of Linux distributions and their associated kernel versions, which you can use to compare against the above compatibility table. Note that these are the kernel versions as of writing. There may have been updates to the versions since this article was published. Check with your vendor if you are unsure.
| Distribution | Linux kernel version |
|---|---|
| RHEL/CentOS/Oracle Linux (non-UEK) 7 | 3.10.0 |
| Oracle Linux (UEK) 7 | 5.4.17 |
| RHEL/Rocky Linux/Alma Linux/Oracle Linux (non-UEK) 8 | 4.18.0 |
| Oracle Linux (UEK) 8 | 5.15.0 |
| RHEL/Rocky Linux/Alma Linux/Oracle Linux (non-UEK) 9 | 5.14.0 |
| Oracle Linux (UEK) 9 | 5.15.0 |
| Debian Linux 10 (Buster) | 4.19.282 |
| Debian Linux 11 (Bullseye) | 5.10.179 |
| Debian Linux 12 (Bookworm) | 6.1.38 |
| Ubuntu 18.04 LTS | 4.15.0 |
| Ubuntu 20.04 LTS | 5.4.0 |
| Ubuntu 22.04 LTS | 5.15.0 |
How do I use my PX device on Linux?
Serial ports
The device should be detected and installed automatically on boot by the Linux system. After the computer is booted, the port(s) will be available at /dev/ttyS_x_, with _x_ being a number. Serial ports start at ttyS0 and each additional port installed on the computer will use the next available number.
LPT/Parallel ports
The parallel port driver should load on boot when it detects a parallel card in the system, however you will need to load the specific driver for your program to be able to utilize the parallel port. Some programs may do this automatically, for example if you are using the CUPS printing system this should automatically load the lp driver which will in turn load the parallel port driver. The raw parallel port interface will be available at /dev/parport_x_, with _x_ being a number, starting from 0, though this should not need to be accessed directly as your software should create its own interface for the port which will be used instead.
Missing serial ports?
If you install your card and find that only some of the ports are available, the likely issue is that the driver is using the default of 4 UARTs on the system.
You will need to specify to the driver to use more via a kernel parameter. On any system which uses the GRUB bootloader (for example Debian and Ubuntu), run the following procedure:
- As root/superuser (or using sudo), edit the file
/etc/default/grubwith your editor of choice, for examplesudo nano /etc/default/grub2) Locate the lineGRUB_CMDLINE_LINUX3) Add the parameter8250.nr_uarts=10at the end of inside the quote blocks, which will set the driver to expose 10 UARTs to the system. If you have more than 10 UARTs on the system, increase this value until you have all the ports available. 4) Runsudo update-gruband reboot.