Which Runway Add-on
![]() Main window of Which Runway add-on | |
Developed by | Roman Ludwicki (PlayeRom, SP-ROM) |
---|---|
Initial release | September 10, 2025 |
Latest release | 1.3.1, October 4, 2025 |
Written in | Nasal, Canvas |
Platform | Min FG version 2024.1.1 |
Development status | Advanced production |
Type | Addon |
License | GNU General Public License v3 |
Website |
Which Runway is a FlightGear add-on which uses METAR data and preferred runways at the airport (ICAO.rwyuse.xml
files) to indicate the best runway for takeoff or landing. It also calculates headwinds, crosswinds, and tailwinds for each airport runway (which can be useful for input into the MCDU), and provides a wealth of information about the airport and its runways, along with a graphical representation on a wind rose.
Installation
Installation is standard:
- Download latest releases version of "Which Runway" add-on and unzip it.
- In Launcher go to "Add-ons" tab. Click "Add" button by "Add-on Module folders" section and select folder with unzipped "Which Runway" add-on directory (or add command line option:
--addon=/path/to/which-runway
), and click "Fly!".
Using
This add-on adds a "Which Runway" item to the main menu, from which you select "Runways". A dialog box will open with 4 tabs:
- Nearest displays the nearest airport, which will be automatically updated during the flight. At the bottom, there's a field to enter the ICAO code of any other airport and you also find buttons with the nearest airports within a 50 nautical mile radius. If you reach a different nearest airport, the data will always change to that nearest airport. To prevent the nearest airport from changing automatically, you can check the "Hold update" checkbox.
- Departure show the airport selected as departure in Route Manager. This airport is automatically change only when you change it in Route Manager. At the bottom you can force a refresh of the METAR with the "Update METAR" button.
- Arrival show the airport selected as arrival in Route Manager. This airport is automatically change only when you change it in Route Manager. At the bottom you can force a refresh of the METAR with the "Update METAR" button.
- Alternate where at the bottom you can use input field for entering the ICAO code of any airport. This is the best place to enter any ICAO code because here the airport will never be changed by the program. Here you will also find buttons with the nearest airports within a 50 nautical mile radius.
Each tab contains information about the airport, METAR, and runways and their winds. Runways are sorted by preferred runways at the airport or by those most exposed to headwinds. Wind data is always taken from the current METAR. The METAR will be updated automatically every 15 minutes by FlightGear's mechanisms or by using the "Load"/"Update METAR" buttons.
If the airport does not have a METAR, the METAR is taken from another nearest airport, within a maximum range of 30 NM by default (it can be change in Settings). A warning is then displayed, indicating which airport the METAR is from and how far away that airport is. This is useful in situations where smaller airports don't have METARs but are close enough to another larger airport that it can be assumed there won't be much, if any, difference in weather. This allows you to obtain some weather conditions, such as wind and barometric pressure, even at airports without a METAR, which wasn't so easily possible without this add-on.
If there is no other airport with a METAR within 30 NM, information about the airport and its runways will be displayed, but without wind and other weather data. This means that the runways are displayed as they appear in the database and are not sorted by best wind.
NOTE: to download and use METAR data with this add-on, the add-on requires the "Live Data" weather scenario to be enabled. You can use this add-on with the weather scenario in offline mode, but wind and METAR data will not be displayed.
Airport information
Airport information is always displayed at the top of the tab:
- ICAO code and airport name.
- Lat, Lon – geographical coordinates of the airport in 2 formats.
- Elevation – airport elevation in feet and meters.
- Mag Var – magnetic variation at the airport.
- Best runway from aircraft position – this is not the best runway due to the wind, nor is it the airport's preferred runway, it is the runway you can choose if you need to land immediately in case of an emergency, as it's the runway your aircraft is most conveniently positioned to land on. This means you won't have to perform as many maneuvers to land on it. This value will change dynamically.
- Distance – distance from your position to the airport in nautical miles and kilometers. This value will change dynamically.
- Bearing – bearing from your position to the airport (magnetic and true). This value will change dynamically.
- Has METAR – information as to whether the airport provides its own METAR report.
- METAR – raw METAR from the current airport, if available, or the nearest other airport.
- QNH – atmospheric pressure relative to mean sea level as given by MATAR, in 3 units. This information may change as the METAR changes.
- QEF – atmospheric pressure relative to the airport elevation as given by MATAR, in 3 units. This information may change as the METAR changes.
- Wind – information from METAR about the true direction of the wind and its speed (and wind gusts, if any).
Preferred runways at the airport
Some airports, especially larger ones, include a file with the extension *.rwyuse.xml
in their scenery. This file defines schedules for specific aircraft types and the preferred runways for takeoff and landing within a given schedule. The rwyuse.xml
file also contains information about the maximum allowable tailwind and crosswind. Runways in the rwyuse.xml
file are presented in columns, as pairs for takeoff and landing (or threes, e.g. 1 runway for landing, 2 for takeoff). If at least one runway in the first column of preferred runways does not meet the wind requirements, the next column is considered, and so on, until a column containing preferred runways is found. This means that the preferred runway may not necessarily be the one best located for the headwind. This is due to noise reduction, traffic volume, runway length, and other factors.
The "Which Runway" add-on by default tries to load the rwyuse.xml
file (if it exists for a given airport), and takes into account the preferred runways there.
If the airport has an rwyuse.xml
file, it will be visible with an additional set of controls and information.
Controls:
- Use the preferred runways at the airport checkbox – this will be enabled by default to use information from
rwyuse.xml
in current tab. However, you can always uncheck this option, which means disabling therwyuse.xml
file, and then the runways will be presented simply by the highest headwind. If you want to globally disable the use of preferred runways, go to the "Which runway" -> "Settings..." menu. - Aircraft type combobox – schedules for specific aircraft types are created in the
rwyuse.xml
file. Therefore, first make sure you have the correct aircraft type set:Commercial
– airliners,General Aviation
,Ultralight
,Military
.- Not all airports have schedules for
Ultralight
andMilitary
. IfUltralight
is not present,General
will be used, even thoughUltralight
is selected. IfMilitary
is not present,Commercial
will be used. And ifGeneral
is not specified,Commercial
will also be used. Changing the aircraft in any tab will change the aircraft in every tab. This is convenient because we don't have to repeat this for every tab.
- Radio buttons Takeoff and Lending – here you must select whether you are interested in taking off or landing at a given airport. For the "Departure" tab,
takeoff
is selected and cannot be changed. For "Arrival",landing
is always selected. The values can be changed on the "Nearest" and "Alternate" tabs. - Current UTC time simply displays the current UTC time in the simulator to help set the schedule time. This time automatically updates.
- Schedule UTC time – here you should select the UTC time for takeoff or landing. As I mentioned, airports have their schedules based on time intervals in UTC, so it's important to enter the correct time. For example, if your flight will last another 2 hours, set the UTC time 2 hours ahead to match your expected landing time. You will then receive the correct landing schedule. The minutes change every 10 minutes so that you don't have to click too much, which I think is enough to determine the arrival/departure time.
On the right side, you'll find additional information:
- UTC Time – the time used for the schedule. Remember to set the correct takeoff/landing time, which will mostly be sometime in the future.
- Max tailwind – the maximum allowable tailwind. If the runway has a tailwind greater than the value specified here, this will be marked as not preferred.
- Max crosswind – the maximum allowable crosswind. If the runway has a crosswind greater than the value specified here, this will be marked as not preferred.
- Traffic – the aircraft type used. This should be the same type as you selected in the "Aircraft type" combo box, but this won't always be the case. If the airport doesn't contain any data for the selected aircraft, this value is changed as described above, for the "Aircraft type" option.
- Schedule – the name of the schedule from the
rwyuse.xml
file that corresponds to the given UTC time and aircraft/traffic. Ifn/a
is displayed, it means the airport is not operational for the selected aircraft type at the selected UTC time. Runways will then be displayed simply by the highest headwind, without preferred runways. The values found here may vary and depend on the airport, but here are some of them:night
– night schedule, where preferred runways may be selected specifically for noise reasons;day
– a general schedule for the entire day;offpeak
– the end of peak traffic;inbound
– heavy traffic arriving at the airport, in which case there may be more preferred runways for landing;outbound
– heavy traffic departing from the airport, in which case there may be more preferred runways for takeoff;general
,ga
– most often one schedule for all general aviation traffic;commercial
– most often one schedule for all airline traffic;always
– some general schedule.
- Daily operating hours – the 24-hour range of hours during which the selected traffic can operate, meaning that the airport has a defined schedule for these hours. If you set the UTC time outside the range of hours specified here, you receive an amber warning and the Schedule will indicate
n/a
.
If you're using preferred runways for an airport, then:
- The preferred runways will be displayed first. They will have the additional information Is preferred: Yes. Typically, there will be only one runway, or possibly two, for large airports. This is the runway you should select.
- Not all runways will be displayed here, only those that were on the airport's preferred list for a given schedule.
- If at least one of the runways from a column in the
rwyuse.xml
file does not meet the tailwind and crosswind criteria, then all runways in that column are marked as Is preferred: No. - If all runways are rejected due to failure to meet the tailwind and crosswind criteria, then the runways will simply be sorted according to the highest headwind. This will be accompanied by the warning "No preferred runway meets the wind criteria, so the best headwind is used."
- If, for the selected aircraft type, the airport is not operational at the selected UTC time, then the runways will simply be sorted according to the highest headwind. This will be accompanied by the warning "No preferred runway for the selected time, so the best headwind is used."
- If the wind is variable, the criteria for max tailwind and crosswind are not checked, which means that no runways are rejected from the preferred ones.
For more information about rwyuse.xml
file see AI Traffic#Runway Usage Configuration.
Comments
Some airports have incorrectly created rwyuse.xml
files. For example, the number of runways in a column is not the same, or they have multiple schedule entries for the same aircraft type, each with the same time range. Such cases can produce illogical results or won't be fully supported. The example of how this should be done correctly, and what I used as a basis, is the EHAM.rwyuse.xml
file, where the aircraft type has a single schedule from 00:00 to 24:00, and the preferred runway lists have the same number of columns.
Compatibility issues
Currently, FlightGear uses the preferred runways at the airport (if available) only for computer-controlled traffic. Therefore, if you start a session on a runway, your aircraft will be placed on the runway based on the highest headwind, without taking into account the preferred runways at the airport. The good news is that this is recognized and marked with a FIXME comment in the FlightGear code :)
Other add-ons, such as "Red Griffin ATC" (version 2.3.0 at the moment), work similarly. If you haven't created flight plan yet, and you ask "Red Griffin ATC" for departure information, you'll receive a takeoff runway based on the highest headwind, and this will usually not be consistent with what “Which Runway” indicates when using preferred runways.
Keys
The main window of the add-on supports the following keys:
- 1 - switch to the Nearest tab.
- 2 - switch to the Departure tab.
- 3 - switch to the Arrival tab.
- 4 - switch to the Alternate tab.
- ↑/↓ - scroll content with small increments (20 px).
- Page Up/Page Down - scroll the content by one visible screen.
- Esc - close the window.
Settings Dialog
From the "Which Runway" -> "Settings..." menu, you can open the global settings window. The following options are available:
Max range for nearest METAR in NM
– here you can specify, in nautical miles, how far away the nearest METAR will be searched if the airport does not have its own METAR. The default value is 30 NM.Preferred runways at the airport
– here you can enable/disable the use of preferred runways by the airport (ICAO.rwyuse.xml
files). This is enabled by default. If you disable this option, the preferred runways at the airport will not be included at all (even if they exist), and the add-on will always display runways sorted by best headwind.