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.4.0, October 21, 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 or manual configuration if used for Basic Weather.
The add-on fully recognizes your weather usage, including the following configurations:
- Real-time METARs ("Live Data" scenario).
- Weather scenarios with an offline METAR.
- Basic Weather with Manual Configuration (without a METAR).
Real-time METARs
Using real weather conditions is the best option for this add-on, and the most realistic. With "Live Data" scenario, the add-on retrieves the METAR for a given airport and obtains weather information from it.
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 in FlightGear 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.
The METAR will be updated automatically every 15 minutes by FlightGear's mechanisms or by using the "Load"/"Update METAR" buttons.
Weather scenarios with an offline METAR
If you choose the offline weather scenario, the same METAR will be used for all airports. The add-on will display a warning that the METAR is from offline scenario.
Basic Weather with Manual Configuration
With this configuration, METAR is not used, but weather conditions, such as QNH pressure, wind direction and speed, are taken from the manual configuration. Therefore, weather conditions are still available and are the same for all airports (Basic Weather with manual configuration it's a global weather).
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.xmlin current tab. However, you can always uncheck this option, which means disabling therwyuse.xmlfile, 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.xmlfile. Therefore, first make sure you have the correct aircraft type set:Commercial– airliners,General Aviation,Ultralight,Military.- Not all airports have schedules for
UltralightandMilitary. IfUltralightis not present,Generalwill be used, even thoughUltralightis selected. IfMilitaryis not present,Commercialwill be used. And ifGeneralis not specified,Commercialwill 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,
takeoffis selected and cannot be changed. For "Arrival",landingis 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.xmlfile that corresponds to the given UTC time and aircraft/traffic. Ifn/ais 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.xmlfile 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 the content by 1/20 visible screen.
- 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.xmlfiles). 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.Set thresholds for HW, XW and TW– the figure shows how the headwind, crosswind, and tailwind zones are set. By default, the add-on will consider a wind to be a headwind if it blows from a direction within 45° of the aircraft's nose. It will then consider a crosswind if it blows from a direction between 45° and 90° (from both the right and left). Any wind direction beyond 90° will be considered a tailwind.
Below are the controls for changing these angles. The "<" and ">" buttons change the angle by 1°, and the "<<" and ">>" buttons change the angle by 5°. The "Default" button resets the settings to 45° for HW and 90° for XW.
These settings do not affect the selection of runways, but only affect the information about whether the wind is considered headwind, crosswind, or tailwind.
Settings are saved to the FlightGear $FG_HOME/autosave_{version}.xml file. This saving only occurs when you properly close FlightGear via the "File" -> "Exit" menu.
