APIs, concepts, guides, and more
RMP Package Contents

What's inside the RMP packages (Windows MSI, Windows ZIP, Debian/Ubuntu DEB, Rocky/RHEL RPM) and how to install each one.

RSI ships the RMP Motion Controller as four downloadable packages, one for each supported install style. Every package contains the same RMP firmware, the same RapidCode API, and the same EtherCAT vendor configuration database. They differ only in installer format and a few platform-specific extras.

Each package is dual-purpose: it contains everything a developer needs to build software against the RMP API, and everything a production PC needs to host the RMP runtime. The same files install on a developer's workstation as on a deployed machine. There is no separate "runtime" or "redistributable" download.

Package Filename For
Windows MSI RMP_11.0.5.msi Windows 10/11 (recommended)
Windows ZIP RMP_11.0.5.zip Windows 10/11 (manual / portable)
Debian DEB rmp_11.0.5-1_amd64.deb, rmp_11.0.5-1_arm64.deb Debian 12+ (amd64 and arm64)
Rocky/RHEL RPM rmp-11.0.5-1.el10.x86_64.rpm Rocky 10+ (x86_64)

Download any of the above from the Downloads page on the RapidPortal.

🔹 What Every Package Includes

Every RMP package, regardless of platform, ships the same logical contents. Filenames differ between Windows (.dll, .lib, .pyd) and Linux (.so, versioned shared objects), and Windows additionally ships INtime real-time firmware images (.rta, .rsl) where Linux ships native real-time binaries.

RMP Firmware

The real-time motion control and EtherCAT network firmware that runs the controller.

Component Windows (INtime) Linux (native)
RMP motion firmware RMP.rta rmp
EtherCAT network master RMPNetwork.rta rmpnetwork
Real-time task manager rttaskmanager.rta rttaskmanager

RapidCode API

The library you build your application against, in C++, .NET, or Python.

Component Windows Linux
C++ library (64-bit) RapidCode64.dll, RapidCode64.lib librapidcode.so
C++ library (32-bit) RapidCode.dll, RapidCode.lib (under x86\) not shipped
C++ library for INtime RapidCodeRT.rsl, RapidCodeRT.lib not shipped
.NET binding RapidCode64.NET.dll RapidCode.NET.dll
Python binding RapidCodePython.py + _RapidCodePython.pyd RapidCodePython.py + _RapidCodePython.so
Real-time task library rttask.dll, RTTaskFunctions.dll (+ .lib, .rsl) librttask.so, libRTTaskFunctions.so
Kinematics (Orocos KDL) KDL.dll liborocos-kdl.so

The kinematics library is only used by the Cartesian Robot class.

Headers and Protocol Buffer Definitions

Public API headers for compiling C/C++ applications, and .proto files for generating gRPC clients in any language.

The RMP version is stamped into the first line of each header, each .proto file, and NodeInfo.xml so you can verify exactly which release a given file came from.

EtherCAT Vendor Configuration

Everything the RMP needs to discover EtherCAT nodes on your network and generate an ENI file (EtherCAT.xml) for the EtherCAT master to load.

  • ESI/ : the EtherCAT Slave Information XML files supplied by each device vendor. The release ships roughly 170 of them, covering ABB, AKD, Beckhoff, Copley, Control Techniques, Delta, Elmo, Festo, Hans Robot, Kollmorgen, Leadshine, LinMot, Mitsubishi MELSERVO, Nanotec, Omron, Panasonic, Parker, Sanyo Denki, Schneider Electric, Servotronix, SMC, Synapticon, Yaskawa, and many others. See EtherCAT Nodes for the full list of officially supported nodes.
  • NodeInfo.xml : built-in supplementary data RSI applies during ENI generation (read-only).
  • CustomNodeInfo.xml : user-editable overrides for per-node tweaks that go on top of NodeInfo.xml.

Tools and Utilities

  • rsiconfig : RMP and EtherCAT network configuration tool
  • rapidserver : gRPC server for the RapidCodeRemote API

The Windows packages additionally include the GUI tools: RapidSetup.exe, MotionScope.exe, BodeTool.exe, vm3.exe, the Dump* utilities, and the RapidWorkbench.zip bundle.

The Linux packages additionally include the rt-configure.sh NIC tuning helper and the rapidserver systemd service unit.

CMake Integration (C++ only)

cmake/RSI.cmake is shipped in every package. To use it from your own CMakeLists.txt, point RSI_ROOT at the install directory (typically C:/RSI/<version>/ on Windows or /rsi on Linux) and include the file directly:

set(RSI_ROOT "<path-to-RMP-install>") # or pass via -DRSI_ROOT=... at configure time
include(${RSI_ROOT}/cmake/RSI.cmake)

