Linux Users

cancel
Showing results for 
Search instead for 
Did you mean: 

CentoS 7.6 NI-Serial PXI-8433/4 support

Solved!
Go to solution

It doesn't look like the PXI-8433/4 card is supported by NI-Serial in CentOS 7.6 (or maybe any Linux OS) with the latest NI provided drivers.  Is this true?

 

Is there a list of supported hardware on PXI for Desktop Linux similar to the Windows supported HW charts that can be found on NI.com such as this one? http://www.ni.com/product-documentation/54690/en/

Ryan Vallieu CLA, CLED
Senior Systems Analyst II
NASA Ames Research Center
0 Kudos
Message 1 of 23
(7,004 Views)

I checked the NI Linux Driver Readme file...

Looks like the 8433/4 should be supported in CentOS 7.6 with NI Serial 18.1 - so I need to do some checking to see why I can't get the ports to show in LabVIEW 2018 64-bit.

 

-------------------

System Requirements

-------------------

NI-Serial for Linux software for the Linux/x86 64-bit architecture has been

tested on the following distributions:

 

    openSUSE Leap 42.3

    Red Hat Enterprise Linux Desktop + Workstation 6.x

    Red Hat Enterprise Linux Desktop + Workstation 7.x

    CentOS 7.x

 

For more information about supported Linux versions and distributions supported

by NI, refer to ni.com/linux.

 

--------------------

Supported Hardware

--------------------

 

--------------------------------------------------------------------------------------------------------

PXI Interfaces              Standard               # Ports          Isolated            Max Baud                                                                                                                          (kbaud)

--------------------------------------------------------------------------------------------------------

PXI-8431/2                  RS-485/RS-422           2                No                     3000.0

PXI-8431/4                  RS-485/RS-422           4                No                     3000.0

PXI-8431/8                  RS-485/RS-422           8                No                     3000.0

PXI-8433/2                  RS-485/RS-422           2                Yes                    3000.0

PXI-8433/4                  RS-485/RS-422           4                Yes                    3000.0

 

 

--------------------------------------------------------------------------------------------------------

PXI Express Interfaces      Standard               # Ports          Isolated            Max Baud

                                                                                                                      (kbaud)

--------------------------------------------------------------------------------------------------------

PXIe-8430/8                 RS-232                  8                No                     1000.0

PXIe-8430/16                RS-232                  16               No                     1000.0

PXIe-8431/8                 RS-485/RS-422           8                No                     3000.0

PXIe-8431/16                RS-485/RS-422           16               No                     3000.0

 

  1. The two-wire auto control mode for RS-485 transceiver control has a maximum baud rate of 2 Mbaud.
  2. For possible use with higher baud rates, refer to ni.com/kb and search for KnowledgeBase 58KEI82F.
  3. This port supplies connections only for transmit, receive, and ground.
Ryan Vallieu CLA, CLED
Senior Systems Analyst II
NASA Ames Research Center
0 Kudos
Message 2 of 23
(6,994 Views)

Can you tell if the kernel module built correctly?  What do dkms status and dkms autoinstall report?  It doesn't look like the ni-serial package lists a dependency on the kernel-devel package.  If dkms autoinstall fails with something like "Your headers for kernel <version> cannot be found at <path>," you'll need to install them separately with something like yum install kernel-devel-`uname -r`.

0 Kudos
Message 3 of 23
(6,985 Views)

dmks autoinstall didn't return anything.

 

dkms status results (I added the bold):

 

ni1045tr, 18.0.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
ni408x_driver, 18.2.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
ni488k, 18.0.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
ni5110k, 18.7.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
ni5164k, 18.4.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
ni5170k, 18.4.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nibds, 18.2.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nica4_driver, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nicdcck, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nicdrk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nicmmk, 18.0.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nicmrk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nicntdrk, 18.0.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nicondrk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nidimk, 18.2.2f0, 3.10.0-957.el7.x86_64, x86_64: installed
nidmxfk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nidsark, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
niesrk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
niflexrio6seriesk, 18.1.1f2, 3.10.0-957.el7.x86_64, x86_64: installed
niflexrio7seriesk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
niflexriomitek, 18.1.1f2, 3.10.0-957.el7.x86_64, x86_64: installed
nifslk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nihorbrk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nihsdrk, 18.7.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nikal, 18.2.0f0, 3.10.0-957.el7.x86_64, x86_64: installed
nilmsk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nimdbgk, 18.2.3f0, 3.10.0-957.el7.x86_64, x86_64: installed
nimru2k, 18.2.2f0, 3.10.0-957.el7.x86_64, x86_64: installed
nimsdrk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nimxdfk, 18.2.3f0, 3.10.0-957.el7.x86_64, x86_64: installed
nimxik, 18.0.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
niorbk, 18.2.3f0, 3.10.0-957.el7.x86_64, x86_64: installed
nipalk, 18.2.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nipxicidk, 18.0.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nipxifpk, 18.0.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nipxigpk, 18.0.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nipxim2, 18.0.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nipxiocp, 18.0.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nipxirmk, 18.0.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
niraptrk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
niriochinchk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
niriomtk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
NiRioSrv, 18.1.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
niscdk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nisdigk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
niserial, 18.1.0f0, 3.10.0-957.el7.x86_64, x86_64: installed
nisldk, 18.2.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nismbus, 18.0.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nismbusw, 18.0.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
nissrk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nistc2k, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nistc3rk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nistcrk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nistreamk, 18.2.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
niswdk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nisync6674, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nitiork, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
NiViPciK, 18.2.1f0, 3.10.0-957.el7.x86_64, x86_64: installed
niwfrk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed
nixsrk, 18.1.1f1, 3.10.0-957.el7.x86_64, x86_64: installed

