About VNC
---------
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 server
- Enabling the use of the mouse of the client in place of the mouse of the server
More can be found in the provided HTML doc file.
About AmiVNC
------------
AmiVNC is an experimental VNC server for the Amiga.
Visit Stephane's homepage for more information: http://s.guillard.free.fr
Requirements
------------
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 compliant stack),
- 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 1024x768x16 bit.
To build AmiVNC you need :
- The AmigaOS4 SDK
Usage
-----
AmiVNC4 should be used from the shell. It can be started without arguments,
but first you need to set a password, like this:
AmiVNC4 -pMyPassWord
To get some usage information, enter the following in a shell:
AmiVNC4 -h
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 2016!)
- Fixed Zlib usage after reconnect to the server. (Thought it did that in 2.2.0!)
- 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 Workbench.
- 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 client).
- Right Ctrl key is translated as RCommand to allow some hotkeys, like cut'n'paste.
- 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
gfx downwards.
- 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.
Internal:
- 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
before disconnect.
- 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 since
newlib isn't completely thread-safe. (It crashed)
- Extracted everything related to the input thread and put it in thread.c.
2.0.2
- removed the "fastmode hack" used for 16 bit screenmodes, which was not compatible
with changed RTG endianness in OS4
2.0.1
- removed unneeded library open code for libauto opened libs. Might help fixing the
'crash on exit' which I unfortunately cant get here...
2.0.0
- Port to AmigaOS4
- Bugfix : mouse events were inserted into input.device with wrong length
1.0.1
- ievents.c code cleanup
1.0.0
- 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
0.1.0
- 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.
0.0.15
- 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).
0.0.14
- 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.
0.0.13
- 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.
0.0.12c
- Added a planar only version for users who don't have Picasso96 nor Cybergraphics
at all. See in the "planar only" directory, and read the html doc !
0.0.12
- 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.
0.0.11
- Added the StopAmiVNC tool, to properly stop AmiVNC (only when it is waiting for
incoming sessions).
- Enhanced keyboard support (supporting arrow keys, CONTROL, SHIFT, Lamiga = Lalt, Ramiga
= Ralt etc.). Better, but still not perfect.
- Enhanced mouse support (handles ieQualifier). Better, but still not perfect : in YAM,
you can drag your messages but when they come onto a drop area, they are unselected.
- Allows screen change IF new screen is the same RGB mode. I did not think it would be
very useful, but indeed I use it ! Aborts connection when screen changes if new screen
mode is different (as said somewhere above, the VNC clients abort when they receive a
mServerInitMsg message in the middle of a session, and this message is necessary to
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 -b24.
-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 under
CGFX or with screen depth > 2, because still using ReadPixelArray for compatibility,
and sending 4 byte pixels. Will try to fix that.
- A few bug fixes.
0.0.10ra
- Deals with active screen, not necessarily Workbench (this does not mean you can open
a screen in a session !).
- No longer a one shot daemon. You can re-connect. Stop with CTRL-C when the server is
waiting for connections (if you break it at another state, you may loose memory).
- Corrected acquisition of raster pointer, which worked under Pic96 but not under CGFx.
Thanks to Steffen Haeuser.
- Changed all color encoders to ARGB (32 bit on the wire), and ReadPixelArray(). This
is slower, but works with all CGFx and Picasso96 screen modes with depth > 8. As
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.
0.0.9 :
- 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
0.0.8mt :
- Initial release on Aminet
|