RSI.cmake sets up include and library paths for RapidCode and provides helper functions for configuring RMP targets. Windows additionally ships cmake/INtime/INtimeHelper.cmake and the INtime_VS2019_config.cmake / INtime_VS2022_config.cmake toolchain helpers for INtime real-time applications.

Sample Applications

A complete examples/ folder with working sample apps in three languages, plus a real-time-task starter:

  • examples/C++/ : CMake-based starter project covering motion, configuration, math blocks, real-time tasks, and utilities
  • examples/C#/ : single-file samples covering motion, homing, gearing, camming, compensators, G-code, gantries, user limits, recorder, etc.
  • examples/Python/ : motion, controller setup, IO, and network status
  • examples/RTTaskFunctions/ : CMake project for building custom real-time task functions

🔹 Windows Installer (MSI)

The MSI is the recommended install path for Windows. It installs to a versioned folder under C:\RSI\, registers an uninstall entry, adds shortcuts to RapidSetup, and bundles the Microsoft Visual C++ 2019 x64 runtime so you do not have to install it separately.

Note
RMP for Windows depends on the INtime real-time operating system from TenAsys. INtime must be installed and licensed before you install RMP. See Install RMP for Windows.

Install

  1. Download RMP_11.0.5.msi from the Downloads page.
  2. Double-click the file to launch the installer.
  3. Step through the wizard. The default install location is C:\RSI\11.0.5. Multiple RMP versions can coexist, each in its own versioned folder.
  4. Click Install to copy the files. Windows may prompt you to allow the installer to make changes. Click Yes.
  5. Click Finish.

A RapidSetup shortcut (named after the installed version) is added to the Start Menu under RSI, and (by default) to the Desktop.

Installed Layout

C:\RSI\<version>\
├── *.exe, *.dll, *.rta, *.rsl tools, libraries, INtime firmware
├── x86\ 32-bit RapidCode library and helpers
├── lib\
│ ├── x64\RapidCode64.lib
│ ├── x86\RapidCode.lib
│ └── rt\RapidCodeRT.lib
├── include\ rsi.h, rsienums.h, rsiconstants.h,
│ cartesianrobot.h, rttask.h
├── protos\ rapidcode.proto, rapidgrpc.proto, rsienums.proto
├── ESI\ vendor EtherCAT slave XML files
├── cmake\ RSI.cmake + INtime\*.cmake
├── examples\ C++, C#, Python sample apps
├── docs\ rapidcode_docs.zip, changelog.md
├── NodeInfo.xml, CustomNodeInfo.xml
└── RapidWorkbench.zip

Uninstall

Use Settings ▸ Apps ▸ Installed apps ▸ RMP ▸ Uninstall, or Control Panel ▸ Programs and Features. The uninstall removes the entire C:\RSI\11.0.5 folder and the shortcuts. Other RMP versions installed alongside it are not affected.

🔹 Windows Archive (ZIP)

The ZIP contains the same files as the MSI but without an installer. Use this when you want a portable copy of RMP, when you cannot run an MSI (for example, on a build server), or when you want to inspect the release contents before installing.

Note
The ZIP does not register an uninstall entry, does not create Start Menu or Desktop shortcuts, and does not install the Visual C++ 2019 redistributable. If you build C++ applications against RapidCode64.dll, you must install the Visual C++ 2019 x64 redistributable yourself.

Install

  1. Download RMP_11.0.5.zip from the Downloads page.
  2. Right-click the file and choose Extract All... (or use any ZIP tool). Extract somewhere stable, for example C:\RSI\11.0.5.
  3. Optionally add the extracted folder to PATH so rsiconfig.exe and rapidserver.exe are available from any command prompt.

Extracted Layout

The folder layout is the same as the MSI install:

RMP_<version>\
├── *.exe, *.dll, *.rta, *.rsl
├── x86\
├── lib\{x64,x86,rt}\
├── include\
├── protos\
├── ESI\
├── cmake\
├── examples\
├── docs\
├── NodeInfo.xml, CustomNodeInfo.xml
└── RapidWorkbench.zip

Uninstall

Delete the folder.

🔹 Debian / Ubuntu Package (DEB)

The .deb is the recommended install path for Debian-family Linux (Debian, Ubuntu, derivatives). It is available for both amd64 and arm64. The arm64 build is built against libc6 (>= 2.31) so it runs on Ubuntu 22.04 and newer.

Install

Pick the tab for your architecture and run the command from the directory where you downloaded the file:

  • amd64 (x86_64)

    sudo apt install ./rmp_11.0.5-1_amd64.deb

  • arm64 (aarch64)

    sudo apt install ./rmp_11.0.5-1_arm64.deb

