VNC logo

Virtual Network Computing
from ORL

ORL

[Home]
[screenshots]
[free?]
[getting started]
[documentation]
FAQs
[download]
[keep in touch]
Others' ports etc
Project ideas
VNC people
Search
[ORL]

Frequently Asked VNC Questions

This list is being updated regularly, so, particularly if you are reading a local or mirrored copy, it's worth checking the original from time to time.  The mailing list archives are also available, and they can be a good source of help - try searching them here.

NOTE:  With the release of 3.3.2 we have moved some of the old questions into the Old FAQ page because they should not apply to recent versions.  As with most software, it's worth checking to make sure you've got the lastest version.


The FAQ is divided into the following sections:


Getting Started

Q. I downloaded the .EXE files and they don't work!

Netscape seems to have a nasty habit of sticking a .EXE extension on a file when it thinks it knows what type it is.  When you fill in the download form you specify the type of compression you would like to use, and this does not include .EXE, so if the thing you downloaded has that extension, change it to whatever you requested (usually .tgz) and then unpack the files using an appropriate decoder.

Q. I unpacked the files on NT and ran SETUP.EXE but nothing happens.

Make sure you have NT service pack 3 installed.  It appears that the InstallShield system we use won't work without it.

Q. I ran the vncserver program and got a 'No such file or directory' message.

Vncserver is a Perl script and so the first line has to point to the place where Perl is installed. On Linux this will generally be /usr/bin/perl, on other platfroms it's more likely to be  /usr/local/bin/perl.  Edit the line to point to the right place and it should work.

Q. I ran the vncserver program and got a 'Number found where operator expected' message.

This often happens on S.u.S.E linux. The full message is

Number found where operator expected
at (eval 38) line 1, near ") 0"
(Missing operator before 0?)

Helpful, isn't it?  It relates to the socket.ph file which is part of the Perl installation; there are two of these on the standard S.u.S.E linux installation, one of which is slightly buggy. Look in the vncserver script and change
   eval 'require "sys/socket.ph"';
to
   eval 'require "linux/socket.ph"';

Q. The Java client doesn't work in my browser.

Several Java implementations have bugs which upset the VNC applet.  We recommend Internet Explorer 4 - we've had good results with this on both Windows machines and Macs.  Netscape Navigator 3 has a bug which can cause problems; if you get the 'Method setClip not found' error, try pressing Reload. 

Q. I started the X server using vncserver, but it dies with a message "Could not open default font 'fixed'. "

The 'fixed' font is needed for the server to start - if it can't find it, you need to specify the correct font path for your machine in the 'vncserver' script.  If you're not sure what the path should be, type 'xset q'  from within a normal X session. One of the things reported is the font path used by your current X server, which is generally the right thing to use for Xvnc.  On some platforms you may need to use a colon as a separator in the font path instead of a comma. If you're on a recent version of Linux but still using VNC version 3.3.1, you may have compressed fonts which VNC doesn't understand. Either upgrade or see the Old FAQ.

Q. My viewer failed to connect to my server!

