FaRCX has its conceptual origins in the Red Rover Goes to Mars project, a joint venture between the LEGO Company and the Planetary Society which took place in the early 2000s. As part of the project, The Planetary Society produced a piece of software called Red Rover, Red Rover. The software aimed to simulate the experience of operating a Mars rover over the internet using LEGO® Mindstorms RCX robots. From approximately 2005 to 2011, Mars stations were hosted around the world, each allowing users to control an RCX robot in a different simulated Martian landscape.
One such station was hosted by Linda Hamilton at Marshall University in Huntington, West Virginia, and remained operational at the university through late 2013. During this time many people from Huntington and the rest of the world enjoyed operating the rover. In December 2013, the station was moved to the residence of John Holbrook, and remained operational there for approximately a year.
However, the site, now nearing fifteen years in operation, was rather outdated. The page layout looked as if it had been drawn up in 2002 (it had), and the "server" powering the site was a desktop-class Dell tower running Windows 98, which had aged somewhat. Towards the end of 2014, John and his friend Philip Taylor began to discuss the production of a modernized site, written from scratch. The result, written mostly by Philip (but with John writing some of the web pages) is FaRCX, and control of the Rover was transferred to FaRCX, running on Ubuntu Server 14.04 LTS, in January 2015.
The rover is directly controlled through a LEGO® Mindstorms RCX "smart brick" by a few cables running from it to the motors. When you press a button on the drive page, a bit of jQuery code makes a request to a PHP script, telling it to move the rover. The PHP page translates this request into RCX opcodes which are sent over infrared (like a TV remote) as a series of packets, as per its protocol. To talk with the rover, a standard LEGO® USB or serial IR tower is used, the drivers for which are already built into Linux kernels newer than 2.6.1.