Linux Device Drivers 2023 Q4 Known Issues

Overview

This document contains the Linux Device Drivers known issues that were discovered before and since the release of Linux Device Drivers 2023 Q4. Known issues are performance issues or technical bugs that NI has acknowledged exist within this version of the product.

 

Not every issue known to NI appears on this list; it is intended to show the most severe and common issues that you may encounter and provide workarounds when possible. Other technical issues that you may encounter could occur through normal product use or system compatibility issues. You may find more information on these issues in NI’s Product Documentation, Knowledgebase, or Community; see Additional Resources.

Bug Number

Legacy ID

Description

Details

1448861, 1482726, 1482726

System Crashes When NI Drivers Exceed the Default Max for iNotify Instances

When running code that initializes NI drivers, the system crashes. This may be because the NI drivers have requested more than the 128 iNotify instances that the default Linux kernel allows. The likelihood of encountering this issue increases as the number of installed drivers increases.

Workaround:

Increase the iNotify limit from the default 128 to a larger number, such as 12288.

You can increase the iNotify limit permanently through the following:
  1. Add      
    fs.inotify.max_user_instances=<Upper Limit> to /etc/sysctl.conf 
  2. Run      
    sysctl -p 
    to reload the limit
     

  3. Run      
    sysctl -a | grep fs.inotify.max_user_instances 
    to see that the new limit is set.


Or you can increase the iNotify limit after every restart with this command:

sudo sysctl -w fs.inotify.max_user_instances=<Upper Limit>
Note: <Upper Limit> can be any large number such as 12288.

Reported Version:

NI Linux Device Drivers: 2021 Q3

Resolved Version:

N/A

Added:

Aug 10, 2021

1724713

NI Linux Device Drivers do not Support Sleep or Hibernate

NI device drivers may crash a Linux system if the system tries to sleep or hibernate while devices are in use.

Workaround:

There is no known workaround.

Reported Version:

NI Linux Device Drivers: 2019

Resolved Version:

N/A

Added:

Nov 11, 2021

1210589, 2256290

DMA is not working with NI Drivers on IOMMU-enabled systems

When attempting to do DMA with an NI driver on a Linux system, memory access is restricted and the driver doesn't function. The kernel may report an error such as:
DMAR: [DMA Read NO_PASID] Request device [06:00.0] fault addr 0xb8441000 [fault reason 0x06] PTE Read access is not set


Workaround:

Disable IOMMU control from the Linux kernel bootup parameters with whichever of these applies to the system:
iommu=off 
intel_iommu=off
amd_iommu=off

Reported Version:

NI Linux Device Drivers: 2020

Resolved Version:

N/A

Added:

Feb 21, 2023

2407595, 2410935

Linux PC restarts after reprogramming the FPGA on a PXI device

When reprogramming the FPGA of some models FlexRIO, or other user-programmable FPGA cards with a custom bitfile, the system crashes. When the system restarts, the FPGA appears to have the intended FPGA on it.

This is known to occur on non-PXI host PCs running Linux that have a MXIe connection to a PXI chassis where the FPGA card is located. It stems from differences in how the host PC OS and BIOS treat the PCI bus interruption that occurs when certain customizable FPGA cards load a new bit file. The new bit file will successfully load, however it will cause a system crash.

If a given hardware configuration is affected (Host PC, MXIe card, PXI chassis, and PXI slot), the crash will occur every time a new bit file is downloaded.

Workaround:

There is no known universal workaround because there are many factors involved in how the system treats PCI interrupts. However, if the BIOS has an option to enable "PCIe Hotplug and PCIe ACPI Hot Plug" that is likely to solve the problem. In addition, changing any of the configuration can make a difference including the Host PC model, MXIe model, PXI chassis model, and FPGA card slot number.

Reported Version:

NI Linux Device Drivers: 2021 Q3

Resolved Version:

N/A

Added:

Jul 21, 2023

174745, 2400548, 2560362 698926

62XX Family DAQmx Devices Are Unrecognized in Ubuntu Linux

There are few issues with NI-DAQmx co-existing with COMEDI, where the COMEDI supported devices cannot be claimed by DAQmx.
This is because they are already claimed by COMEDI before NI-PAL completely loads. This will cause a problem with device enumeration, especially in Ubuntu, because COMEDI is a default part of the Ubuntu kernel.

