NI-RIO for Linux/x86 64-bit Architecture, Version 21.0 Readme

August 2021

This file contains late breaking news about NI-RIO 21.0 for Linux and supersedes any information found in other documentation included in the distribution.

Refer to for the most recent information about Linux support at National Instruments.

System Requirements

NI-RIO 21.0 for Linux has been tested on the following distributions:

  • openSUSE Leap 15.2
  • openSUSE Leap 15.1
  • Red Hat Enterprise Linux 8
  • Red Hat Enterprise Linux 7
  • CentOS 8
  • CentOS 7
  • Ubuntu 20.04
  • Ubuntu 18.04

NI-RIO 21.0 for Linux requires a 64-bit distribution and does not support 32-bit applications.

Supported Hardware

In order to use NI-RIO on Linux, you need a Windows system to develop your LabVIEW FPGA application. You must compile a bitfile, generate headers with the FPGA Interface C API Generator or FPGA Interface Python API, and then move the application to your Linux system. Refer to the following sections for more information:


NI provides a repository add-on for all supported drivers that you can install using your Linux distribution's native package manager.

  1. Visit and enter the Info Code LinuxRepository.
  2. Download the installer for the repository add-on for your Linux distribution.
  3. Install the repository add-on using the rpm command.
  4. Select and install the following NI R Series and FPGA Interface driver packages through your Linux distribution's package manager:
    • ni-rseries
    • ni-fpga-interface

Using the NI-RIO Driver and FPGA Interface C API

You must begin development on a computer running Windows. Use LabVIEW FPGA to develop and build an FPGA VI that runs on a RIO device. Use the FPGA Interface C API Generator to create the C source files for your application. Visit to get the latest version of the FPGA Interface C API Generator. Then copy the generated files to the Linux machine to begin development of C/C++ code for your application. For information about using the FPGA Interface C API, visit the NI Documentation Portal.

To find the RIO device you are using in your application, use the command lsni -v to list information on all NI devices in the system.

Using the NI-RIO Driver and FPGA Interface Python API

You must begin development on a computer running Windows. Use LabVIEW FPGA to develop and build an FPGA VI that runs on a RIO device. Copy the compiled bitfile (.lvbitx) over to your Linux machine and follow the steps at to get started.

Using the NI-RIO Server

Complete the following steps to remotely access RIO devices on your Linux system from another system with NI-RIO installed:

  1. Select a port for the NI-RIO server to use. The default port is 11296.
  2. Configure the system firewall to allow TCP connections through the selected port.
  3. Edit the nirio.ini file at /var/local/natinst/nirio/etc/ to specify both the selected port and the users allowed to access the device. The following example specifies the default port, 11296, and allows only users at the IP address to have access to the device:
     [General] RpcServerPort=11296 DeviceAccess="-*;+" 
  4. Execute NiRioRpcServer at /usr/local/natinst/nirio/bin/.

Note that the DeviceAccess variable is defined by a semicolon-delimited list of qualifiers, IP addresses, DNS hostnames, and wildcard patterns. To determine whether a remote system has access to RIO devices on this system, the RIO server looks for an entry in the list that matches the remote system. The "+" qualifier allows access, and the "-" qualifier denies access. The RIO server uses the last matching entry in the list to determine whether to allow or deny access. If no entry matches the remote system, the RIO server denies access. For example, if the list is empty, all remote systems are denied access. The first argument in the example above explicitly denies remote access from any IP address. The second argument allows access from the IP address To allow access from multiple IP addresses, define DeviceAccess as follows:


To allow access from any IP address on the network, define DeviceAccess as follows:


Using RIO Aliases

In order to create RIO aliases to local or remote RIO devices, you must edit the nirio.ini file at /var/local/natinst/nirio/etc/. Add an [Aliases] section if one does not already exist. For each alias, there must be a separate line in the [Aliases] section that follows the ="" format. The following example specifies both a local and remote alias:

 [Aliases] foo="RIO0" bar="rio://mycrio/RIO0" 

Note:  Aliases must contain only alphanumerics, '-', and '_'.

Next, change the following version lines to 0:

 [General] MajorVersion=0 MinorVersion=0 

This will trigger nirio.ini to be updated the next time it is used. After running lsni, you should see that the [Aliases] section is removed and instead there will be a new section for each new alias.

Running Linux on PXI Controllers

NI-RIO for Linux works with all PXI and PXI Express controllers and chassis.

Linux Limitations

Some features discussed in the NI-RIO documentation are unavailable on Linux.

  • NI-RIO supports two application development environments:
    • Python 2.7 and Python 3.4+
    • C and C++ (gcc)
  • NI-RIO does not support other ADEs, such as the LabVIEW Real-Time Module, LabWindows/CVI, Microsoft Visual C/C++, or Microsoft Visual Basic.
  • While NI-RIO includes LabVIEW VIs, it does not provide other graphical utilities that are available for other operating systems:
    • LabVIEW Express VIs
    • The Measurement and Automation Explorer (MAX) graphical configuration utility. Refer to DEVICE CONFIGURATION in the Installation section for information about configuring your device in Linux.
    • Soft front panels.
  • When using NI-RIO in a PXI system:
    • Control through MXI-4 is supported
    • Control through MXI-3 is not supported
  • External calibration functions are not supported. Refer to your hardware documentation for information about external calibration, and refer to If your NI-RIO requires external calibration, either perform the calibration on a Windows system, or hire NI or an independent calibration laboratory to perform the calibration.

Legal Information


(c) 2017–2021 National Instruments Corporation. All rights reserved.

This publication may not be reproduced or transmitted in any form, electronic or mechanical, including photocopying, recording, storing in an information retrieval system, or translating, in whole or in part, without the prior written consent of National Instruments Corporation.

NI respects the intellectual property of others, and we ask our users to do the same. NI software is protected by copyright and other intellectual property laws. Where NI software may be used to reproduce software or other materials belonging to others, you may use NI software only to reproduce materials that you may reproduce in accordance with the terms of any applicable license or other legal restriction.

End-User License Agreements and Third-Party Legal Notices

For end-user license agreements (EULAs) and copyright notices, conditions, and disclaimers, including information regarding certain third-party components used in LabVIEW, refer to the Copyright topic of the LabVIEW Help.

U.S. Government Restricted Rights

If you are an agency, department, or other entity of the United States Government ("Government"), the use, duplication, reproduction, release, modification, disclosure or transfer of the technical data included in this manual is governed by the Restricted Rights provisions under Federal Acquisition Regulation 52.227-14 for civilian agencies and Defense Federal Acquisition Regulation Supplement Section 252.227-7014 and 252.227-7015 for military agencies.

IVI Foundation Copyright Notice

Content from the IVI specifications reproduced with permission from the IVI Foundation.

The IVI Foundation and its member companies make no warranty of any kind with regard to this material, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. The IVI Foundation and its member companies shall not be liable for errors contained herein or for incidental or consequential damages in connection with the furnishing, performance, or use of this material.


Refer to the NI Trademarks and Logo Guidelines at for information on NI trademarks. Other product and company names mentioned herein are trademarks or trade names of their respective companies.


For patents covering the NI products/technology, refer to the NI Patent Notice at