Electronic – Minimal requirements for a dedicated VNC client

boardfpgamicrocontroller

On many occasions I've considered doing a small hobby project to design a minimal dedicated VNC client, in essence with a goal of a $2 cloud-based computer! (ok $2 is chosen completely arbitrarily).

For those not familiar with VNC, it is a system for sharing the graphical desktop of a remote machine with a local computing resource. There are VNC software clients for Windows, *nix, MAC, iOS, Android etc, etc. Of course there are other desktop sharing systems such as RDP, but lets just consider VNC as its simpler.

There are clearly the following main sub systems

1.Input - PS2 keyboard & mouse
2.Desktop frame decoding
3.Network communciations
4.Frame buffer / Display 
I'm ignoring the transmission and decoding of audio, file transfer, printing, etc etc.

My question then is could a simple microcontroller board (e.g. PiC, AVR etc with PS2 connectors, ethernet port and VGA output) handle the throughput of a host desktop with a resolution of 1280×800 and a frame rate of 60 fps? If not, I fancy doing this with dedicated hardware on an FPGA (though I'm unsure how to handle the network traffic), possibly using open source IP from the likes of Opencores.org

Any thoughts would be appreciated! Hopefully my question is suitable for this area of stackexchange, I'm not sure if superuser.com or servervault would have the experience with microcontrollers to provide insight. However I appreciate my question is slightly open ended. I'll try pad out the throughput spec requirements further when I get a chance.

thanks folks!

Best Answer

I suspect you'll end up designing something very similar to the Raspberry Pi, with the trouble of manufacturing it yourself and the same cost issues (simply getting a PCB with ethernet, ps2, video and power connectors is probably going to exceed your $2 budget before you put any logic on it). I suspect with aggresive value engineering for your specific application you might be able to get the cost down to $10 by using a different core without the GPU and with less RAM.

I went looking on the Raspberry Pi blog for their own articles on the subject, but couldn't immediately find them; well worth reading that and Bunnie Huang's on the Chumby before setting out to do any manufacturing of your own.