Using the NI 987x Modules in Hybrid Mode on CompactRIO

Updated Apr 17, 2026

Environment

Hardware

  • NI-9871
  • NI-9870
  • CompactRIO Controller

Software

  • LabVIEW
  • LabVIEW Real-Time Module
  • LabVIEW FPGA Module

Driver

  • NI-Serial

The CompactRIO (cRIO) controller is used for data acquisition, control, and monitoring in time‑critical applications. C Series modules can be accessed using different programming modes, including the Scan Interface, LabVIEW FPGA, and NI‑DAQmx (on cRIO‑904x and cRIO‑905x controllers). Using the Scan Interface and the LabVIEW FPGA Interface simultaneously on a cRIO target is known as Hybrid Mode.

This article explains how to correctly configure and use the NI‑9870 and NI‑9871 serial modules when a cRIO controller is operating in Hybrid Mode.

  1. Install NI-Serial 9870 and 9871 Scan Engine Support on your Real-Time controller. This can be done in NI Measurement and Automation Explorer (MAX) by the following steps:
    1. Launch NI MAX
    2. Navigate to Remote Systems and identify your controller.
    3. Expand your controller's view and right-click on Software >> Add/Remove Software

This image displays how to access Add/Remove software on a NI Linux RT controller in MAX 

    1. Select the NI-Serial 9870 and 9871 Scan Engine Support software and click on Review changes to complete the process.

This image displays the NI Serial 9870 and 9871 Scan Engine support software in NI MAX  

 

 

  1. Add your cRIO and modules to a LabVIEW project in Hybrid Mode and ensure you keep the 987x module under Real-Time Scan Resources.

 

  1. Create a new FPGA VI (if you do not already have one), run it interactively and ensure it deploys to the target. After the FPGA bitfile successfully deploys, you should now see the device ports in NI MAX. 

  1. If you are planning to load and run the FPGA VI programmatically from the Real-Time VI using the Open FPGA VI Reference or Run Method, make sure that a considerable delay (at least 2 seconds) is left between the moment when the FPGA VI starts running and when the serial communication is opened with the NI-VISA VIs. This will ensure that the needed intermediate layers are already up and running before trying to establish communication. Not doing this could lead to error -1073807343 or -1073807192 when opening the NI-VISA port. For more information, please refer to the image below. 

    On the other hand, if your Real-Time VI uses FPGA invoke method Run, you should place wait function after this method.