To determine if your hardware is bound to another driver:
1. Identify the hardware that does not function with DAQmx. (eg. run 'nilsdev' -- all device bounded to DAQmx should be listed)
2. Identify the <device-id> of your hardware. (eg. run 'lspci')
3. Identify driver associated with your hardware (eg. run 'find /sys/bus/pci/drivers/ | grep <device-id>). If your particular DAQmx device is showing up with ‘lspci’ but not ‘nilsdev’, then this command will show you which other driver is claiming the device.

Workaround:

There are 2 ways to workaround the issue:

A. Blacklist relevant COMEDI kernel module
Undesirable driver could be blacklisted and thus not bound to the device. Since this is done at the module level, we lose the granularity to control bindings of individual devices
  1. Refer to Hardware Supported by Comedi (https://www.comedi.org/hardware.html) to find the corresponding COMEDI kernel driver for specific NI product. 
  2. cat /etc/modprobe.d/blacklist.conf blacklist <COMEDI kernel driver> 
  3. Reboot.
B. Manually bind/unbind hardware
  1. Find the PID of the device you want DAQmx to bind with (eg. run 'lspci'). 
  2. Search for the appropriate NI “driver” by looking for the file that contains that PID in /etc/nipal/devinit.d/*.inf (because PAL uses the INF names to register the drivers with the OS). 
  3. Refer to Hardware Supported by Comedi (https://www.comedi.org/hardware.html) to find the corresponding COMEDI driver for the specific NI product.
  4. After boot, run “echo <device-id> > /sys/bus/pci/drivers/<non-daqmx-driver-name>/unbind 
  5. Run “echo <device-id> > /sys/bus/pci/drivers/<daqmx-driver-name>/bind 
Note: This is not a persistent bind. The binding is reset on a system reboot. 

For example a PXI-6528 setup might have PID of "0000:05:0e.0" with corresponding COMEDI kernel module of ni_65xx. Execute below command to manual bind/unbind hardware
  • echo -n "0000:05:0e.0" > /sys/bus/pci/drivers/ni_65xx/unbind
  • echo -n "0000:05:0e.0" > /sys/bus/pci/drivers/nisd/bind

Reported Version:

NI Linux Device Drivers: 2023 Q3

Resolved Version:

NI Linux Device Drivers: 2024 Q1

Added:

Aug 8, 2023

2521821, 2521821

Services and applications may conflict with SELinux

Possible issues:
  1. When scanning for LXI devices, SELinux throws an error such as "SELinux is preventing /usr/lib/x86_64-linux-gnu/ni-visa/niLxiDiscovery from name_connect access on the tcp_socket port"
    • This is because SELinux will need to be specifically told to allow the port access that the LXI discovery service needs.
  2. Access to visaconf.ini is restricted with an error like "SELinux is preventing /usr/lib/x86_64-linux-gnu/ni-visa/niLxiDiscovery from write access on the file /etc/ni-visa/visaconf.ini"
    • This is because init_t context is unable to read/write to etc_t context and needs an explicit policy.
  3. Executing utility apps like the VISA Interactive Control is restricted due to executable heap restriction
    • This is because LV based applications may end up executing code that is heap allocated.



Workaround:

1. For name_connect access, follow the instructions in the error message to make an exception in SELinux for the LXI discovery service for network access.
*****  Plugin catchall_boolean (89.3 confidence) suggests   ******************
If you want to allow nis to enabled
Then you must tell SELinux about this by enabling the 'nis_enabled' boolean.
Do
setsebool -P nis_enabled 1
2. visaconf.ini restriction can be solved with 
sepolicy generate --init /usr/lib/x86_64-linux-gnu/ni-visa/niLxiDiscovery

echo "files_manage_var_files(init_t)" >> niLxiDiscovery.te
echo "files_rw_etc_files(init_t)" >> niLxiDiscovery.te
./niLxiDiscovery.sh
3. Executable heap solution
setsebool -P selinuxuser_execheap 1

Reported Version:

NI-VISA: 2023 Q2

Resolved Version:

N/A

Added:

Oct 11, 2023

2498564

On Linux, some drivers sometimes generate a spurious SIGALRM, which causes some functions to return prematurely with error.

On Linux, some driver function calls may generate a spurious SIGALRM, which may interrupt certain operations (e.g. fetching measurements). For example, niDCPower_FetchMultiple() may return error -1074097127.


Known impacted drivers: NI-DCPower, NI-SCOPE.

Workaround:

If you run into this issue and wish to disable it, copy the attached file for the appropriate driver from the Downloads section to

/var/local/natinst/systemsettings/

Reported Version:

NI Linux Device Drivers: 2023 Q3 | NI Linux Device Drivers: 2023 Q4 | NI-DCPower: 2023 Q3 | NI-DCPower: 2023 Q4 | NI-SCOPE: 2023 Q3 | NI-SCOPE: 2023 Q4

Resolved Version:

N/A

Added:

Dec 13, 2023

Final Time Issue Listed

Issues found in this section will not be listed in future known issues documents for this product.

There are currently no issues to list.

Additional Resources

Explore Support Content and Product Documentation 

 

 

Ask the NI Community

 

 

Request Support from an Engineer

 

A valid service agreement may be required, and support options vary by country

 

Glossary of Terms

 

  • Bug ID - When an issue is reported to NI, you may be given this ID or find it on ni.com.  You may also find IDs posted by NI on the discussion forums or in KnowledgeBase articles.
  • Legacy ID – An older issue ID that refers to the same issue.  You may instead find this issue ID in older known issues documents.
  • Description - A few sentences which describe the problem. The brief description given does not necessarily describe the problem in full detail.
  • Workaround - Possible ways to work around the problem.
  • Reported Version - The earliest version in which the issue was reported.
  • Resolved Version - Version in which the issue was resolved or was no longer applicable. "N/A" indicates that the issue has not been resolved.
  • Date Added - The date the issue was added to the document (not the reported date).