VNC relies on a correctly-configured and operational TCP/IP network, so please make 100% sure that your TCP/IP setup is right before you start asking questions on the mailing list.  Here are some things you should check before assuming it's a VNC problem; consult your local expert if you don't know how to check them:

  • Can you ping the server machine from the client?
  • Is the VNC server definitely running on the server machine?
  • The server listens on port 5900+displaynumber. Can you telnet to this port from the client machine?
  • Have you specified the address correctly to the viewer? Did you remember the display number?
  • Is the server name known to the DNS?  Try using an explicit IP address instead of a name (eg. 123.456.78.9:0 instead of snoopy:0).
  • Do you have any firewalls or proxies in the way that could be blocking acess?
  • If using the java client, did you remember to specify the correct port as part of the URL? (eg. http://snoopy:5800)?
  • Can you try running either the server, or the client, or both, on different machines on your network to find whether the problem is at one end or the other?
  • Can you try running the software on a different architecture?  eg., if you are   problems viewing a PC from another PC, can you try connecting from a Unix machine?

Q. My Solaris/HP-UX Xvnc dies with a core dump!

There is a bug in XFree86 (on which Xvnc is based) which makes Solaris servers very unreliable if they have a pixel depth of 16. Use the -depth option to start your server with a depth of 8 or 24, and you should be fine.  We've heard that this can be a problem with HP-UX as well.


Running the programs

Q. Why can I only run vncserver/Xvnc as root?

The most likely reason for this is that Xvnc can't create the unix domain socket (the path for this unix domain socket is usually /tmp/.X11-unix/Xn).  Try making sure that users can write to this directory by making it world-writable, i.e. "chmod a+w /tmp/.X11-unix".  Note that to avoid a security loophole the "sticky bit" should also be set on the directory by doing "chmod o+t /tmp/.X11-unix".  If you don't do this then someone else logged in to the same machine may be able to intercept the X protocol and thereby access your desktop and snoop on it, etc.

Q. Can I remote the normal X display of my workstation in the same way as the Windows server does?

It would be possible to add VNC support to a standard X server, so that it operated this way, but we have no plans to do so. We tend to run all our X sessions as VNC sessions and only use the local X server to run the viewer.  It's very fast when on the same machine as the server! If you feel that it's overkill to run two X servers on the same machine, you might consider Ganesh Varadarajan's  svgalib-based viewer, available from the contribs page.

Q. What X Visual does Xvnc use?

By default, vncserver will start Xvnc with the same depth as the current X display, if there is one, or 8 bits deep if there isn't.  We've tried to steer clear of colour maps as much as possible and normally use "true colour", even when there are only 8 bits per pixel.

Unfortunately some X applications don't cope too well with an 8 bit TrueColor visual.   You can make Xvnc use the more normal PseudoColor visual by giving a "-cc 3" option to vncserver.

Q. Can I cut and paste between the viewer and the server?

VNC supports copying and pasting of ASCII text in both directions, provided the viewer and server allow it.  When the clipboard changes on the machine running the viewer, the changes are copied to the server and vice versa.  Some notable exceptions:

  • X has more than one method of using the clipboard and different applications do it different ways.  Emacs and xterm should just work. If you find that your X application doesn't work via VNC, you can generally use the xcutsel program to copy the clipboard between the different X methods.  VNC uses Cut_Buffer0, so if you select text in Unix Netscape, for example, you may need to click 'Copy PRIMARY to 0' before it is accessible at the other end of the VNC link. 
  • Java applets running in the browser cannot access the clipboard of the machine on which they are running, so the Java viewer has a clipboard button.  This pops up a window displaying the contents of the remote clipboard, which should allow you to manipulate it locally.

Oops! We've noticed that the code to do copying from the X server to the viewer didn't make it in the initial upgrade to 3.3.2.  It's back in 3.3.2R2, so upgrade if you haven't already!

Q. Can I run the Windows server before anybody has logged in? 

You can now! Make sure you have a recent WinVNC and read the section on running WinVNC as a service in the documentation.

Q. Why can't I unlock my NT workstation remotely? Why can't I stop the screensaver remotely?

Versions of WinVNC prior to 3.3.1 R15 couldn't switch between NT desktops.  Later versions can if you run them as a service, though at present you'll be disconnected in the process and need to reconnect.  Think of it as a security feature for now: your NT screen saver will automatically log out any connections you've accidentally left open!

Q. The dead keys don't work on my keyboard

They will soon!  It's quite a challenge working out how to do international keyboard support across different platforms.  We're working on dead keys.

Q. I can't type into a DOS window or any DOS apps

This derives from the fact that Windows 95 uses BIOS calls and not Windows messages to get keystrokes within the command prompt.  It should be fixed in version 3.3.1 R19 and later of the WinVNC server, so if you're using an earlier version, uninstall and upgrade.

Q. The keyboard doesn't work / keys do strange things!

There is one common problem which can cause this.  If a modifier key, such as Shift, Ctrl or Alt, is pressed, and the viewer window then loses focus or dies, the 'key release' message never gets to the viewer and hence never gets to the remote server.   The remote machine will then think that M is Ctrl-M etc.  We have done various things to reduce the chance of this happening; the viewers release various modifiers automatically when they lose focus, for example, but it can still occur and can be confusing when it does.  The solution is easy: simply press and release the modifier key which is stuck.  If you don't know which it is, then try them one at a time.

We've noticed that the 'cancel modifiers on loss of focus' functionality has been missed out of recent copies of the Windows viewer; it will be back in 3.3.2R1 and later.

Q. Most of my Windows apps work fine remotely, but this one doesn't update its window...

WinVNC can use a variety of hints to guess when a particular area of the screen has changed.  The most useful is the occurrence of a WM_PAINT message in an application.   Not all applications use these messages, though; the Windows clock is a good example. 

In the registry WinVNC has a list of application names, and which things to use as update clues.  A few standard applications are set up by the 'Install default registry settings' in the WinVNC section of the Start Menu; it tells WinVNC to look for timer messages from the clock, for example.  Make sure you install these if you haven't already.  Any other apps you run will appear in the registry, so you can easily tweak the settings. For more info, see the WinVNC documentation.

Q. My remote Windows display is appearing in a very garbled form.

There can be problems with WinVNC being unable to detect changes to the screen on certain applications, as mentioned in the previous question, but there should not generally be serious screen corruption.  Make sure you have the latest service packs installed for your OS and experiment with different video drivers.  WinVNC relies on various aspects of the video card and driver; in particular its ability to BitBlt correctly, and several users have solved their problems by updating the driver.

Q. I have problems with double-clicks in Windows.

By default, mouse button up events are used to signal to WinVNC that the current window may have changed and should be re-scanned.  This can introduce a delay which results in a double-click being interpreted by the system as a pair of single clicks.   Variations in network delays can also cause the clicks to be too widely separated when they appear at the server.  Some suggestions:

  • In many situations, the action performed by a double-click is also available from a right-button menu.
  • You may find that clicking three times, rather than two, will help.
  • You can change the double-click speed using the control panel on the server so that more widely-spaced clicks are still interpreted as doubles.
  • You can disable the left-click hook by editing the registry, as described in the WinVNC documentation, although this may mean that WinVNC misses some screen updates from that application.

Q. I'm installing WinVNC as a service on lots of machines, and I get prompted for the password on each one.  Can I do this non-interactively?

Not directly, but you can by editing the registry before installing. On a machine which already has WinVNC installed, copy all the registry settings under the
HKEY_USERS/.Default/Software/ORL/WinVNC3
key  into the same place in the registry of the remote machine.

When WinVNC runs, it will see the password in that section of the registry and will not prompt you to type one in.

Q. I only have a two-button Windows mouse, and I really need three buttons for X...

The Windows viewer has an option to swap buttons 2 & 3, so you can choose whether your right button appears as a middle or a right button at the other end.  But it is a nuisance to do this regularly.  Some users have asked whether some combination such as Alt-Left click could be sent as a right click. The difficulty is doing this in a way which will not interfere with other valid operations, or make too many assumptions about the remote server.

A better approach is that used by some PC X servers, where pressing both buttons at once counts as a middle-button press.  We haven't implemented this yet, but probably will.  It's not difficult, but it needs thinking through carefully.  Volunteers to write the code welcome - more detailed ideas about what's involved can be found on the 'Want to help?' page.

Q. I have a three-button Windows mouse, but the middle button doesn't work.

This is almost certainly a problem with your mouse driver.  The Windows VNC viewer recognises standard WM_MBUTTON... messages and should work with any driver that generates them.  Some drivers, knowing that Windows seldom normally uses the middle button, either don't recognise it, or map it to something else like a double-click.  Try telling Windows that you have a different type of mouse, or actually getting a different kind of mouse - they're very cheap...!

Q. My machine doesn't have a DNS entry or static IP address! What address should other people use to connect to my WinVNC server?

If your ISP allocates you a dynamic IP address when you dial in, you will need to give that to the person trying to connect.  On Windows95 machines, after connecting, you can use the winipcfg program (type it into the Start/Run... box).  On NT machines, type ipconfig at a command prompt. On linux machines, try hostname -i

Of course, if your phone line is now in use you may need to find some other way of getting this information to the remote person.  I suggest a chat system like AOL Instant Messenger. There are also programs out there which will automatically create a web page with your current IP address, which the other person could then read.


General Questions:

Q. 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.  You may want to do the same for 5800 and 5801 if you plan to use the Java viewer.

Q. How secure is VNC?

Access to your VNC desktop generally allows access to your whole environment, so security is obviously important. VNC uses a challenge-response password scheme to make the initial connection, but after that the data is unencrypted and could, in theory, be watched by other malicious users, though it's a bit harder to snoop a VNC session than, say, a telnet, rlogin, or X session.  Since VNC runs over a simple single TCP/IP socket, it should be easy to add support for SSL or some other encryption scheme if this is important to you.  Axel Boldt  <axel@uni-paderborn.de> suggests:

SSH allows you to redirect remote TCP/IP ports so that all traffic is strongly encrypted, and this could be combined with vnc:
Run sshd and vnc server on machine "server", then connect to it using ssh -L 5901:server:5900 from client (assuming vnc server listens for connections on port 5900) and point your vnc client to client's own port 5901. Everything will be completely secure. Sshd and ssh are free for unix but payware for Windows. See http://www.cs.hut.fi/ssh/

You should also be aware that only the first 8 characters of VNC passwords are significant.  This is because the call used in the Unix server to read a password has this restriction, and the other platforms have been made compatible with this.

Ray Jones rjones@pobox.com has built a version of VNC which uses SSLeay public key encryption. See the contribs page for details.

Q. 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 M/bit 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, the NT server has to work harder to find out what's changed, and so a really fast machine should make a big speed difference.  For more information about how the Windows server works, see the WinVNC documentation.  But if you've been disappointed by the speed of the Windows server, don't give up.  We're improving it gradually, though it'll be a while before it's as fast as on Unix.

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.  We have some suggestions on speeding up the twm window manager.
  • 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.
  • Elderly graphics cards or drivers may make quite a difference; this is a graphics-intensive application!
  • 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.
  • 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.

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.

Q. Are you planning support for Macintoshes, AIX, HP-UX, SGI, Win 3.1, Windows CE, my favourite platform ?

We have provided VNC on all the platforms we use here, and it's difficult to provide binaries for anything we don't have, and it takes a while to get up to speed on new platforms.  Remember that a viewer is available for any platform which runs Java, though the speed may vary quite a bit. But for many platforms it should not be difficult to compile at least the viewer. If anyone tailors the sources for a particular platform we will happily either incorporate the changes in the main source distributions or make the patches available from our site.  Information about ports of VNC to several other platforms can be found on the 'contribs' page.

A Macintosh viewer is now available, and we do plan to provide a server, but we'd rather not commit ourselves to a specific time-frame yet.  We have a Windows CE viewer here which we will release soon.

Q. Would things work better if you compressed the stream?

VNC incorporates really quite efficient compression in the sense that we generally send a tiny fraction of the raw data, probably something like 1/20 on average. The details are in the protocol spec if anyone's interested.  On a couple of test screen dumps we found that the Hextile encoding was more efficient than GIF!  I don't know whether this is true in general.

But we haven't done more general encoding after that; we've tended to the view that (a) it might introduce too much latency and (b) most modems compress pretty well anyway.   We are planning some zlib-compression experiments in the near future to see how this affects things. Because different bits of the screen can be sent using different encodings, the server could, in theory, detect that one bit would be most efficiently sent as JPEG, while another would be better hextiled. 

The question is always how much work it's worth doing at the server to find this out.  To some degree you can control this already, because the viewers allow you to specify your preferred encoding. Under X, if your viewer and server are on the same machine the viewer will use the raw encoding by default, otherwise it will use hextile.  You may find that by selecting different encodings on the command line you get better performance.

See the suggestions above about using ssh, which also provides compression.

Q. Can I use VNC over a modem without TCP/IP?

Not at present, but there's no reason why it shouldn't, and we realise that this would be useful. VNC could run over other transports such as RS232, firewire, USB, modems etc, but at present we rely on TCP/IP.  This means that you can use VNC over anything which supports TCP/IP, so using it over a modem is just the same as any other network, once you have Dial-Up Networking set up.  If you need to communicate directly between two machines without going via the internet/intranet, then set up a remote access server on one and dial in from the other.

We don't, at present, support simple dialup without TCP, chiefly because it involves writing a lot of code to talk to the modem.  But it's on the 'suggested projects' page, so any volunteers welcome... 

Q. Does VNC have any Year 2000 bugs?

The WinVNC server and Windows viewer have been tested on a PC with its date running through the 2000 boundary without any problems, so unless the underlying OS or BIOS has difficulties, VNC on a PC should be fine.  The VNC part of the X-based Unix VNC server only uses dates when writing the log files; the logfile entries are timestamped with a two-digit year, but the format is easy to change if required and the entries are not intended to be machine-readable.  To the best of our knowledge there are no issues with the XFree86 server on which Xvnc is based, but that is not within our control. We therefore issue the standard disclaimer: we believe the VNC code, in its entirety, to be free from Year 2000 problems, subject to the other components of the systems on which it is running.

Q. How can I install WinVNC on multiple machines?

When you run WinVNC for the first time on a machine, it will prompt you for a password.   If you are doing this on a large number of machines, especially remotely, this can be a nuisance.  The way to bypass this is to make sure that the target machine already knows the password by putting the encrypted version straight into the registry before installing. So:

  • Install WinVNC on a master machine and set the password
  • Copy the appropriate registry entries from
    HKEY_CURRENT_USER\Software\ORL\WinVNC3 , or
    HKEY_USERS\.DEFAULT\Software\ORL\WinVNC3,
    (if you installed WinVNC as a service) and install them on the target machine using your favourite registry utility.
  • Copy the VNC files (typically under C:\Program Files\ORL\VNC) onto the remote machine.
  • Install as a service or into the startup directory as appropriate.

Q. Any other tips?

Several people have indicated that they have to use Windows occasionally but prefer to use Unix most of the time, and so want to access a PC under the desk from the Unix box.

Here's a suggestion: all other things being equal, I recommend using the Windows box to view the Unix machine rather than the other way around.  This is chiefly because Windows generally works better as a client than as a server, and also because PC graphics cards are often better than those in Unix workstations.  Remember, you can create a VNC session of any pixel depth you like.  For my day-to-day work I use a Solaris 16-bit VNC session displayed on my PC.  Few of our Sun machines have more than 8-bit color hardware, but the PC has plenty of bits to spare.

If you're very anti-Windows you can make your VNC desktop the same size as the screen and set the taskbar to 'Auto hide' and just pretend you're on an X terminal, but pop up the Start menu when you have to use PowerPoint.... The Windows viewer 3.3.2R4 and later has a proper 'full-screen mode', so you don't even need to bother with auto-hide.


Compiling the source

Q. I'm having trouble compiling VNC on my platform...

Have you checked the contribs page?  Several people have provided hints on how to build VNC on other platforms.  If yours is not listed there, you might at least get some clues..



 

For comments, feedback, etc, please see the 'Keeping in touch' page.
Copyright 1998 - The Olivetti & Oracle Research Lab