A collection of plugins for Virtual Radar Server 3.x, targeting both the Windows (.NET Framework 4.8 / System.Data.SQLite) and Mono / Raspberry Pi (Mono.Data.Sqlite) builds.
π₯ Download & install: grab the plugin zips from the latest release, then follow the Installation steps below (Windows and Mono / Raspberry Pi). The same zip installs on both platforms.
Adds user-configurable links to the aircraft detail panel in the VRS web UI. Each link is a template that substitutes fields like ICAO, registration, callsign, or operator code, so you can wire in external lookup sites (photo databases, registries, flight trackers, etc.) and have them open pre-populated for the selected aircraft.
Adds a "Deselect Aircraft" button to the lower-left corner of the VRS map. The button only appears while an aircraft is selected, and clicking it clears the selection β useful for letting the map auto-fit again after you've drilled into a specific target. Enabled by default.
Lets you double-click near an airport on the map to open its LiveATC.net page in a new browser tab. The plugin ships with an airport database and matches the click location to the nearest airport with LiveATC coverage.
Replaces the default aircraft SVG icons on the map with composite markers that combine the operator's logo and a heading arrow, rendered server-side. Useful when you'd rather identify aircraft by airline branding than by silhouette.
Where to get the logos: the plugin reads operator-flag BMPs from VRS's standard operator-flags folder (configured in Tools β Options β Data Sources β Operator flags folder, default
~/.local/share/VirtualRadar/Flagson Mono or%LocalAppData%\VirtualRadar\Flagson Windows). The community pack at rikgale/VRSOperatorFlags is the usual source β extract itsOperatorFlags.zipinto that folder. The fetch_missing_logos.py helper below can pull only the codes that VRS has actually seen on your feed (via the MissingLogos plugin's log), so you don't need to ship the whole pack.
Watches the live aircraft feed and logs any operator ICAO code (and aircraft model) for which VRS has no flag / silhouette image, appending one line per code to
MissingLogos.loginside the plugin folder. Pairs with thefetch_missing_logos.pyhelper script below, which reads that log and fills the gaps from a community flag pack.
Provides a Google Earth "pilot's view" KML feed that follows a selected aircraft from a chase-camera perspective. Uses a background-sampled position queue (one snapshot per second per tracked aircraft) so the camera always animates between two real samples, avoiding the prediction stalls that break Google Earth's
onStopcallback.
Adds a per-aircraft lookup page to VRS plus configurable highlighting in the aircraft list, all backed by an embedded SQLite database that the plugin downloads and refreshes on a schedule from public sources. Requires network access for first use to download databases. Later database updates also require network access. Note: When this plugin first starts, it will immediately begin downloading the databases and processing them. This will spike the cpu usage and can take an hour to complete on a Pi 3.
Data sources (each independently scheduled and updatable):
- FAA Aircraft (US) β registry, model reference, engine reference
- FAA Airmen (US) β pilot certificates and ratings (used for pilot matching)
- FAA SDR β Service Difficulty Reports (maintenance defects / incidents)
- NTSB β US accident & incident database (read from the published Access
.mdb)- CCAR (Canada) β Transport Canada Civil Aircraft Register and owners table
- CASA (Australia) β Civil Aviation Safety Authority register
- NZCAA (New Zealand) β Civil Aviation Authority register
Aircraft lookup page (opens from the aircraft detail view, optionally in a new tab):
- Registration, owner, make/model, engine, weight (lbs or kg)
- Photo grid with optional DuckDuckGo image fallback
- Silhouette and operator logo
- Pilot matches against FAA airmen by owner name and address, with fuzzy / Levenshtein matching, configurable distance threshold, optional state filtering, and confidence badges (exact / close / possible)
- NTSB history and SDR reports for the registration
Aircraft list integration:
- Row / cell highlighting with a configurable priority order across multiple signals: a user-maintained "pink" registration list, model-ICAO highlights, pilot-matched aircraft, NTSB-flagged aircraft, and SDR-flagged aircraft
- LADD (Limiting Aircraft Data Displayed) indicator with its own colour, for US aircraft on the FAA's privacy list
- Toggles for which signals contribute colour, and whether colour is applied to the whole row or only the reg / callsign columns
Operations:
- Per-source update intervals (days) and last-download timestamps
- Custom override URLs per source in case official download locations change
- Manual "download now" buttons per source in the options dialog
Adds a control to the web UI that snaps and centres the map on the configured ownship position. Designed to work alongside the Stratux GPS plugin so you can re-centre on your aircraft with one click after panning around.
Connects to a Stratux ADS-B receiver over the local network, polls its GPS situation feed for ownship position, and uses it as the current location in Virtual Radar Server. Lets VRS automatically track your own aircraft when running in-flight on a tablet or Pi.
Serves map tiles to the VRS web UI from local
.mbtilesfiles, so the map works offline or with self-hosted tile sources (FAA sectional / IFR low / IFR high charts, custom basemaps, etc.). Drop one or more.mbtilesfiles into a folder, point the plugin at it, and each file appears as a selectable base map with an opacity slider.
Companion script for the MissingLogos plugin. Reads the plugin's
MissingLogos.log, finds which operator ICAO codes still don't have a.bmpin the VRS flags folder, and fills them in by:
- Extracting matching files from the rikgale/VRSOperatorFlags community pack on GitHub (the zip is cached locally and re-downloaded every 30 days).
- For any code not in the pack, generating an 85Γ20 text-based placeholder BMP showing the ICAO code (requires Pillow; install with
pip install Pillow).Edit the
MISSING_LOGandFLAGS_FOLDERpaths at the top of the script for your install, then run any time to pick up newly logged codes:python fetch_missing_logos.py [--force-update]
--force-updatere-downloads the community zip even if the cached copy is still fresh.
Pre-built deployment archives are tracked in this repository β one <Name>.zip per plugin at the repo root. Each archive contains a single top-level folder named after the plugin (e.g. TileServerMBTiles/), holding the plugin DLL, its manifest XML, and any Web/ assets.
The plugins are AnyCPU .NET Framework 4.8 assemblies, so the same archive installs on both 32-bit and 64-bit Windows VRS and on Mono (Raspberry Pi, other Linux).
- Locate VRS's
Pluginsfolder. On a default install this isC:\Program Files\VirtualRadar Server\Plugins\(alongsideVirtualRadar.exe). If you're not sure, open VRS β Tools β Plugins; the dialog shows the folder it scans. - Extract the zip (e.g.
TileServerMBTiles.zip) into thatPlugins\folder. The archive's top-level folder lands directly underPlugins\, so you should end up with e.g.Plugins\TileServerMBTiles\VirtualRadar.Plugin.TileServerMBTiles.dll. - Restart Virtual Radar Server.
- Open Tools β Plugins again β the new plugin should be listed. Click Options to configure it.
To update a plugin, stop VRS, delete the existing Plugins\<Name>\ folder, extract the new zip, and start VRS again.
On a typical Pi VRS install the plugins folder is ~/VirtualRadar/Plugins/ (or wherever your VRS lives). Confirm by checking the VRS log on startup, which prints the plugin folder it scans.
-
Copy the zip to the Pi:
scp TileServerMBTiles.zip pi@stratux:~/ -
Extract it into VRS's
Plugins/folder. Installunzipfirst if it isn't present (sudo apt install unzip):cd ~/VirtualRadar/Plugins/ unzip ~/TileServerMBTiles.zip
You should end up with e.g.
~/VirtualRadar/Plugins/TileServerMBTiles/VirtualRadar.Plugin.TileServerMBTiles.dll. -
Restart Virtual Radar Server β
sudo systemctl restart virtualradar, or however your install starts it.
Most plugins have no extra package requirements on Mono β they just need a working VRS install. A few do:
-
RegistrationData needs two things on Mono:
-
TLS root certificates so the HTTPS registry downloads (FAA, CCAR, CASA, NZCAA, NTSB, SDR) succeed. Mono on Linux validates server certs against its own trust store rather than
/etc/ssl/certs/, and on a fresh Pi that store is usually empty or stale β every download fails at the TLS handshake (typicallySecureChannelFailureor "The authentication or decryption has failed") until you populate it:# Refresh the OS CA bundle sudo apt-get update sudo apt-get install --reinstall ca-certificates sudo update-ca-certificates # Push it into Mono's machine-wide trust store sudo cert-sync /etc/ssl/certs/ca-certificates.crt # Also push it into the per-user store for the user that runs VRS # (run AS that user, e.g. `pi`, without sudo) cert-sync --user /etc/ssl/certs/ca-certificates.crt
Restart VRS after running these β Mono reads the trust store at process startup.
-
mdbtoolsfor NTSB. The NTSB accident database is published as a Microsoft Access.mdbfile; on Mono the plugin shells out tomdb-export:sudo apt install mdbtools
If you skip this, all other RegistrationData features (FAA, CCAR, CASA, NZCAA, pilot matching) still work β only NTSB lookups will fail.
-
-
RegistrationData users should also use E's VRS Database Updater to create a full database of aircraft rather than using VRS' default.
-
TileServerMBTiles β the overzoom feature (rendering tiles beyond an
.mbtilesfile's stored maximum zoom) usesSystem.Drawing.Bitmap, which on Mono needs libgdiplus:sudo apt install libgdiplus
Tile serving at native zoom levels works fine without it β install only if you want to zoom in past a chart's intended scale.
-
Stratux GPS β needs network access from the Pi running VRS to the Stratux device's HTTP situation feed (default
http://192.168.10.1/getSituation).
Each plugin builds as a single .NET Framework 4.8 DLL. Requirements:
- Visual Studio 2015 or later, or Build Tools for Visual Studio (any edition with the .NET desktop workload).
- VRS interface DLLs (
VirtualRadar.Interface.dll,VirtualRadar.Localisation.dll,VirtualRadar.WinForms.dll) andDapper.dll(used by LiveATC) are checked in underReferences/; the csproj files point at that folder, so no manual seeding step is needed. - NuGet packages (
AWhewell.InterfaceFactory,Newtonsoft.Json) are restored automatically β_build-plugin.batcallsnuget.exe restorebefore MSBuild. (nuget.exeis bundled at the repo root.)
Per-plugin build scripts are in the repo root:
build-CustomLinks.bat
build-LiveATC.bat
build-LogoMarkers.bat
build-PilotsView.bat
build-RegistrationData.bat
build-SnapToOwnship.bat
build-StratuxGPS.bat
build-TileServerMBTiles.bat
Each one calls _build-plugin.bat, which locates MSBuild (via vswhere, with explicit fallbacks for VS 2017/2019/2022 and standalone MSBuild 14.0) and rebuilds the plugin in the appropriate Debug/Release configuration.
After building, build-deployment-zips.bat repackages the freshly built DLLs into the <Name>.zip deployment archives in the repo root.
All code in this repository was authored by Claude Code (Anthropic), directed and reviewed by the repository owner.