apt resolves and installs runtime dependencies automatically. Once the install completes:

  • Files are placed under /rsi/, /usr/include/, and the standard Linux locations described below.
  • The rapidserver systemd service is enabled and started.
  • /rsi is added to the system PATH (open a new shell to pick it up).
  • /rsi is added to the dynamic linker's library search path via /etc/ld.so.conf.d/rmp.conf so applications can load librapidcode.so without setting LD_LIBRARY_PATH.
  • Real-time Linux capabilities are applied to rmp, rmpnetwork, and rttaskmanager so they can run real-time and open AF_XDP sockets without root.
  • Two system groups, rsi-dongle and bpf, are created. To use a USB license dongle and (if you use AF_XDP) to run rmpnetwork as a non-root user, add yourself to those groups. See the next two sections. The bpf group is only needed for AF_XDP; the default AF_PACKET interface does not need it. See RSINetworkInterfaceType for the available interface types.

Allow license dongle access

Add your user to the rsi-dongle group so udev grants access to the USB license dongle:

sudo usermod -aG rsi-dongle <your_username>
newgrp rsi-dongle
Note
Adding a user to the rsi-dongle group grants access to all USB smart-card readers and security tokens on the system, not only RSI license dongles. For tighter control, replace /usr/lib/udev/rules.d/70-rsi-dongle.rules with rules that match specific devices (USB vendor ID, product ID, or serial number).

Allow non-root EtherCAT (bpf group)

To run rmpnetwork as a non-root user (required for AF_XDP socket access), add your user to the bpf group:

sudo usermod -aG bpf <your_username>
newgrp bpf

The bpf group is only needed if you use AF_XDP. The default network interface on Linux is AF_PACKET, which does not require it. See RSINetworkInterfaceType for the available interface types.

Dependencies

The .deb declares the following runtime dependencies. apt resolves and installs them automatically.

  • amd64 (x86_64)

    • libc6 (>= 2.34)
    • libcap2 (>= 1:2.10), libcap2-bin
    • libgcc-s1 (>= 4.0)
    • libstdc++6 (>= 12)
    • libssl3 (>= 3.0.0), libfido2-1 (>= 1.9.0), libyubikey0 (>= 1.5) for license dongle support
    • libpcap0.8 (>= 0.9.8), libxdp1 (>= 1.2.0) for EtherCAT networking
    • libusb-1.0-0 (>= 2:1.0.8)

  • arm64 (aarch64)

    • libc6:arm64 (>= 2.31) (built against the Ubuntu 22.04 floor)
    • libcap2 (>= 1:2.10), libcap2-bin
    • libgcc-s1-arm64-cross (>= 4.5)
    • libstdc++6:arm64
    • libssl3 (>= 3.0.0), libfido2-1 (>= 1.9.0), libyubikey0 (>= 1.5) for license dongle support
    • libpcap0.8 (>= 0.9.8), libxdp1 (>= 1.2.0) for EtherCAT networking
    • libusb-1.0-0 (>= 2:1.0.8)

Uninstall

Run one or the other. apt purge additionally removes the rsi-dongle group if no users remain in it. (The bpf group is left in place because it may be shared with other software.)

sudo apt remove rmp # keeps user data in /rsi
sudo apt purge rmp # also removes rsi-dongle group if empty

Installed Layout

/rsi/ main install dir (writable for the working user)
├── rmp, rmpnetwork, rapidserver, firmware + executables
│ rsiconfig, rttaskmanager
├── librapidcode.so.<version> + .so and .so.1 symlinks
├── librttask.so.<version> + .so and .so.1 symlinks
├── libRTTaskFunctions.so
├── liborocos-kdl.so.1.5.1 + .so and .so.1.5 symlinks
├── libz.so.1 bundled to support rsiconfig
├── RapidCode.NET.dll
├── RapidCodePython.py + _RapidCodePython.so
├── NodeInfo.xml + CustomNodeInfo.xml
├── rt-configure.sh NIC tuning helper for real-time use
├── cmake/RSI.cmake
├── ESI/ vendor EtherCAT slave XML
├── protos/ .proto files for gRPC clients
└── examples/ C++, C#, Python, RTTaskFunctions
/usr/include/ public headers
├── rsi.h, rsienums.h, rsiconstants.h, cartesianrobot.h, rttask.h
/lib/systemd/system/rapidserver.service systemd service
/usr/lib/udev/rules.d/70-rsi-dongle.rules USB license dongle access
/usr/lib/tmpfiles.d/rmp.conf /sys/fs/bpf permissions
Note
/rsi is intentionally writable so you can drop license files, edit configurations, modify ESI XML, and build the C++ samples in-place. If you prefer a read-only install, copy the pieces you need elsewhere.

Real-time NIC tuning

For real-time EtherCAT performance you should tune the network card that talks to your slaves. Run:

sudo /rsi/rt-configure.sh

🔹 Rocky Linux / RHEL Package (RPM)

The .rpm is the install path for RHEL-family Linux (Rocky Linux, Red Hat Enterprise Linux). It is shipped for x86_64 only.

