Introduction
FreeRDP is the leading open-source implementation of the Remote Desktop Protocol, originally developed by Microsoft. It enables Linux and macOS users to connect to Windows desktops and servers, and also provides an RDP server component for Linux systems that Windows clients can connect to.
What FreeRDP Does
- Connects to Windows RDP servers with full desktop rendering and input support
- Supports clipboard, audio, drive, printer, and USB device redirection
- Provides dynamic resolution changes that adapt to the client window size
- Implements RemoteFX and AVC/H.264 codecs for high-quality graphics
- Offers an RDP server library (shadow server) for hosting sessions from Linux
Architecture Overview
FreeRDP is a modular C library (libfreerdp) with protocol handling separated from the user interface. The core library manages the RDP connection lifecycle: TLS/NLA authentication, capability negotiation, graphics decoding, and channel multiplexing. Virtual channels handle clipboard, audio, drive, and other redirections. Frontend clients (xfreerdp for X11, wlfreerdp for Wayland, sdl-freerdp for SDL) consume the library API and render the desktop surface.
Self-Hosting & Configuration
- Available in most Linux distribution repositories as freerdp2-x11 or freerdp3
- Build from source with CMake for custom configurations or the latest features
- Use Network Level Authentication (NLA) for secure connections to Windows hosts
- Configure gateway mode to connect through RD Gateway servers for corporate networks
- Set up the shadow server component to share a Linux desktop via RDP
Key Features
- H.264/AVC and RemoteFX Progressive codec support for bandwidth-efficient graphics
- Smart card authentication and NLA with Kerberos for enterprise environments
- Multi-monitor support with independent resolution per display
- Wayland-native client for modern Linux desktop sessions
- Embeddable as a library in applications like Remmina, GNOME Connections, and Apache Guacamole
Comparison with Similar Tools
- rdesktop — older RDP client with limited protocol support; FreeRDP implements RDP 8+ with modern codecs
- xrdp — RDP server for Linux that uses FreeRDP's libraries internally for session brokering
- Apache Guacamole — browser-based gateway that wraps FreeRDP as its RDP backend
- Remmina — multi-protocol GUI client that uses FreeRDP as its RDP engine
FAQ
Q: Does FreeRDP work with Windows 11? A: Yes. FreeRDP supports the latest RDP protocol versions and NLA authentication required by current Windows releases.
Q: Can I redirect USB devices? A: Yes. Use the /usb:auto flag or specify device IDs to redirect USB peripherals through the RDP session.
Q: Is RemoteFX supported? A: FreeRDP supports RemoteFX Progressive codec for improved graphics performance, which is the modern replacement for the original RemoteFX.
Q: How do I connect through an RD Gateway? A: Use the /g:gateway-host /gu:user /gp:password flags to route the connection through a corporate Remote Desktop Gateway.