Mono is an open-source implementation of the .NET framework that you can use to run .NET programs under non-Windows operating systems, such as Linux. You can use it to run Virtual Radar Server on Linux. However Mono relies heavily on native libraries which aren't always stable, and the parts of Virtual Radar Server that rely on Windows-only COM modules won't work, so the Windows .NET version is the one to use if you want stability and all of the features.

Installation

First of all you need to make sure you have the mono runtime installed. For most Linux distributions this can be installed via the package manager (e.g. sudo apt-get install mono-complete on Debian / Ubuntu), otherwise you can go to http://www.mono-project.org/ and download it from there.

Mono uses X11. Most Linux distributions already have X11 installed but some (notably OS/X) do not and will need to have it installed.

The Mono version has been successfully tested under OS/X Mountain Lion with XQuartz and Mono 3.0.3.

Once Mono (and X11) is installed you can download and unpack VRS from here:

VirtualRadar.tar.gz

Decompress that somewhere. It will create a folder called VirtualRadar - open a shell prompt, cd into the VirtualRadar folder and enter:

mono VirtualRadar.exe

Go into Tools | Options and configure your link to the receiver.

Installing the Database Writer Plugin

Under the VirtualRadar folder unpack the following file:

VirtualRadar.DatabaseWriterPlugin.tar.gz

That should have created a folder called Plugins, within which should be a folder called BaseStationDatabaseWriter with two files in it.

Restart Virtual Radar Server and configure the plugin.

Installing Translations

As of version 1.1.0 the translations of the server and database writer plugin are available in a separate file containing translations for the following languages:

  • German (a bit out of date)
  • French
  • Polish
  • Russian

Only the server and the database writer plugins have translations - the web site produced by the server does not. This will eventually be addressed.

To install the translations unpack the following file under the VirtualRadar folder:

VirtualRadar.LanguagePack.tar.gz

That should create a folder for each language. Restart Virtual Radar Server.

If Virtual Radar Server remains in English after a restart, and if you are sure that the language files are in the correct place (i.e. directly under Virtual Radar Server's folder), then you can force Virtual Radar Server to use a language with a command-line option:

mono VirtualRadar.exe -culture:xx-YY

Where xx-YY is the ISO country and language code. For example:

mono VirtualRadar.exe -culture:de-DE (to use the German translation)
mono VirtualRadar.exe -culture:fr-FR (to use the French translation)
mono VirtualRadar.exe -culture:ru-RU (to use the Russian translation)

Things That Do Not Work Properly, Or At All

There are some things that are not quite polished in the Mono version of Virtual Radar Server and some things I won't be able to fix at all. This is the list of defects I've seen or had reported to me so far:

  • It does not work on Ubuntu 10.04 - or rather it won't start after the database has been configured. Ubuntu 12.04 works fine.
  • Audio does not work - Mono does not (currently) support speech synthesis.
  • UPnP does not work - it relies on a Windows-only COM module. Mono appears to have its own UPnP library but I've not investigated it.
  • The Flight Simulator X link will never work - it relies on a Windows-only library.
  • The server's main screen is a bit messed up.
  • Note that the "VirtualRadar" part of the website address (e.g. "http://127.0.0.1:8080/VirtualRadar/GoogleMap.htm") is case sensitive under Linux.
  • libcario, a graphics library on Linux, is causing many problems. On OS X Snow Leopard it will crash within seconds of a browser connecting to the site. Ubuntu 12.04 fares much better but will still crash within about 12 hours of continuous browsing. I have some ideas about how to improve this, but in the meantime it's going to be a pain. If you suffer from this then you might want to consider writing a small shell script to run the server in a loop to save you from having to keep restarting it manually (see below for a simple example) but if you're using OS X Snow Leopard that won't help, libcairo on there crashes too often for serious use.
  • The text on the markers is not very pretty - once the libcario problem is solved this should get fixed at the same time.From version 1.2.0 Virtual Radar Server avoids drawing text onto any marker images when running under Mono, which appears to work around the problems with libcairo. This does mean that the aircraft text labels don't look quite as nice as the .NET version, but it also means that VRS is more stable under Mono than in previous versions and that it can now run successfully under Mac OS X.
  • The aircraft pictures are not anti-aliased. This should also get fixed once libcairo has been worked around.
  • If the connection to the receiver goes down VRS will not realise it and you will have to reconnect manually. This is because Mono doesn't support the call I use to set a timeout on the connection. It's on their to-do list.

If you notice anything else, or have questions about installing or running VRS under Mono, please let me know via the forum.

Changing The Port That Virtual Radar Server Is Listening On

By default VRS will listen to port 8080. If you have other software listening to port 8080, or you just want to use another port, then you can change the port via a configuration file.

Start VRS and click Help | About. Click the link to take you to the configuration files folder. For most Linux distributions it will be ~/.local/share/VirtualRadar.

In the configuration folder create a text file called InstallerConfiguration.xml.

Open the file and paste this into it:

<?xml version="1.0" encoding="utf-8" ?>
<InstallerSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<WebServerPort>8080</WebServerPort>
</InstallerSettings>

Change the "8080" in the file to the port number you want.

How A Plugin Can Tell If It's Running Under Mono

I have added a new interface, IRuntimeEnvironment, which you can use to see if you're running under Mono:

var isMono = Factory.Singleton.Resolve<IRuntimeEnvironment>().Singleton.IsMono;