VNC is a truly thin client protocol which enables the use of one computer
(the server) from another (the client), by :
- Enabling remote view of the server screen in a window on the client screen
- Enabling the use of the keyboard of the client in place of the keyboard of the
- Enabling the use of the mouse of the client in place of the mouse of the
More can be found in the provided HTML doc file.
AmiVNC is an experimental VNC server for the Amiga.
Visit Stephane's homepage for more information: http://s.guillard.free.fr
To run AmiVNC you need :
- An AmigaOS4 computer
- any native planar Amiga screenmode (PAL, NTSC, AGA etc.)
or 15, 16, 24 or 32 bit RTG mode (CGFX or Picasso96)
- a TCP-IP stack (AmiTCP or Miami(dx) or RoadShow or any bsdsocket.library
- enough free ram to hold a copy of the Workbench screen,
- a computer with a VNC Client (Mac, Unix or Linux box, PC, Amiga).
Myself, I use an older VNC client for Windows, which can be found at
http://s.guillard.free.fr/OS4/vncviewer.zip and a workbench screen set as
To build AmiVNC you need :
- The AmigaOS4 SDK
AmiVNC4 should be used from the shell. It can be started without arguments,
but first you need to set a password, like this:
To get some usage information, enter the following in a shell:
AmiVNC4 can also be started using the icon from Workbench.
For more information, visit http://s.guillard.free.fr/AmiVNC/AmiVNC.htm
History / News
2.2.1 - Changes by Daniel Westerberg 2009-11-19 - 2010-04-23: (released in
- Fixed Zlib usage after reconnect to the server. (Thought it did that in
- Fixed an update bug causing it to miss about 8 pixels at the top of everything
that was redrawn.
- Fixed incremental logfiles. Logfiles will be appended even after restart
of the server. Multiple instances will get their own logfiles.
- Incremental passw fail timer.
2.2.0 - Changes by Daniel Westerberg 2008-03-14 - 2009-11-19:
- Added Zlib support.
- Enable the use of Workbench tooltypes so AmiVNC4 can be started from
- Fixed a bug in the change-scanning code which speed up the scanning and
responsivness a lot.
- Added a delay when password fails to prevent bots from brute-forcing.
- Now defaults to not using CopyRect, only Hextile.
- Added a switch to enable CopyRect.
2.1.1 - Changes by Daniel Westerberg 2007-10-16 - 2008-03-13:
- Fixed the crash of both AmiVNC and clients when a screen height was not
dividable by the tile size. If screens are not a multiple of 32x32 pixels
the last right and/or bottom pixels will not be updated. This problem shows
on for example a 1680x1050 wide-screen.
2.1.0 - Changes by Daniel Westerberg 2006-08-24 - 2007-10-16:
- Clipboard implemented. Only works with RAmiga+c or x, (RCtrl+c or x on the
- Right Ctrl key is translated as RCommand to allow some hotkeys, like
- Both left and right Ctrl together translates as LCommand.
- Home/End/etc. uses proper OS4 codes instead of becoming shift+numpad.
- Numpad events get the NUMERICPAD qualifier instead of LSHIFT.
- Added F11 & F12 and Meta-key as LCommand.
- Scroll wheel supported.
- Mouse buttons side and extra supported.
- Support for CopyRect for horizontal repetitiv patterns and scrolling of
- Support for Hextile in the simplest way: one-color tiles or raw tiles.
- Automatically switches to 8-bit BGR233 if the client requests that.
- Added switch to force RAW encoding.
- Added switch to enable RAWMOUSE events alternating with NEWPOINTERPOS
to allow some menues to work better.
- Added help with -h option.
- Small optimization: tiles can be flatter than XDC_TILE if not all of
it has changed.
- Error-checking for all recv()s in the child process.
- Error tolerance in send() and recv(): 10 consecutive errors allowed
- SoftTimer used instead of Delay() in the main loop. Allows for periodic
check instead of delayed check. It includes a throttle control if the
period is too short for the CPU.
- Replaced all malloc/free/fopen/fprintf for AllocVec/FreeVec/FOpen/FPrintf
newlib isn't completely thread-safe. (It crashed)
- Extracted everything related to the input thread and put it in thread.c.
- removed the "fastmode hack" used for 16 bit screenmodes, which was not
with changed RTG endianness in OS4
- removed unneeded library open code for libauto opened libs. Might help fixing
'crash on exit' which I unfortunately cant get here...
- Port to AmigaOS4
- Bugfix : mouse events were inserted into input.device with wrong length
- ievents.c code cleanup
- Solved this looongstanding mouse scale bug which showed on wome configs.
Thanks Denis Spach !
- Mouse support is now more system friendly thus compatible w/ MagicMenu etc.
- Code is 1/2 its previous size, faster and more stable (thanks StormC4)
- Added 68020 versions to the distribution
- Ported to and compiled w/ StormC4/GCC (smaller, faster).
- Added IntuitionBase locking (more stable).
- Reworked mouse event insertion (should remove mouse coord. errors).
- First PPC version (not distributed yet) : faster.
- Added DELAY parameter, to lower CPU needs.
- Added VVA support : BGR233 pixel encoding (enable this with VVA tooltype
or -a on the command line). Reduces all screen modes to 256 colors, speeding
things a bit.
- Palette refreshing bug fixes for palette screenmodes (planar and chunky).
- Bug fix : password setting with S: in an AFS or PFS filesystem did not work.
Reason : AmiTCP net.lib (with which I link) strangely alters creat() behavior.
Now using Open().
- Bug fix : when stopping AmiVNC with CTRL-C signal, memory was freed twice.
Reason : I had not understood what CXBRK() is.
- Added support for 256 color RTG screen modes (at last !). Indeed, when
I saw working 256 color planar modes I thought it would not be that hard
to have 256 color chunky modes too ! Now, there should not be that many
screen modes not supported.
- Added a planar only version for users who don't have Picasso96 nor
at all. See in the "planar only" directory, and read the html doc !
- Added support for Amiga planar modes (YES, AT LAST !).
- Removed the StopAmiVNC tool. To properly stop AmiVNC,
feed it with a BREAK C (only when it is waiting for incoming sessions).
If you use Executive, you can use the nice MUI Commander for this purpose.
- Added icon Tooltypes to set parameters.
- Added user commands to be executed when client logs in or logs out.
- Added log to file, thus silent mode.
- A few bug fixes.
- Documentation update.
- Added the StopAmiVNC tool, to properly stop AmiVNC (only when it is waiting
- Enhanced keyboard support (supporting arrow keys, CONTROL, SHIFT, Lamiga =
= Ralt etc.). Better, but still not perfect.
- Enhanced mouse support (handles ieQualifier). Better, but still not perfect :
you can drag your messages but when they come onto a drop area, they are
- Allows screen change IF new screen is the same RGB mode. I did not think it
very useful, but indeed I use it ! Aborts connection when screen changes if
mode is different (as said somewhere above, the VNC clients abort when they
mServerInitMsg message in the middle of a session, and this message is
change the resolution).
- More command line options :
-e to force Big Endian flag
-(r|g|b)<value> to force red | green | blue bit shift on color encoding,
useful if you
have color trouble. Legal values are 0, 8, 16, 24. Default is -r8 -g16
-l<size> to limit network packet size when sending initial screen update.
Useful if you
have too many network collisions. Default is no limit.
- Speed restored under Picasso96 with screen depth = 16 bit pixels. Still slower
CGFX or with screen depth > 2, because still using ReadPixelArray for
and sending 4 byte pixels. Will try to fix that.
- A few bug fixes.
- Deals with active screen, not necessarily Workbench (this does not mean you
a screen in a session !).
- No longer a one shot daemon. You can re-connect. Stop with CTRL-C when the
waiting for connections (if you break it at another state, you may loose
- Corrected acquisition of raster pointer, which worked under Pic96 but not
Thanks to Steffen Haeuser.
- Changed all color encoders to ARGB (32 bit on the wire), and ReadPixelArray().
is slower, but works with all CGFx and Picasso96 screen modes with depth > 8.
a side effect, AmiVNC is even smaller than before !
- This version is successfully running on my setup, with both AmiTCP, Genesis or
Miami as a TCP stack, and Picasso96 or CFGx 4 as RTG system.
- Fixed ObtainSocket() call, works now with Miami
- Added 24 bit pixel support
- Added Cybergraphics support
- Added setting of listening port (5900 may also be used by other softwre)
- Fixed documentation
- Still much to be done
- Initial release on Aminet