FreeRDP 2.0 – A Remote Desktop Protocol implementation
freerdp.com
freerdp.com
The RDP server is one thing I miss from Windows though. On Linux I haven't found anything nearly as good. It's really surprising to me too - given that a good visual remoting tool allows for such ease in cross platform living.
I suppose there are a lot of reasons for this, but primarily I guess that most Unix natives would consider SSH to be good enough.
1) X11 is already a network aware display system, so it wouldn't take too much work to run remote.
2) SSH has built-in X11 forwarding with `ssh -X <host>`, when you run commands they will be rendered locally. On OSX this needs an X11 server (XQuartz) to work properly.
3) There are "better" remote desktop solutions like "parsec"[0] which run on Windows and Linux. They offer much lower latency and higher bit-depth. They're designed for games. (obviously this comes at the price of bandwidth).
I have never heard of Parsec before but it's not immediately obvious that it's an alternative to RDP (Desktop usage)
However, as far as the actual implementation goes, RDP is closer to X11 than VNC. VNC is basically a remote frame buffer, akin to streaming video. This makes it very cross platform friendly, but also IMO feels very slow, even on a local network. RDP is closer to X11 in that it sends display directives (AFAIK, please correct me if I'm wrong) so that it can draw them on the client as they would be drawn on the server. Think sending a "draw button" command rather than sending an image of pixels that are how the button would be rendered. This, combined with compression, helps make RDP feel very fast compared to VNC, and can be used very well even over the internet, unlike X11. I connect to RDP servers in Azure all the time and sometimes forget I'm not working locally, while with VNC you're always aware that it's not as performant.
I really wish there was something like RDP as a server for Linux. (OP seems to be a client AFAICT?) Given Microsoft's recent investment in Linux, maybe this will happen soon?
Good toolkits like WPF and UWP implement their own drawing by utilizing Direct3D. These two are using DX 9.0c and D3D 11.0 respectively, and both are supported in RDP protocol.
If you connect to a remote PC and run dxdiag.exe there, you’ll see 3D acceleration is supported, you’ll also see the GPU driver got replaced with completely different one, it’s no longer Intel, Nvidia or AMD, but the one from MS.
This has interesting consequences, e.g. all D3D APIs which move data from system RAM or VRAM or back now become network calls, the system RAM is on the server, VRAM is on the client.
P.S. Modern web browsers use Direct2D and DirectWrite to render stuff on Windows, there’s D3D 11 underneath, i.e. RDP remote rendering is fully supported for browsers and Electron apps.
RDP has capability[1] to send draw commands directly.
From memory it has had this since the early days. At least I used RDP against NT4 servers over a single ISDN link and it was very smooth. I can't believe it could have done that by streaming bitmaps ala VNC.
[1]: https://docs.microsoft.com/en-us/openspecs/windows_protocols...
Found an RDesktop implementation from 2001[1] which implements the draw commands. So yeah, old stuff.
In contrast, RDP and VNC type protocols are screen-replicating designs more suited to higher latency connections.
Finally, if you're using RDP, I'd suggest Remmina as an client. It's fantastic.
With ssh and X forwarding, my local gnome constantly threw up modal dialogs that the forwarded window was unresponsive, forcing me to keep clicking "Wait" to dismiss the modal, then quickly interact with the forwarded window before the next "unresponsive" modal popped up.
X11, the protocol, is actually mostly asynchronous, it's the libraries and the applications that were built around it in synchronous ways. If you run older applications (like 90s to early 2000s) over X11, it's a lot less bad than modern apps.
Something like this: curl --url 'smtps://smtp.gmail.com:465' --ssl-reqd --mail-from 'xyz remote IP' --mail-rcpt 'myaccount@gmail.com' --upload-file mail.txt --user 'myaccount@gmail.com:pwd'
Where rather than the mail.txt file I can send the public IP of the remote machine, such as the output of "curl ipinfo.io/ip". Unfortunately I couldn't find how to do that. Backquotes also don't work, it wants a file.
The purpose would be to build a "pre-command" one liner that sends me an email with the remote IP as payload every time the remote user accepts an external connection through remmina. The remote users are old relatives with no knowledge about computers, so the simpler (one click) the better.
Have you tried process substitution?
<(curl -s ipinfo.io/ip)
https://en.wikipedia.org/wiki/Process_substitutionConnect to an existing session and just "continue where you were" is not easy though there might be unmaintained solutions.
If you use ssh forwarding and for some reason gets disconnected, the application dies.
I'd love for you to tell me I'm wrong :-)
The way rdp works on windows is the only thing where I think windows is superior.
Vnc, TeamViewer and similar are not remotely close and they will leave your remote screen open for anyone to see.
There's the occasional random disconnection to right-click rarely leading to disconnection to a case where xfreerdp asks for a password in the terminal but I don't see it in krdc.
I will be giving remmina a shot to see if it improves things, though I'd have rather used a Qt-based client as to match KDE better.
If you are ever using a wlroots based Wayland compositor, then wayvnc becomes an option for RDP. (Note: haven’t personally used this.)
https://github.com/any1/wayvnc
Waypipe offers network transparency to Wayland, where by you can run applications across the network. I believe this should work with roughly any compositor.
That's surprising. I tried X2Go a couple of times on multiple machines (always logging in from Windows to Unbuntu 18.04 if that matters, on a local network) and it was horrible. At least a crash a day, couldn't get numeric keypad keys to work, slow. Not sure if I did anything wrong or just had bad luck.. And those are just the basic features. To get on par with RDP it should also do multiple screens properly (i.e. not one big screen, it's not 2000 anymore), drive/audio/... sharing and so on. But I never got to trying that, went back to VNC. Which also has problems but at least it allows me to do work.
Unfortunately the OP is about right (in my experience, for the things I do): if the connection allows it remote desktop should really be like you're sitting in front of the physical machine. RDP does that for me, on the same level SSH/Mosh does that for terminal stuff. I'm not sure what is so hard to get right to also get something equivalent on Linux, so maybe it's really the lack of interest?
Same experience. None of the Linux alternatives are on the same planet as RDP.
> I'm not sure what is so hard to get right to also get something equivalent on Linux, so maybe it's really the lack of interest?
As far as I can see it's lack of interest made worse by the usual fragmentation of effort.
Which makes me sad. I really enjoy KDE Neon on my secondary PC, but the lack of a viable remote desktop solution means it'll stay there.
Well, I guess it depends on the use case etc. but I find seamless windows to be the holy grail for most of my work. And the ability to resume an entire session is great!
Didn't have that many crashes, maybe once a month or something, still a bit frustrating but not enough to scare me away. But yeah, maybe I was lucky, didn't get the most reliable impression of it but it did still do wonders for me.
VNC works, but is so painfully antiquated in comparison to RDP. It guzzles way too much bandwidth even if all you have is a blinking cursor on screen. I really wish there was a solid RDP server for Ubuntu. I'm quite surprised at the state of things on this front.
If you get the black screen I think that means somebody is logged into the console (the hardware X session). That's the big caveat (I used to use x11vnc, which let you vnc into the system's hardware X session then disconnect, and use the console directly).
https://console.cloud.google.com/marketplace/details/techlat...
https://aws.amazon.com/marketplace/pp/B084L3S2FF?qid=1583409...
https://azuremarketplace.microsoft.com/en-us/marketplace/app...
It was able to play full screen youtube on a RPi 3 over local wifi. :-)
But I just use it for personal remote desktop, I have a cloud instance and I remote to it for my dev work, while my laptop runs windows. I find it's better than say trying to use WSL.
I've had about enough of the compromises I've had to make to make my remote VNC sessions work and mostly have opted to run virtual instances of Linux on my local desktop then SSHFD mount a drive remotely but this is such a pain or can be especially in some applications some research applications which can vary results depending on operating system version and kernel libraries.
I never experienced these issues with Windows remote desktop and this is very frustrating as a Linux user.
The actual performance of NX was good, so I'll give them that. I think other people having licencing concerns, but I'm fine with it.
Have you tried xpra[1]? I haven't tried forwarding the entire desktop, but I have done multiple individual applications with sharing enabled. There are some issues with different resolutions between the host and guest machine, but it works relatively well.
Xrdp on the server side works pretty well for us once you get it set up correctly.
I tried them all, and this one is awesome! It is actually better then Windows RDP. Fast, reliable, secure, and can handle all resolutions and allow you to dynamically resize the screen share. Seriously! Free to use for small user groups and home users for free, with a maximum of 5 concurrent users.
Thank me later ;)
This seemed to be the best setup with high latency and low bandwidth situations. We had people spanning the furthest time zone.
We did have issues periodically. Mostly because the workstations were mostly not interactive, but if someone would plugin or unplug a monitor X would change configuration on the next reboot. Or when we had multiple GPUs we'd tweak things. I wish I kept better notes.
If you don't care about X11 security at all (e.g. LAN, but be careful!) you can set $DISPLAY in the ssh session without -X option. I found it unencrypted X11 is a way faster than ssh -X forwarding.
I was hoping Wayland would take remote desktop seriously when I heard about the effort, but sadly that was not to be.
[1]: http://www.microsoft.com/openspecifications/
[2]: https://github.com/FreeRDP/FreeRDP/wiki/Reference-Documentat...
http://www.freerdp.com/2019/02/20/hi-thincast-workstation
I know it's still in beta, but it was originally released two years ago and I'm still not able to boot ubuntu's mini.iso installation media in this graphics-optimized version of VirtualBox.
If anyone has been able to test Thincast workstation performance, can they compare it to a Hyper-V linux virtual machine connected to X410 through VSOCK:
https://x410.dev/cookbook/hyperv/using-x410-with-hyper-v-lin...
Now I am somewhat curious but frankly from a practical standpoint I have very little motivation to stop doing what I am doing just to check this new one. It will disrupt my routine for the sake of completely unknown outcome which in the best case will let me have what I already have now. And in the worst case - the opposite of sky is the limit.
This is not to discourage developers but just to show what missed opportunity might cost should there be more people like myself.
The performance is a lot better than VNC.
In theory I could setup VirtualGL and TigerVNC, but it seems like a lot of work, and time I just don't have.
Other clients could do well to see how easy NoMachine makes things.
I would be far more interested by a GPU accelerated server, with a focus on low latency, like parsec: something more or less equivalent, with native support for wayland or xorg would be much more interesting.
This would superset the uses of RDP: you can use parsec for remote desktops, just like you can with RDP except it's smoother and more responsive.
But you can also use games with parsec, something you can't do with RDP, and everything else that requires low latency.
What did make a _noticeable_ difference was to download the FreeRDP sources and compile everything statically. That blew Remmina out of the water. I did not do the same for Remmina though, so the comparison is not fair.
http://www.freerdp.com/2019/02/20/hi-thincast-workstation
I know it's still in beta, but it was originally released two years ago and I'm still not able to boot ubuntu's mini.iso installation media in this graphics-optimized version of VirtualBox.
Interested also if anyone who has been able to get Thincast workstation to boot linux can compare it to a Hyper-V linux virtual machine connected to X410 through VSOCK:
https://x410.dev/cookbook/hyperv/using-x410-with-hyper-v-lin....
VSOCK could improve RDP latency since it should be faster than a localhost network socket.