Ryan Vallieu CLA, CLED
Senior Systems Analyst II
NASA Ames Research Center
0 Kudos
Message 4 of 23
(6,976 Views)

Does lsmod show the niserial module loaded?  Does modprobe niserial load it?

0 Kudos
Message 5 of 23
(6,961 Views)

lsmod did NOT originally show niserial as loaded.

 

modprobe niserial did load the module, no errors reported.

 

lsmod shows 0 callers for niserial

 

Restarted and lsmod still showed the module as loaded - running LabVIEW again - still no 8433/4 Com ports showing.  Makes sense since no instances of niserial are running - just not sure what should be loading it.  

Ryan Vallieu CLA, CLED
Senior Systems Analyst II
NASA Ames Research Center
0 Kudos
Message 6 of 23
(6,956 Views)

The page Downloading and Installing NI Driver Software on Linux Desktop mentions installing LabVIEW support for the drivers downloaded.  http://www.ni.com/product-documentation/54754/en/

6. Install support for NI LabVIEW (optional)

After NI driver software has been installed, you may install driver support for NI LabVIEW if you plan to use it. Refer to the 'Application Development Environment' table in the Description section of the NI Linux Device Drivers download page for the names of packages which can be installed to provide driver support for LabVIEW. Please see Figure 3 below for an example.

 

Figure 3 shows an example of

[root user]# yum install ni-daqmx-labview-2018-support

 

The chart mentioned on the above page that is found on the NI Linux Device Drivers (July 2018) page does not mention installing the niserial package for LabVIEW support.

 

http://www.ni.com/download/ni-linux-device-drivers-2018/7664/en/

 

Driver Application Development Environment Package Name
NI-DAQmx 18.1 LabVIEW 2016 ni-daqmx-labview-2016-support
NI-DAQmx 18.1 LabVIEW 2017 ni-daqmx-labview-2017-support
NI-DAQmx 18.1 LabVIEW 2018 ni-daqmx-labview-2018-support
NI-DMM 18.2 LabVIEW 2015 ni-dmm-labview-2015-support
NI-DMM 18.2 LabVIEW 2016 ni-dmm-labview-2016-support
NI-DMM 18.2 LabVIEW 2017 ni-dmm-labview-2017-support
NI-DMM 18.2 LabVIEW 2018 ni-dmm-labview-2018-support
NI-SCOPE 18.7 LabVIEW 2015 ni-scope-labview-2015-support
NI-SCOPE 18.7 LabVIEW 2016 ni-scope-labview-2016-support
NI-SCOPE 18.7 LabVIEW 2017 ni-scope-labview-2017-support
NI-SCOPE 18.7 LabVIEW 2018 ni-scope-labview-2018-support
NI-SWITCH 18.1 LabVIEW 2015 ni-switch-labview-2015-support
NI-SWITCH 18.1 LabVIEW 2016 ni-switch-labview-2016-support
NI-SWITCH 18.1 LabVIEW 2017 ni-switch-labview-2017-support
NI-SWITCH 18.1 LabVIEW 2018 ni-switch-labview-2018-support
NI-Sync 18.2 LabVIEW 2016 ni-sync-labview-2016-support
NI-Sync 18.2 LabVIEW 2017 ni-sync-labview-2017-support
NI-Sync 18.2 LabVIEW 2018 ni-sync-labview-2018-support
NI System Configuration 18.1 LabVIEW 2016 ni-syscfg-labview-2016-support
NI System Configuration 18.1 LabVIEW 2017 ni-syscfg-labview-2017-support
NI System Configuration 18.1 LabVIEW 2018 ni-syscfg-labview-2018-support
NI-VISA 18.2 LabVIEW 2015 ni-visa-labview-2015-support
NI-VISA 18.2 LabVIEW 2016 ni-visa-labview-2016-support
NI-VISA 18.2 LabVIEW 2017 ni-visa-labview-2017-support
NI-VISA 18.2 LabVIEW 2018 ni-visa-labview-2018-support

 

Is there some other setup required that I am missing?

Ryan Vallieu CLA, CLED
Senior Systems Analyst II
NASA Ames Research Center
0 Kudos
Message 7 of 23
(6,946 Views)

I think progress was made after performing modprobe to install ni-serial module.

 

I have to log in as ROOT (using SU) in Linux to get any Serial ports to show up with permissions.

 

