50

I need to remotely access and use my work computer a few times a week. I'm currently using UltraVNC. I want to use VNC because of the price. I've used VNC before, mostly on my own network, where it's fast.

However, VNC over the internet is incredibly slow. Even at 256 colors and lower, with Aero turned off, it is unbearably slow. I recently used Ammyy Admin to connect to do something requiring a quick reaction time. Ammyy was really fast, with almost no lag, and it was running in full color with Aero on!

How can I make VNC faster, like Ammyy is? I'd use Ammyy, but I would probably run into the 15hr/month limit pretty quickly. Any suggestions?

Giacomo1968
  • 58,727
NickAldwin
  • 1,567

11 Answers11

33

VNC has some limitations inherent in the protocol it uses. RFB, remote framebuffer, works by transmitting rectangles of pixels over a network. The higher the resolution and bit depth the more bandwidth required to send updates. There are a few optimizations VNC servers/clients already do:

  1. Only send changed regions, caching unchanged regions on the client.
  2. Copying cached regions on the client when changes do occur.
  3. Various forms of lossless and lossy compression

You can fiddle with the settings on both the client and server to see which settings work best for your internet connection. Any client can connect to any server because they negotiate to determine which protocol features both support but its best to use a client and server from the same company if you want to use more advanced protocol features.

RDP and X protocols transmit drawing instructions instead of patches of pixels. This is why under some conditions they are superior to VNC.

Other proprietary remote access services may use similar techniques but are undocumented. Remote access services do have the benefit of being able to punch through firewalls easier than direct remote access, they are usually easier to configure and have better support for encryption.

I've used VNC, Remote Desktop, LogMeIn Free, PCAnywhere and remote X. Each has its merits:

  • VNC actually performs better than the other protocols over extremely limited bitrates. (Think dialup connection) And it works on virtually any platform.
  • Remote Desktop works well over LANs and integrates seamlessly with ActiveDirectory.
  • LogMeIn is great for accessing Windows PC over the internet and also supports ActiveDirectory integration. It has ActiveX, Java, Firefox extensions and even an HTML based client. The free version allows you to manage up to 5 PCs. Paid versions increase this number, add file transfer and advance management features.
  • PCAnywhere is similar to VNC and Remote Desktop. It supports various levels of encryption, file transfers and remote configuration. Things you'd have to piece together with VNC and Remote Desktop.
  • X is the Unix world's equivalent of Remote Desktop. To be fair, it's been around a lot longer than any of the other protocols. It works great over a LAN but is too chatty over the internet. Several projects have attempted to improve this with varying levels of success. NoMachine NX, mentioned already, is one such project.

All of the remote access protocols I've mentioned are freely available (either with an OS or as a download) except PcAnywhere, which is sold by Symantec.

Personally I would try each of them and select the one that best suites your needs.

19

You can try NoMachine NX. A friend of mine used it with some success in increasing the speed of VNC.

As for me I am using RDP and I think it's definitely the way to go for Windows systems. Others had good results with TeamViewer or Remote Administrator.

Joey
  • 41,098
12

Try to use this:

-snapfb

Instead of polling the X display framebuffer (fb) for changes, periodically copy all of X display fb into main memory and examine that copy for changes. Under some circumstances this will improve interactive response, or at least make things look smoother, but in others (most!) it will make the response worse. If the video h/w fb is such that reading small tiles is very slow this mode could help. To keep the "framerate" up the screen size x bpp cannot be too large. Note that this mode is very wasteful of memory I/O resources (it makes full screen copies even if nothing changes). It may be of use in video capture-like applications, or where window tearing is a problem.

This solved the problem for me.

Denis
  • 121
2

You can run TeamViewer as "only local" if you do that you connect to a machine based on their IP address. This is a huge speed improvement over VNC.

Eric
  • 21
1

Have you looked into UltraVNC? They have a mirror video driver built into their system that helps speed up some of the refresh and notification issues. I think it could help in your case, and it is still free.

Dillie-O
  • 1,366
1

When using the Xvnc server, I find setting the -FrameRate option to about 5 is reasonable for connections over the Internet. Lower framerate delivers a more efficient data transfer, at the penalty of a clunky feel. If your framerate is set higher than the network can reliably deliver, then you end up lagged badly watching the screen catch up a little at a time ... ultimately resulting in intense end-user aggression.

Test it by opening a web browser and using the mouse scroll wheel to move up and down, see how the screen responds. Clunky feel, or lagged horribly ... that's the trade off here. Unfortunately, not all VNC servers even have this option. Some do have it but without documentation on the man page, and the exact location of configuration files can be arbitrary and mysterious.

https://man.archlinux.org/man/x0vncserver.1#FrameRate

This sometimes works:

echo "FrameRate=5" >> ~/.vnc/config
Tel
  • 11
  • 1
-1

I had terrible UX using VNC on local network, however when I tried to log in by:

ssh -X -C 

and using

xtightvncviewer :$THEDISPLAY

performance is much more better, comparing to any other combinations...

VNC server default format:
      16 bits per pixel.
      Least significant byte first in each pixel.
      True colour: max red 31 green 63 blue 31, shift red 11 green 5 blue 0
    Using default colormap which is TrueColor.  Pixel format:
      32 bits per pixel.
      Least significant byte first in each pixel.
      True colour: max red 255 green 255 blue 255, shift red 16 green 8 blue 0
    Same machine: preferring raw encoding
-1

Try KasmVNC. It's an open source VNC server with a web-based client, which provides better compression by using WebP images.

niutech
  • 1,126
-1

Tested them all recently and Ammy Admin is the best in the list in general purposes. Temviewer works also perfectly and has Android and Mac support, so its a great option when connecting from/to another OS. Ammy Admin and TeamViewer both of them support Directx, so you can play or seen games in the screen, however Team Viewer is really slow and I wouldnt recommend it for games. Tested with Guild Wars 2 and Diablo 3. Also tested Directx with UltraVNC, TightVNC and RealVNC but I couldnt get them to work with Directx games. Just a black window is shown once you enter the game. (the computer is not hang, just shows a black window that you can minimize).

Team Viewer has great support and they frecuently answer emails.

The worst thing about Ammy Admin is the price and the support, because you need one license for each computer, one for client and another one for server, about (70+70) 140 euro with Premium license.

On the other side VNCs doesnt have so much support since they are free.

The best option is to test them all and see which one goes better in ur system.

-2

I've found the free VNC to be painfully slow. They do have a pay version - not sure if that will be much better?

If you're in a windows environment, i've had a lot of good luck with RDC (Remote Desktop Connection).

NoCarrier
  • 3,517
-2

There is a version of VNC for slower networks called TightVNC.

Nippysaurus
  • 1,445