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, tested on Ubuntu 24.04, RHEL 9, Fedora
- KDE Plasma (6.x) - Implementation complete, testing in progress
- Sway - Implementation complete with xdg-desktop-portal-wlr
- Hyprland - Implementation complete with xdg-desktop-portal-hyprland
- wlroots-based (River, Wayfire) - Dual strategy support
- COSMIC - In development, capabilities improving rapidly
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?
To run: flatpak run 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?
Native packages require Rust 1.77+. Ubuntu 24.04 ships Rust 1.75. Debian 12 ships Rust 1.63.
Solution: Use Flatpak
Flatpak works perfectly on Ubuntu 24.04 and Debian 12. It includes all dependencies and provides the same functionality.
Native packages are available for: Fedora 40+, RHEL 9, openSUSE, Debian 13
Licensing
Is Lamco RDP Server free?
Yes, for:
- ✓ Personal and home use
- ✓ Non-profit organizations
- ✓ Small businesses (≤3 employees OR <$1M annual revenue)
- ✓ Educational and research use
- ✓ Evaluation and testing
Commercial use by larger organizations (>3 employees OR >$1M revenue) requires a license starting at $4.99/month.
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 subscriptions to perpetual licenses.
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, as of v1.2.0. Desktop audio streams to the RDP client using the RDPSND channel with support for OPUS, PCM, ADPCM, and G.711 codecs.
What audio codecs are supported?
| Codec | Quality | Bandwidth | Best For |
|---|---|---|---|
| OPUS | Excellent | ~96 kbps | Modern clients (recommended) |
| PCM | Lossless | ~1.5 Mbps | Quality-critical work |
| ADPCM | Good | ~352 kbps | Legacy Windows clients |
| G.711 | Telephony | 64 kbps | Maximum compatibility |
How do I configure audio?
In config.toml:
enabled = true
codec = "opus" # opus, pcm, adpcm, g711-ulaw, g711-alaw
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 plain text, rich text (RTF), HTML, and images (PNG, BMP).
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 -
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
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.2+ encryption is enabled by default for all connections. 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?
Network Level Authentication (NLA) support is planned for a future release. Currently, authentication occurs after the RDP connection is established.
Still Need Help?
Can't find the answer you're looking for?