Frequently Asked Questions
Common questions about Lamco RDP Server
Jump to section:
General
What is Lamco RDP Server?
Lamco RDP Server is a Wayland-native remote desktop server that implements the Microsoft Remote Desktop Protocol (RDP). It enables remote access to your existing Linux desktop session from any standard RDP client including Windows Remote Desktop Connection, macOS Microsoft Remote Desktop, and FreeRDP. Written entirely in Rust for safety and performance.
Which desktop environments are supported?
Lamco RDP Server works with any Wayland compositor that supports XDG Desktop Portals:
- GNOME 40/42/46 - Production ready (Ubuntu 24.04, RHEL 9, Fedora 40+)
- KDE Plasma 6.3+ - Production ready. Clipboard via Klipper workaround (Bug 515465 fixed in Plasma 6.6+)
- Sway/River/Hyprland (native) - Production ready with wlr-direct protocols, AVC444
- Sway/River/Hyprland (Flatpak) - Video-only. Input blocked pending portal-wlr PR #325
- Budgie 10.10 + labwc - Expected (wlr-direct ready)
- Niri - Expected, needs testing (uses GNOME portal backend)
- COSMIC - Video-only. ScreenCast works for video capture, but RemoteDesktop not yet implemented. Blocked on Smithay PR #1388
Does it work with X11?
No. Lamco RDP Server is designed exclusively for Wayland. It uses XDG Desktop Portals and PipeWire, which are Wayland-specific technologies. For X11 sessions, consider using xrdp or x11vnc instead.
Check your session type:
echo $XDG_SESSION_TYPE
Output should be: wayland
What RDP clients can connect?
Any standard RDP client works:
Can lamco-rdp-server run on a headless server?
Lamco RDP Server requires a desktop environment (GNOME, KDE, or wlroots compositor) to be running. It shares your existing desktop session.
If you have a server with GNOME/KDE installed (even in a headless VM), it will work — you just need a user session running (can use auto-login or VNC for initial setup).
For true headless operation without desktop environment: We're developing lamco-VDI, a separate product with embedded Smithay compositor for headless multi-user VDI (estimated 6-9 months to alpha).
Can multiple users connect simultaneously?
No. Lamco RDP Server shares a single user's desktop session. When one user connects via RDP, they see and control that user's desktop. Multiple clients connecting simultaneously would all see the same desktop and share control.
For multi-user concurrent sessions where each user gets their own isolated Linux desktop, use lamco-VDI (in development), which supports 10-50+ concurrent users per server with per-user resource isolation.
Installation
How do I install from Flathub?
flatpak run io.lamco.rdp-server
App ID: io.lamco.rdp-server
What are the system requirements?
Minimum
- • Wayland compositor with XDG Portal support
- • PipeWire for screen capture
- • Desktop environment must be running
- • 2GB RAM
- • x86_64 processor
Recommended
- • Hardware H.264 encoder (Intel QuickSync, AMD VCE, NVIDIA NVENC)
- • 4GB+ RAM
- • Modern multi-core processor (4+ cores)
- • Gigabit Ethernet or better
How do I verify PipeWire is running?
If PipeWire is not running, start it with:
Why can't I install native package on Ubuntu 24.04?
Ubuntu 24.04 ships older Rust than the 1.88 MSRV required. Debian 12 ships Rust 1.63.
Solution: Use the Community Edition (Flatpak)
The Community Edition (Flatpak) works perfectly on Ubuntu 24.04 and Debian 12. It includes all dependencies and is free to use.
Native packages are available for: Fedora 40+, RHEL 9, openSUSE, Debian 13
Licensing
Is Lamco RDP Server free?
The Community Edition (Flatpak and Snap) is completely free to use under the BUSL-1.1 Additional Use Grant — including commercial use. For native installations, a single server instance is free.
Free for:
- ✓ Community Edition (Flatpak, Snap) — all use, unlimited servers
- ✓ Single server instance (any distribution)
- ✓ Non-profit organizations
- ✓ Educational and research use
- ✓ Evaluation and testing
Multi-server native deployments require a commercial license starting at $4.99/month.
What is the Community Edition?
The Community Edition is the Flatpak and Snap distribution of Lamco RDP Server. It runs fully sandboxed using XDG Desktop Portals and is free to use under the BUSL-1.1 license — including for commercial purposes.
Why is clipboard limited in the Community Edition?
The Community Edition embraces the Flatpak/Snap sandbox philosophy and uses only standard XDG Desktop Portal APIs. The Portal clipboard API provides Windows-to-Linux clipboard transfer, but the Portal specification does not provide a mechanism for Linux-to-Windows clipboard change notifications within the sandbox boundary. This is a Portal spec limitation, not a bug. For full bidirectional clipboard, use a native installation.
Can I use the Community Edition commercially?
Yes. The Community Edition is designated as free to use under the BUSL-1.1 Additional Use Grant. The only restriction is the Competitive Use clause — you cannot use it to build a competing RDP server product.
What happens after December 31, 2028?
The software automatically converts to Apache License 2.0, making it fully open source with no restrictions. All commercial licenses become unnecessary, and anyone can use, modify, and distribute the software freely.
How do I purchase a commercial license?
Contact us at office@lamco.io with your organization details and licensing requirements. We offer flexible licensing tiers from monthly to annual subscriptions.
Configuration
Where is the configuration file?
Native installation:
~/.config/lamco-rdp-server/config.toml
Flatpak installation:
~/.var/app/io.lamco.rdp-server/config/lamco-rdp-server/config.toml
How do I change the port?
Edit config.toml:
port = 3389 # Change to desired port
Or use the GUI: Server tab → Port field
How do I enable TLS?
TLS is enabled by default. A self-signed certificate is automatically generated on first run.
To use custom certificates:
tls_cert = "/path/to/certificate.pem"
tls_key = "/path/to/private-key.pem"
Or use the GUI: Security tab → Certificate Management
How do I generate a self-signed certificate?
-days 365 -nodes -subj "/CN=rdp-server"
Note: Self-signed certificates will show security warnings in RDP clients. For production, use certificates from a trusted CA (Let's Encrypt, etc.).
Video & Graphics
What video codecs are supported?
AVC420 (H.264 4:2:0)
- • Best compatibility
- • Lower bandwidth
- • Good for general use
AVC444 (H.264 4:4:4)
- • Crystal-clear text
- • Higher bandwidth
- • Perfect for coding/design
Platform note: AVC444 is automatically enabled on Ubuntu 24.04, Fedora 40+. Disabled on RHEL 9 (Mesa 22.x quirk).
How do I improve video quality?
In config.toml:
codec = "avc444"
quality = 90
max_fps = 60
Or use the GUI: Video tab → Quality slider (1-100)
Trade-off: Higher quality = more bandwidth. Start with 80 and adjust.
Why is the screen black?
Common causes:
- Portal permission not granted - Click "Share" when the permission dialog appears
- Screen is locked - Unlock the screen first
- Compositor not supported - Verify XDG Portal support on your compositor
Check Portal support:
ls /usr/share/xdg-desktop-portal/portals/
How do I enable hardware encoding?
Hardware encoding is automatically detected and used when available.
Important: Hardware acceleration (NVENC/VA-API) requires native package installation. Flatpak uses software encoding due to sandbox restrictions.
To force software encoding:
encoder = "software"
Audio
Is audio streaming supported?
Yes, since v1.2.0. Desktop audio streams to the RDP client using the RDPSND channel with auto-negotiation of client capabilities. Supported codecs: OPUS, PCM, and ADPCM (MS-ADPCM, IMA-ADPCM).
What audio codecs are supported?
| Codec | Quality | Bandwidth | Best For |
|---|---|---|---|
| OPUS | Excellent | ~64 kbps (configurable) | Modern clients (recommended) |
| PCM | Lossless | ~1.5 Mbps | Highest quality |
| ADPCM | Good | ~352 kbps | Legacy compatibility (MS-ADPCM, IMA-ADPCM) |
How do I configure audio?
In config.toml:
enabled = true
codec = "opus" # opus, pcm, adpcm
sample_rate = 48000
channels = 2
Or use the GUI: Audio tab
Why is there no audio?
Common causes:
-
PipeWire not running
systemctl --user start pipewire -
Audio disabled in config
audio.enabled = true -
Client doesn't support codec
Try PCM for universal compatibility -
Portal didn't grant audio permission
Restart session and click "Allow" for both screen and audio
How do I reduce audio latency?
buffer_ms = 20 # Lower = less latency, may cause stuttering
Trade-off: Lower buffer = lower latency but more susceptible to network jitter. Start with 50ms and reduce if network is stable.
Target latency: <100ms total (capture + encoding + network + client)
Clipboard
How does clipboard work?
Bidirectional clipboard synchronization is automatic. Copy on either side and paste on the other. Supports text, HTML, RTF, images (PNG, JPEG, BMP, GIF), and file transfer with 15+ format conversions.
MS-RDPECLIP compliant with lock/unlock and file contents request/response. Includes loop detection, rate limiting, and size limits.
Integration strategies: Portal Clipboard, Klipper D-Bus cooperation (KDE workaround for Bug 515465, fixed in Plasma 6.6+), WaylandDataControlMode (wl-clipboard for wlroots compositors).
Why isn't clipboard working?
Common causes:
-
Portal version too old - Requires xdg-desktop-portal 1.14+ with RemoteDesktop v2
Check:pkg-config --modversion xdg-desktop-portal
On KDE, clipboard works via Klipper D-Bus cooperation mode as a workaround for Portal Bug 515465. Fixed in Plasma 6.6+. -
RHEL 9 / AlmaLinux 9 / Rocky 9 - Portal v4 (RemoteDesktop v1) lacks clipboard interface
Workaround: Upgrade to RHEL 10 or wait for alternative implementation -
Disabled in config
clipboard.enabled = true
v1.4.2 Features
What is view-only mode?
View-only mode uses ScreenCast-only (no RemoteDesktop session), letting you monitor a display without sending input. This reduces permission requirements and enables use cases where viewing is needed but control is not. Enable with --view-only flag or GUI toggle.
What is session health monitoring?
v1.4.2 monitors PipeWire stream state, Portal session validity, and EIS input streams in real time. Health changes are emitted as D-Bus signals on io.lamco.rdp_server.Health for external tools and system tray indicators. States: Healthy, Degraded (with specific reason), Failed.
What clipboard methods are available?
Three backends: Portal Clipboard (Flatpak/universal), KlipperCooperationMode (KDE), and WaylandDataControlMode (wlroots native via wl-clipboard). The server selects automatically based on your compositor and deployment method.
Troubleshooting
How do I enable debug logging?
Environment variable:
Or in config.toml:
level = "debug"
How do I check system capabilities?
# JSON output for scripting
lamco-rdp-server --capabilities --json
This shows all detected services, codecs, and platform capabilities.
Connection refused error?
-
Verify server is running:
systemctl --user status lamco-rdp-server -
Check port:
ss -tlnp | grep 3389 -
Check firewall:
sudo firewall-cmd --add-port=3389/tcp
Poor performance / lag / stuttering?
Solutions:
-
Check hardware encoding:
lamco-rdp-server --capabilities | grep -i encoder - Reduce quality: Video tab → Quality slider to 60-70
- Lower FPS: 30 FPS uses half the bandwidth of 60 FPS
- Use AVC420: Lower bandwidth than AVC444
How do I report a bug?
File an issue at: GitHub Issues
Include:
- • Version:
lamco-rdp-server --version - • Distribution and desktop environment
- • Capabilities output:
lamco-rdp-server --capabilities - • Debug logs:
RUST_LOG=debug lamco-rdp-server 2>&1 | head -200 - • Steps to reproduce
Security
Is the connection encrypted?
Yes. TLS 1.3 encryption is enabled by default for all connections. TLS 1.2 fallback is available but not recommended. All video, audio, clipboard, and input data is encrypted.
Can I restrict access by IP?
allowed_ips = ["192.168.1.0/24", "10.0.0.0/8"]
Empty list allows all IPs. Add CIDR ranges to restrict access.
How do I set up authentication?
Currently supports system authentication via PAM:
auth_method = "pam" # or "none" for no authentication
Warning: auth_method = "none" should only be used on trusted networks.
Is NLA supported?
Yes. Network Level Authentication (NLA) is implemented and available. Enable it in your configuration:
enable_nla = true
auth_method = "pam"
Packaging & Installation
How do I install on Fedora?
Enable RPM Fusion nonfree and install via dnf:
Requires RPM Fusion nonfree repository to be enabled on your system.
How do I install on Arch Linux?
Install from AUR using your preferred AUR helper:
Is there a .deb package?
A Debian package has been submitted to mentors.debian.net for the nonfree component. Once sponsored, it will be available via apt on Debian Trixie and derivatives.
In the meantime, download the .deb directly from the download page.
Can I run this on RHEL 9?
Video works on RHEL 9 with GNOME 40. Clipboard and some input features require RemoteDesktop Portal v2 (GNOME 45+), which is not available on RHEL 9.
Full functionality is available on Fedora 43+ and other current distributions.
Still Need Help?
Can't find the answer you're looking for?