I ran NIvisaic (NI VISA interactive control) in Linux Terminal and also visaconf (NI VISA Config) in Linux as ROOT, with and without the 8433/4 cards installed and did notice that the ASRL list changed, but not by the number of cards/ports expected.  I have 4 of the 8433/4 cards.  They are in slots 4, 5, 6, and 7.  Each PXI-8433/4 has 4 ports, so I would expect 16 ports to show up as available in NIvisaic or visaconf

 

Do I need to manually configure them in visaconf?

 

If I don't run as ROOT I don't get the same access to the cards in NIvisaic, do I need to maybe run LabVIEW as root somehow?

 

Attached are the pictures with all of the 8433/4 installed or removed from the system, and running NIvisaic and visaconf.

 

In LabVIEW 2018 I am only able to get to ASRL1::INSTR to ASRL4::INSTR, which again I would expect to see more ports.  ASRL1 always appears in the list, and I think this is the RS232 COM port built into the controller.NIvisaic Without cards installedNIvisaic Without cards installedNIvisaic with cards installedNIvisaic with cards installedvisaconf cards removedvisaconf cards removedvisaconf cards installedvisaconf cards installed

Ryan Vallieu CLA, CLED
Senior Systems Analyst II
NASA Ames Research Center
0 Kudos
Message 8 of 23
(6,936 Views)
Solution
Accepted by topic author RVallieu

NI Support finally found reference in their issues Db that covers this problem.  There is a default CentOS kernel limit to the number of ports that the system will configure, this default limit is 4!

 

Symptoms

Only 4 serial ports are available in the Desktop Linux after install the niserial Linux Desktop driver. This happens across RHEL6, RHEL7 and CentOS7.

Cause

This is cause by CONFIG_SERIAL_8250_NR_UARTS parameter in the configuration kernel file of the kernel. This defines the maximum number of serial ports the kernel will handle. NI-Serial leverage the 8250 driver for serial ports in Linux System.  The default limit for the kernel is 4 port, which is why when a PXI8433/4 card is added to the PXIe chassis, only 4-port are discovered, even with 1 built-in RS-232 port on the controller, when one would expect 5 ports to be discovered.

 

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



Resolution (Ryan: I edited out the first line of editing the grub.conf file manually)

Edit the kernel line in /boot/grug/grub.conf and pass the parameter 8250.nr_uarts=32, After reboot 32 serial ports will be accessible and will be verified with below command. 

  1. Edit /etc/default/grub and add 8250.nr_uarts=32 to the line starting GRUB_CMDLINE_LINUX=... (change the 24 to what is required for your card. Allow for IR ports also.)
  2. Rebuild the grub.cfg file by running the grub2-mkconfig -o command as follows:

On BIOS-based machines, issue the following command as root:

# grub2-mkconfig -o /boot/grub2/grub.cfg

On UEFI-based machines, issue the following command as root:

# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

On CentOS, issue the following command as root:

# grub2-mkconfig -o /boot/grub2/grub.cfg

On RHEL7

                    # grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg

  1. Reboot

 

I also verified this by searching on the Net and found this on the CentOS board:

https://www.centos.org/forums/viewtopic.php?t=56094

The resolution turns out to be pretty simple (at least for this board, most likely others too). Simply set the number of ports to initialise to be enough for all the hardware: for this board, set 8250.nr_uarts=7 on the boot command line. After which the kernels sets up the ports exactly as expected and furthermore, they work as expected also.

For those that don't regularly change the grub configuration, the mechanics are:

  1. Log in as Root
    1. Type in SU at command line prompt and enter the password
  2. Naviage to /etc/default
    1. ls –l to verify the grub file is located here
  3. Edit /etc/default/grub and add 8250.nr_uarts=7 to the line starting GRUB_CMDLINE_LINUX=... (change the 7 to what is required for your card. Allow for IR ports also.)  The options on the line for the GRUB_CMDLINE_LINUX= appear between the “” with spaces between the options. Add a space between the last option in the list and add the 8250.nr_uarts=n to the line.

Example GRUB_CMDLINE_LINUX=”crashkernel=auto rd.lvm.lv=centos_fsp4/root rd.lvm.lv=centos_fsp4/swap rhgb quiet"

  1. Run grub2-mkconfig -o /boot/grub2/grub.cfg
    1. Log in as SU, if not already ROOT
    2. At the # prompt simply type: grub2-mkconfig -o /boot/grub2/grub.cfg
  2. Navigate to the /boot/grub2/grub.cfg file and look at the contents to verify the uart limit has been added to the file.

     6. Reboot

Ryan Vallieu CLA, CLED
Senior Systems Analyst II
NASA Ames Research Center
Message 9 of 23
(6,809 Views)

The issue after this is that LabVIEW doesn't have sufficient privileges to access the resource by default.

 

Need to change the access level required in the instrument file.

Ryan Vallieu CLA, CLED
Senior Systems Analyst II
NASA Ames Research Center
0 Kudos
Message 10 of 23
(6,787 Views)