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.
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:
Decompress that somewhere. It will create a folder called VirtualRadar - open a
shell prompt, cd into the VirtualRadar folder and enter:
Go into Tools | Options and configure your link to the receiver.
SQLite Errors under Mono 4
Virtual Radar Server is built against version 3.5 of the .NET framework, which is what ships with
Windows 7. Version 4 of Mono does not support .NET 3.5, it will run the program under the .NET 4 framework
This is fine, VRS will run under .NET 4 without a problem. All you'll see is a warning
message from the Mono runtime that you can ignore.
However, Mono 4 also ships with version 4 of an assembly called Mono.Data.Sqlite. VRS expects to
see version 2 of this assembly. If you get an exception when you start VRS that goes along the lines
of "SQLiteConnectionStringBuilderWrapper does not implement ISQLiteConnectionStringBuilder"
then it's because VRS cannot load Mono.Data.SQLite.
You can fix this by creating a file called VirtualRadar.exe.config in the same folder as VirtualRadar.exe
and then pasting this into it:
Installing the Database Writer Plugin
Under the VirtualRadar folder unpack the following file:
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.
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)
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:
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">
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;