NetLock RMMNetLock RMM Docs
III — How-To Guides

Remote-control a device via relay

Open a graphical remote session through the Relay App, with H.264 preferred and JPEG fallback.

Remote-control a device via relay

NetLock RMM does not use VNC or RDP for remote control. Instead it streams the target device's screen over its own protocol with H.264 as the default encoding and JPEG polling as a fallback. This guide shows how to open a relay-mediated remote-control session from the device detail view.

Remote Control window with the Relay connection mode selected

Before you start

  • The target device is online in the Devices list.
  • Required permission: devices_enabled plus the role flag that gates remote control in your deployment (typically exposed alongside the Remote Control action on the device detail view).

Install the Relay App (operator machine)

The Relay App runs on the operator's machine — the technician who opens the session — not on the target device. Download it from https://netlockrmm.com/downloads, pick your OS and architecture, and unzip it. Then install the FFmpeg runtime it uses to decode the device's H.264 screen stream locally.

FFmpeg runtime prerequisite

The Relay App decodes H.264 through FFmpeg's avcodec, avutil, and swscale libraries via P/Invoke. FFmpeg is not bundled in the download, so the runtime libraries must be present on the operator's machine. The app locates the platform's version-suffixed FFmpeg libraries automatically, so no renaming or symlinking is required — just install FFmpeg for your OS.

Linux

Install FFmpeg. On Debian and Ubuntu:

sudo apt install ffmpeg

On non-Debian distributions, install the distribution's FFmpeg package. Fedora needs the RPM Fusion repository; openSUSE provides FFmpeg through Packman. Treat apt as the authoritative example and the others as equivalents.

macOS

Install Homebrew if it is not already present, then:

brew install ffmpeg

This works on both Intel and Apple Silicon Macs — the app probes Homebrew's library directories (/opt/homebrew/lib and /usr/local/lib) automatically.

Windows

Install an FFmpeg shared build (the codec libraries ship as DLLs, not statically linked):

winget install Gyan.FFmpeg.Shared

Alternatively, download a *-shared zip from gyan.dev or BtbN and add its bin\ folder to your PATH (or copy the DLLs next to NetLock_RMM_Relay_App.exe). The app loads the version-suffixed DLLs (avcodec-*.dll, avutil-*.dll, swscale-*.dll) directly, so no renaming is needed.

Note: Windows on ARM64 has no readily available FFmpeg shared build. Without it, the relay falls back to slower JPEG polling instead of hardware-accelerated H.264 decoding.

Verify the download

Compute the SHA-512 hash of the zip and compare it to the checksum shown on the download page:

OSCommand
Linuxsha512sum <zip>
macOSshasum -a 512 <zip>
WindowsCertUtil -hashfile <zip> SHA512

With the Relay App unzipped and FFmpeg in place, continue with the Steps below. For default behaviour, authentication, and deployment-wide settings, see Appendix A.7 — Remote screen control.

Steps

  1. Open Devices from the navigation and find the target device.
  2. Select the device to open its detail view.
  3. Click Remote Control to open the Remote Control window.
  4. In the connection-mode dropdown, pick Relay (Recommended - faster). This is the default for any device whose Relay App is online.
  5. Start the session. The window negotiates with the Relay App and connects to the target's screen.

The relay path prefers H.264, which is hardware-accelerated on the device's GPU where available with a software encoder fallback. If the relay's single H.264 slot is already occupied by another session, the path auto-falls-back to JPEG polling for this session. If the Relay Connection cannot be reached at all, the Console falls back further to SignalR (Legacy - fallback) — always JPEG-polled and slower, but it still works for emergencies.

Note: There is no VNC, RDP, or third-party remote-desktop protocol in the stack. The stream is NetLock RMM's own protocol end to end.

Verify it worked

  • The Remote Control window shows the device's desktop and responds to mouse and keyboard input.
  • The session appears in Relay Server (at /relay_server) as an Active row for the target device and the remote-control port, with Connections greater than zero for the duration of the session.
  • When you close the window, the relay row transitions through Disconnecting and returns to Ready to connect (if persistent) or disappears (if temporary).

Troubleshooting

  • Session connects but video is slow / blocky. The relay's H.264 slot may already be taken, forcing this session to JPEG polling. Close the other relay-mediated remote-control session on the same relay, or accept the reduced framerate.
  • Relay session shows Device offline in the Relay Server list. The Relay App is not currently registered. Check the Relay App service on the device network and its API key.
  • Input reaches the device but the screen is black. Some idle devices skip frame generation. Move the mouse, wake the display locally, or check whether the session is restricted to a specific monitor.