VNC Top Ten Tips
1) How do I make VNC go faster?
We find VNC to be perfectly acceptable as our normal method of accessing Unix desktops on a daily basis. This is over a 10 Mbit/s ethernet on reasonably modern machines, using the X or Win32 viewer. Because Windows gives us fewer hints about what it's doing, and because we don't have the source code for Windows in the same way that we do for X, the WinVNC server has to work harder to find out what's changed, and so a really fast machine should make a big speed difference.
There are several things that can slow any VNC session down, however, and you may like to consider these if you find it too slow:
☞ Unusually 'busy' desktops. The VNC protocol is very efficient at rendering areas of a single colour, such as you generally find on window title bars, scrollbars, backgrounds of pages etc. But if, for example, you have pretty 24-bit photographs of your girlfriend as your screen background, or dithered title-bars on your windows, you may pay a price for the aesthetics. A colourful or patterned desktop background will probably slow down VNC more than any other single factor. We have some suggestions on speeding up the twm window manager, some of which will also apply to other environments.
☞ Hi-colour desktops. Don't use 24-bit colour if you can use 16 or 8 equally well. Remember, on Unix you can run multiple servers, so I have a big 16-bit desktop for normal work and a small 8-bit one for when I log in from home. The server can send out a wide range of pixel formats, and some viewers will allow you to request a specific format for that session. On the Windows viewer, for example, if you click Options... when making the connection, you can request only 8-bit pixels from the server - useful if the network gets slow. If you are using a modem, I recommend changing the shortcut in the Start menu to include the /8bit option - this will then be the default. Similarly, if you regularly connect to a remote WinVNC server, consider whether you could run happily at lower resolution. A 1280x1024 screen has more then 4 times as many pixels as a 640x480 one, and if all you are doing is checking a printer queue you probably don't need them all! Note, though, that on WinVNC, 16-bit colour is usually the best to use. See below.
☞ Elderly graphics cards or drivers may make quite a difference; this is a graphics-intensive application! On Windows the graphics system on the server will affect the speed as well as the one on the viewer.
☞ Some applications are not very economical about redrawing their display. Early versions of Unix Netscape, for example, tended to draw everything twice when scrolling, which did nothing to help the smoothness under VNC. X11Amp flashes its display very fast when in 'pause' mode.
☞ Some Java Virtual Machines are particularly fast at reading from the network and particularly slow at drawing to the screen, or vice versa. With the Java viewer it is worth experimenting with the encodings available from the Options menu, as we sometimes find big differences in speed.
☞ If you are connecting to WinVNC, don't change the default settings in the Properties box unless you need to. See 'WinVNC is putting a huge load on my PC' above.
☞ All the standard clients can do local rectangle copying, and this generally means that dragging a full window on X is much faster than dragging its outline. If your window manager allows this, it may speed things up. Roman Mitnitski also reports that when he increased the mouse dragging threshold (-t option of the server) the performance was improved.
☞ Generally, with WinVNC/UltraVNC, use 16-bit colour (65536 colours) on the server if you can. 16-bit is almost always the best depth to use, because:
1. 256-colour screens have to be palette-converted before they can be transmitted to truecolour clients. Only if the client is 256-colour palette- based will you see any performance increase. Even if the client is 256 colour truecolour, it'll have to convert via a 32-bit truecolour palette!
2. 24-bit screens have to be specially munged via 32-bit since VNC's internal colour-handling routines don't work with 24-bit directly.
3. 24 and 32-bit screens have to have each pixel looked up in three tables to get the converted value.
4. Graphics cards claiming to do 24-bit often actually do 32-bit with munging - this in many cases makes 24-bit slower just for general use than 32-bit!
5. Finally, 16-bit involves no palette processing and a single lookup in a cached src_format to dest_format table to convert the pixels.
On slow links, you may also want to use some software to compress the data between the two ends. SSH or Zebedee can be used for this. See the section on security below.
2) Will VNC work through a firewall?
It depends on your firewall, and whether you want to access a server inside your firewall from elsewhere, or a server outside your firewall from inside.
Generally firewalls are designed to prevent incoming connections except to certain well-known machines and ports. If you can configure these to include your VNC server, then you will be able to access it from anywhere in the world. There is a good argument to be made for the fact that VNC is less of a security risk than X, so if your site doesn't allow X in or out it may still allow VNC.
Many modern firewalls will allow outgoing connections initiated from inside, so you can often access servers on outside machines. It is straightforward, for example, to recompile the viewer source to include SOCKS support, or to make other special arrangements. See the contribs page.
It's a pity that Java within a browser doesn't automatically use SOCKS if the browser is configured to use it. There's probably Java SOCKS support out there somewhere...
If your internet access is through a router which does Network Address Translation, you may be able to configure the router to redirect particular incoming ports to particular machines. So you could run WinVNC with a display number of 0 on machine snoopy, and with display 1 on machine woodstock, then set your router to send port 5900 to snoopy and 5901 to woodstock. See below for information on the other port numbers used by VNC.
3) Which TCP/IP ports does VNC use?
A VNC server listens on two ports. The exact port numbers depend on the VNC display number, because a single machine may run multiple servers. The most important one is 59xx, where xx is the display number. The VNC protocol itself runs over this port. So for most PC servers, the port will be 5900, because they use display 0 by default.
In addition, VNC servers normally have a small and very restricted web server built in, which allows you to connect a browser to them and use the Java viewer. This runs on port 58xx. Note that this is the HTTP port used for downloading pages and applets, but once the applet is running it uses 59xx for VNC just like any other viewer.
The servers can be changed to listen on other ports if, for any reason, these are not suitable for you. See the server's documentation for more details. Most of the viewers, if given a display number larger than 99, will interpret it as a direct port number and will not add 5900. See also the next question.
If you are running a viewer in 'listening' mode, where it accepts connections initiated by the server, it will listen for incoming VNC on port 5500.
4) Can I run VNC over a port normally used for a standard service? (eg. port 21, or port 80)
In rare circumstances, people may want to do this, perhaps because they have a firewall which only allows connections to certain ports. This can be done, at least for the Windows and Unix servers (see their documentation), but the following points need to be borne in mind:
☞ On some systems (eg. most forms of Unix), ordinary users are not allowed to run servers on ports below 1024.
☞ You obviously can't run a VNC server on a port that's already being used for other things.
☞ Many VNC servers use two ports: one for the VNC server, and one for the HTTP server that provides the Java applet (see previous question). If you plan to use the Java viewer, you may want to change both. Not all servers will allow this at present.
☞ You need to tell the viewer the right display number. Normally, display numbers come between 0 and 99. If you specify any number smaller than 99, the viewers add 5900 to get the port number. If you specify a larger number, the viewers take it as a port number directly. So how do you use port numbers lower than 99? You have to specify a negative display number! For example, to connect to a server running on port 80 on machine 'snoopy':
because -5820 + 5900 = 80. This may not work with all viewers, but Unix and Windows seem to be fine.
4) Can I make the Macintosh server start automatically when the machine boots up?
☞ Yes, create an alias to VNCServer and put it into the Startup items folder (in your system folder).
6) Where can I get VNC?
☞ With your Mac computer the VNC is inbuilt in the form of Bonjour so there is no requirment to install and third party software. On the PC we recomend Ultra VNC.
Click on the button above to get your copy.
7) VNC freezes?
☞ While VNC generally works well for remote observing, allowing handovers without the previous requirement to quit caobs, and allowing the correlator status to be monitored, from time to time things freeze up.
The <cntl> <c> (simultaneously holding down the control and c keys) may not work within a vnc session if your vncviewer does not handle the <cntl> properly. In this case, use the <alt> in combination with <cntl> character
If you appear to have lost the ability to type in a window, try the following:
Check that you are not connected 'view only'
(I think the only way to do this is to kill the viewer and start again - rmw)
Check you are not battling for control of the mouse with another user
The (somewhat non-intuitive) sequence of <alt><Left Mouse Button> will often allow control to be regained.
Other combinations, such as <alt><enter>, <alt><space bar>, <alt>[some typing], or <alt>[other mouse buttons] may work.
If using a Mac, the control keys to move between open spaces may be interpreted by the VNC as a <cntl>s (the ascii no scroll character). Simply trying <cntl>q may be sufficient to regain the ability to type into the VNC window.
(As a general rule, it is best to move the focus out of the VNC window (by, e.g., clicking the mouse on another part of the screen) before using any special Mac sequences of keys.)
Again, on a Mac running Chicken of the VNC, if you find yourself in full-screen mode, use the key combination <cntl><alt><command><`> to recover.
Experience suggests issues are occasionally caused by someone joining the VNC session. If you are monitoring observing that someone else (in your team) is doing, it is recommended to start your VNC session as a "viewonly" session. If you are joining to take over from the previous observer, don't start your session well in advance of your start time in case you cause problems for the preceding observer.
VNC Pocket Office Pro has cntl-Alt-Delete built into the menue as a seperate function.
8) Why is my session so SLOW?
☞ VNC is sending the image of your screen over the network between the server (here at CS) and your client (the machine where you are working). Depending on the network speed, the load on the server, the speed of your machine and the protocols vnc is trying to follow, the speed of your vnc session can range from “zippy” to “unusable”. Try to change the decoding options. You should find compression or encoding options with names like “hextile”, “copyrect”, “zilb” and “tight”. Try any or all of these
9) What size screen can I view?
☞ VNC Pocket Office Pro can view any screen size. It all depends on the memory of your device and the speed of the processor.
10) Try to use WiFi if you can
☞ Although VNC Pocket Office Pro Universal works over GPS/EDGE etc. It is always best to find a WiFi hotspot to access remote data as the connection is more stable and usually FREE. 4G will change this concept though .