Install

Run the command below from the directory where you downloaded the file:

  • x86_64

    sudo dnf install ./rmp-11.0.5-1.el10.x86_64.rpm

dnf resolves and installs runtime dependencies automatically (notably zlib / zlib-ng-compat, libcap, and procps-ng). Once the install completes:

  • Files are placed under /rsi/, /usr/include/, and the standard Linux locations described below.
  • The rapidserver systemd service is enabled and started.
  • /rsi is added to the system PATH (open a new shell to pick it up).
  • Real-time Linux capabilities are applied to rmp, rmpnetwork, and rttaskmanager.
  • Two system groups, rsi-dongle and bpf, are created. To use a USB license dongle and (if you use AF_XDP) to run rmpnetwork as a non-root user, add yourself to those groups. See the next two sections. The bpf group is only needed for AF_XDP; the default AF_PACKET interface does not need it. See RSINetworkInterfaceType for the available interface types.

Allow license dongle access

Add your user to the rsi-dongle group so udev grants access to the USB license dongle:

sudo usermod -aG rsi-dongle <your_username>
newgrp rsi-dongle
Note
Adding a user to the rsi-dongle group grants access to all USB smart-card readers and security tokens on the system, not only RSI license dongles. For tighter control, replace /usr/lib/udev/rules.d/70-rsi-dongle.rules with rules that match specific devices (USB vendor ID, product ID, or serial number).

Allow non-root EtherCAT (bpf group)

To run rmpnetwork as a non-root user (required for AF_XDP socket access), add your user to the bpf group:

sudo usermod -aG bpf <your_username>
newgrp bpf

The bpf group is only needed if you use AF_XDP. The default network interface on Linux is AF_PACKET, which does not require it. See RSINetworkInterfaceType for the available interface types.

Dependencies

The .rpm declares the following runtime dependencies. dnf resolves and installs them automatically.

System:

  • systemd, procps-ng (provides pgrep)
  • libcap, libcap.so.2
  • libz.so.1 (resolves to zlib or zlib-ng-compat depending on distro)

C/C++ runtime (from glibc, libstdc++, libgcc):

  • libc.so.6 (>= GLIBC_2.38), libm.so.6 (>= GLIBC_2.38)
  • libstdc++.so.6 (>= GLIBCXX_3.4.32, CXXABI_1.3.15)
  • libgcc_s.so.1 (>= GCC_4.0.0)
  • ld-linux-x86-64.so.2 (>= GLIBC_2.3)

License dongle support:

  • libcrypto.so.3 (>= OPENSSL_3.0.0)
  • libfido2.so.1
  • libyubikey.so.0 (>= YUBIKEY_1.0)

EtherCAT networking:

  • libpcap.so.1
  • libxdp.so.1 (>= LIBXDP_1.2.0)

USB:

  • libusb-1.0.so.0

Uninstall

sudo dnf remove rmp

Installed Layout

/rsi/ main install dir (writable for the working user)
├── rmp, rmpnetwork, rapidserver, firmware + executables
│ rsiconfig, rttaskmanager
├── librapidcode.so.<version> + .so and .so.1 symlinks
├── librttask.so.<version> + .so and .so.1 symlinks
├── libRTTaskFunctions.so
├── liborocos-kdl.so.1.5.1 + .so and .so.1.5 symlinks
├── RapidCode.NET.dll
├── RapidCodePython.py + _RapidCodePython.so
├── NodeInfo.xml + CustomNodeInfo.xml
├── rt-configure.sh NIC tuning helper for real-time use
├── cmake/RSI.cmake
├── ESI/ vendor EtherCAT slave XML
├── protos/ .proto files for gRPC clients
└── examples/ C++, C#, Python, RTTaskFunctions
/usr/include/ public headers
├── rsi.h, rsienums.h, rsiconstants.h, cartesianrobot.h, rttask.h
/lib/systemd/system/rapidserver.service systemd service
/usr/lib/udev/rules.d/70-rsi-dongle.rules USB license dongle access
/usr/lib/tmpfiles.d/rmp.conf /sys/fs/bpf permissions
/etc/profile.d/rmp.sh adds /rsi to PATH
/etc/ld.so.conf.d/rmp.conf adds /rsi to the library path
/usr/share/doc/rmp/README short package readme

Differences from the Debian package

For users coming from a Debian/Ubuntu install:

  • libz is resolved from the system (zlib / zlib-ng-compat) rather than bundled into /rsi/.
  • The PATH and library-path drop-ins under /etc/profile.d/ and /etc/ld.so.conf.d/ are owned by the package, so an uninstall removes them cleanly.
  • The package is x86_64 only. For ARM systems use the Debian arm64 package on a Debian or Ubuntu host.

Real-time NIC tuning

sudo /rsi/rt-configure.sh