- JoinFS-FSX requires .NET Framework 3.5. (Can be enabled in Control Panel -> Programs -> Programs And Features -> Turn Windows Features On And Off)
- JoinFS-FSX from CD requires FSX Service Pack 2.
- JoinFS-XPLANE requires Microsoft C++ 64-bit libraries. Install from the JoinFS settings window.
- JoinFS-SERVER requires .NET 6.0 Runtime from Microsoft.
- JoinFS-CONSOLE on Windows requires .NET 6.0 Runtime from Microsoft.
- JoinFS-CONSOLE on Linux requires .NET 6.0 Runtime from Microsoft. Instructions for Debian or Raspberry Pi
- If you want others to connect directly to your session, you will need to enable Port Forwarding on your router for port 6112, UDP-Only. You may choose another port within the JoinFS Settings window.
- In FSX and P3D, aircraft may appear to stutter at very high frame rates. If so, it is recommended that you limit your frame rate to around 35 for smooth movement. The cause of this is outside of JoinFS control.
YouTube Tutorial Series
- Click 'About' on the left of this page and click on 'Download JoinFS' to save JoinFS on your computer.
- Open the downloaded file and follow the instructions to install JoinFS.
- Launch your flight simulator.
- X-Plane only - you must start a flight so that JoinFS can connect.
- Launch JoinFS.
- The first time you launch JoinFS you will be asked to scan your simulator folder for existing models.
- Open the hub list from the menu 'View|Public Hubs'. Click on a hub you would like to join. Right-click and select 'Join'.
- Open the aircraft list from the menu 'View|Aircraft' to show a list of aircraft in the current session.
- If you with to change the model for any aircraft simply click on the aircraft in the list then right-click and select Substitute to choose a different model.
- Connection Buttons
- Indicator Colours
- Creating A Session
- Joining A Session
- Hubs And Servers
- Model Matching And Substitution
- Address Book
- Shared Cockpit
- Map Support And Exporting Live Data To A 'whazzup.txt' File
- Command Line Options
- Public Wifi Connections
- Press the 'Simulator' button at any time to connect or disconnect the simulator.
- Press the 'Network' button to join the specified address or if currently connected it will disconnect from the session.
Some JoinFS windows use colours to indicate current activity.
- 'Active' (green) indicates that something has successfully been activated. For example, a connection or injection of simulator objects.
- 'Waiting' (orange) indicates that something is being processed before becoming active. For example, in the process of connecting or waiting for objects to be injected.
- 'Inactive' (red) indicates that something is either not active or something has failed to become active. For example, an object failed to be injected into the simulator.
These indicator colours can be configured from the menu 'File|Settings'.
JoinFS uses a unique address to allow people to connect directly to each other or join existing sessions. The 'Join' box on the main window will accept either a JoinFS address, an IP address or a domain name, where a JoinFS session is running.
JoinFS Unique Address
This is a proprietary address consisting of two five digit number, for example '12345 12345'. This is a useful format because it hides your actual internet IP address and provides a level of security when publicising your address, for example, in screenshots and on public forums. Your own unique address is shown in the 'Me' box on the main window. Other people can always join you at your address regardless of whether you are the creator of the session or not.
This is the standard IP internet address in the format 'x.x.x.x' where x is a number 0-255. If you know the IP address of another JoinFS instance you can join it by specifying this address.
Domain Name Address
This is the standard internet domain name that uses readable text, for example, 'myserver.net'. If someone has set up a domain name for their JoinFS instance or a hub you can join it by specifying this address.
All of the following examples are valid address formats. Some are using port 7000 and the others default to 6112.
32242 02397 7000
The following requirements are necessary for X-Plane users.
- Connecting to X-Plane requires the installation of a small JoinFS plugin. The plugin can be installed easily from the JoinFS settings window. In JoinFS, from the menu, select 'File|Settings', and click 'Install Plugin'. You will be asked for the root X-Plane folder.
- If the plugin does not show in X-Plane then you might need a particular C++ library. In JoinFS File|Settings, click 'Install C++ 2017', or go directly to Microsoft, Click 'Download' and select 'vcredist_x64.exe'.
- To allow other aircraft to show on the map and other TCAS systems you may need to disable other plugins that also try to access the X-Plane aircraft in order for JoinFS to work correctly. From the X-Plane plugin menu you can enable/disable plugins as required.
- JoinFS will only connect to X-Plane after the flight has finished loading. It will not connect if X-Plane is in the menu system because the X-Plane plugins are not processed.
To remove the plugin, use Windows File Explorer and navigate to the X-Plane installation folder. Inside 'Resources/plugins', delete the JoinFS folder.
Creating A Session
Unlike FSX multiplayer, JoinFS has no concept of a host. JoinFS uses a peer to peer network architecture. The original creator of any session can leave at any time and the session will continue as normal with the remaining pilots. Users can join a session by specifying the address of any user in the session. There are two ways to create a session:
- Create a private session by pressing the 'Create' button. Then click on your 'Me' address, which will be copied to the Windows clipboard. You can then paste (ctrl+v) the address, for example, into TeamSpeak, to let others know who to join.
- Create a publicly advertised session from the menu, File|Settings. Tick the 'Hub Mode' box and fill in the details as necessary. You can specify the IP address or, if you wish, use a domain name for the hub address.
Joining A Session
You can join a JoinFS session by connecting to any of the participants in that session (it does not have to be the original creator). You may also join a special type of JoinFS instance called a hub. These are advertised and shown in the hub list, see 'View|Public Hubs'. There are three ways to join a session:
- Enter the known address with optional port number.
- From the menu, select 'View|Public Hubs'. In the hub list window, select a hub, right click and choose 'Join'.
- From the menu, select 'File|Address Book', select a previously saved address, right click and choose 'Join'.
JoinFS will always remember your previous connection so when launching JoinFS you can just click 'Join' to immediately connect to that session.
Information About The Session
- The number of pilots in the current session is displayed on the main interface.
- From the menu, 'View|Session' will show a list of the other nodes in the JoinFS session along with some routing information.
- From the menu, 'View|Aircraft' will show a list of the aircraft in the simulator. Showing callsign, model, a button to change the model and options for selecting which aircraft should be broadcast over the network, or recorded by the recorder.
- From the menu, 'View|Monitor' will show informative messages from JoinFS that may help resolve any problems.
Hubs And Servers
JoinFS uses a peer-to-peer network topology. So by design there is no server or central controlling software. A single build of JoinFS can run anywhere on a private or public network such as the internet. JoinFS nodes communicate with each other as a group to form a session. However, you can configure your JoinFS node to be a special type of node called a hub. A hub is public and can be viewed by anyone by opening the hubs window from the menu 'View|Public Hubs'. It is a convenient way to find new groups to fly with and provide common meeting places for established online flying clubs.
All hubs stay in contact with each other and maintain a distributed hub list. This hub list is automatically propagated between hubs and is updated for every JoinFS node. You can configure your own hub with a chosen name, information about the hub, details of an accessible voice server and some extra details about when group flights and events are likely to take place.
JoinFS uses minimal hardware and bandwidth resources so a hub can easily be run on any server or smaller device as required. Up to four hubs can be launched on the same machine and up to four hubs can be running behind the same router and internet IP address.
Creating A Hub
In the JoinFS menu, select 'File|Settings'. Tick the option to 'Enable Hub Mode' and specify a hub name. The other hub information is optional. Click OK. The JoinFS client will now be in hub mode and after a few minutes should appear in other people's hub list.
Similar to creating a normal session you will likely need to configure your internet router to allow port forwarding on the desired port (default 6112), UDP-only, to your local machine with a static IP address. Click for more details on port forwarding.
Model Matching And Substitution
JoinFS allows you to substitute any aircraft model in the simulator for a different one. This has a number of advantages.
- If another person is flying an aircraft that you do not have installed then an alternative can be used.
- If another person is using a different simulator to you then an alternative is needed.
- If you want to display a different livery for a particular aircraft.
- If you want other people to see you in a different aircraft or livery to the one you are actually using - 'Masquerading'.
If you have not already done so, select 'File|Scan For Models' from the menu to build an internal list of available aircraft in your simulator. Further scans will be required when you install or remove add-on aircraft. If you use Tacpack from VRS Simulations, be sure to include the 'Misc' folder in the scan. This can be automated, every time JoinFS is launched, from the menu 'File|Settings' and the 'Scan models at start' option. A model can be changed at any time from the aircraft list, see menu 'View|Aircraft'. Click on the aircraft then right-click and choose Substitute. You will be presented with the following form.
This form shows the model that is to be replaced at the top and the substituted model at the bottom. Use the two drop down list boxes in the middle to choose the type and variation of the replacement model. When confirmed by clicking the OK button, the models will be updated instantly in the simulator. JoinFS will remember all of your substitutions and at any time you can view and modify substitutions from the menu, 'File|Model Matching'. You will be presented with the following form.
In the model matching window notice that there are a set of default substitutions for each aircraft typerole. For example, single propellor, twin propellor etc. You can change these defaults as required. The default models are used according to the following rules.
Every time an aircraft is injected into the simulator the following rules are followed, in this order, to decide which model is used to represent the aircraft.
- Substitution. If you have already configured a substitution for that model then it will use that. Aircraft list will show the suffix '(S)'.
- Exact Match. If you have the exact model and livery in your own simulator then it will use that. Aircraft list will not show a suffix.
- Automatic. Using the model name, JoinFS will attempt to find a similar name in the model list and use that. Aircraft list will show the suffix '(A)'.
- Default. The typerole default will be used. Typerole defaults can be configured from the menu 'File|Model Matching'. Aircraft list will show the suffix '(D)'.
- Fallback. If all the above fail then the first entry in the model list will be used. Aircraft list will show the suffix '(D)'.
In addition to updating the aircraft positional information JoinFS also synchronizes aircraft data between different simulators. In Microsoft simulators these are known as 'SimVars' and the information can be found in various places such as the Asobo website. In X-Plane they are called 'DataRefs', these are published on the X-Plane website.
JoinFS allows you to synchronize any of these variables as long as you carefully observe the details as published in the above links. All JoinFS sychronized variables are organized into lists and configured within text files inside the folder '[User]\Documents\JoinFS\Variables'. Each text file contains a list of variable information with each variable on a separate line and specified using the format described below.
To make this synchronization as flexible as possible these variable list files can be assigned to any aircraft model in any of the supported simulators. This means that if you have a particular add-on aircraft with specialized features you can synchronize its data with other aircraft in the same JoinFS session, or you may wish to synchronize any parts of the aircraft that are not currently synchronized by default. The default variables are listed in auto-generated files that JoinFS uses for every aircraft.
Variable File Format
Each line in a variable text file needs to be formatted with each part separated by the pipe character '|' as follows:
TYPE|DATAREF NAME|SIMCONNECT NAME|SIMCONNECT UNITS|SIMCONNECT EVENT|OPTION1|OPTION2...
TYPE is either 'INTEGER' or 'FLOAT'
DATAREF NAME is the X-Plane DataRef, for example, 'sim/cockpit/electrical/battery_on'
SIMCONNECT NAME is the SimConnect variable, for example, 'ELECTRICAL MASTER BATTERY'
SIMCONNECT UNITS is the SimConnect variable unit, for example, 'bool'
SIMCONNECT EVENT is an SimConnect event name, for example, 'TOGGLE_MASTER_BATTERY'
OPTION1/2 are extra JoinFS options to modify the variable behaviour.
An example line to sync the master battery switch is:
INTEGER|sim/cockpit/electrical/battery_on|ELECTRICAL MASTER BATTERY|bool|TOGGLE_MASTER_BATTERY
The type tells JoinFS how the value is stored and passed around internally and is usually determined by the simulator data type. Integers are whole numbers, for example, 1, 5, 1000. Floats are real numbers, for example, 0.3, 5.25, 1234.333.
DataRef values can be found at the X-Plane website, or found using this online resource.
SimConnect variable names can be found at the Asobo website or the Prepar3D website.
Each SimConnect variable can be obtained in different units. The links above show the units necessary for each variable. However you can also specify alternative units as long as the measurements are compatible. For example, something listed as inches could be obtained in metres instead.
The SimConnect event is optional and can be omitted from the line if necessary. When JoinFS reads and writes SimConnect variables to the simulator, some variables are read-only, in which case it may be possible to set them using an event instead. If possible, try to use the event to change a variable even if the variable is specified as writable. This seems to work more effectively.
The only current extra options is 'PILOT'. In shared cockpit mode this will force only the pilot's variables to be effective. Changes made on the non-pilot side will be ignored. Without the PILOT option, the default JoinFS behaviour is that all users in the same cockpit can modify the variable and all the others will see the change.
Recommendations For Modifying Variables
Inspect the default variable files listed above and they should give you a good idea how lots of different types of data can be synchronized.
In the monitor window, enable the 'Variables' option. This will track all variable changes in the monitor window.
Try to change or add one variable at a time. Test the changes and check the monitor window looking out for errors, particularly SimConnect exceptions. These can be somewhat cryptic and it might need some experimentation to fix a problem or get a variable working.
As you can see from the file format, variables can be synced across different simulators by defining a variable on one line. If you want to synchronize only on one platform simply omit the DataRef name or the SimConnect name. For example the following two lines
will mean that the master battery will be synchronized between two users using Microsoft simulator or two users using X-Plane, but it will not synchronize between those platforms. Notice the two pipe characters '||' indicating an omitted value.
INTEGER||ELECTRICAL MASTER BATTERY|bool|TOGGLE_MASTER_BATTERY
The address book 'File|Address Book' is where you can manage your saved addresses. This is ideal when you connect to another client or hub on a regular basis. For example, flying with a club or frequently with friends then adding an address allows you to quickly join up at any time. You can join a session, edit, remove or add an address using the right-click menu.
|Name||The name of this entry. For example a hub or friend's name.|
|Address||The address for connecting to the session. Can be any of the addresses supported by JoinFS.|
|Status||Shows which addresses are actively online. A green 'Online' or 'Online Hub' means the remote client is active. Orange means they are not online or you are unable to connect.|
Click the small down arrow on the right of the 'Join' box on the main window to show all of the entries in the address book.
JoinFS is able to record the aircraft positions and flight data for any aircraft in the simulator or in the current session. The Recorder menu has the following options:
- Record New - Start a new recording of the aircraft from their current positions.
- Overdub - Start playing the existing recording, and at the same time overlay new recordings of the current aircraft. You may also start overdub at any time while the recorder is playing.
- Play - Play back the current recording.
- Stop - Stop both recording and playing.
You may choose which aircraft you wish to record by opening 'View|Aircraft' and ticking the 'Record' box on the aircraft you wish to record. Your own aircraft and network aircraft are enabled to record by default.
Play back a recording over the network
As well as playing back the aircraft in your own simulator you can choose to broadcast them over the network to other people in the session. This allows you, as a group, to fly in formation with previously recorded flights. To choose which aircraft are sent over the network, go to 'View|Aircraft' and tick the Broadcast box on the aircraft that you wish to broadcast over the network. By default, recorded aircraft are automatically enabled for broadcast.
Building your own formation
An interesting feature of the recorder is overdub button. This allows you to incrementally add aircraft to the recording. Start by making a new recording with one aircraft, and then use the overdub button to start adding more aircraft onto the formation.
Save a recording to disk
Once you are happy with your recording you can save it to disk at any time from the menu, 'File|Save Recording'. To load a previous recording choose 'File|Open Recording'.
There are several windows in JoinFS that provide useful information about what is currently happening on the JoinFS network. They can be opened from the 'View' menu on the main JoinFS window.
Public Hubs Window
Shows the list of known public hubs that other people are running, usually on a permanent server. The list includes information about the hub, how many clients are connected, how many aircraft and other objects are in the session. Click on a hub in the list and further details are shown in the box below the list. To join the hub, click the Join button below the details.
|Name||Name of the hub.|
|Status||Online status of the hub. A green cell with 'Online' means that the hub is active and can be joined. Orange means the hub is offline or cannot be contacted.|
|Users||Number of JoinFS clients connected to the session.|
|Aircraft||The total number of aircraft in the session.|
|ATC||If ATC is available the main airport code is shown.|
|Save||Click this box to add or remove this hub from the address book.|
|Ignore||Click this box if you do not wish to see this hub appear in the list.|
|Version||The version of JoinFS this hub is running.|
|About||A short description about activities at this hub.|
|Voice Server||Details of where to connect for voice communications.|
|Next Event||Details of the next group flight or even.|
The session window shows details about all users in the current session. There is also an option at the bottom right of the window to show all users flying on the public hub network. It usually takes a minute or two for those public users to be updated. Users in your current session are updated more frequently and will show extra details.
|Nickname||The chosen nickname of the user.|
|Callsign||The callsign of the user's aircraft.|
|Aircraft||The total number of aircraft that the user is broadcasting in the session.|
|Objects||The total number of carriers and other objects that the user is broadcasting in the session.|
|Permissions||Shows the current permissions that have been granted by you to this user. 'C' - allow cockpit entry, 'F' - they have flight control of your aircraft, 'E' - engine controls, 'O' - other controls.|
|Ignore||Click this cell if you do not wish to see any aircraft/objects from this owner in future. Objects from ignored people will not show in the list or in the simulator.|
|Port||Shows the remote network port that user is using.|
|ID||A unique number to identify the user.|
|Route||Shows the routing status. 'Direct' - there is a direct connection to the user, otherwise the ID of a user where the connection is being rerouted.|
|Connected||Is there an active connection to the user?|
|Latency||The total round trip time between your client and the user's client.|
To edit the permissions for a user, click the Permissions button below the list.
The aircraft window shows details about all aircraft in the current session. There is also an option at the bottom right of the window to show all aircraft flying on the public hub network. It usually takes a minute or two for those public aircraft to be updated. Aircraft in your current session are updated more frequently and will show extra details.
|Owner||The nickname/callsign of the owner of the aircraft. A JoinFS client can broadcast multiple aircraft over the network. Suffix: '(R)' for recorded aircraft, '(A)' for AI aircraft.|
|Model||The title name of the model used to represent the aircraft in the simulator. This can be changed at any time using the Substitute button below the list. Substitution suffix: '(S)' for custom, '(A)' for automatic, '(D)' for default role-type.|
|Distance||Distance from your aircraft in the simulator.|
|Weather||Click on the cell to get regular weather updates from that aircraft.|
|Broadcast||Click on the cell for your own aircraft to enable/disable sending that aircraft across the network. If disabled then others will not see your aircraft.|
|Record||Click on these cells to determine which aircraft will be recorded when you start a recording/overdub.|
|Com 1||Com 1 radio frequency.|
|Com 2||Com 2 radio frequency.|
|Rules||Flight rules: IFR or VFR.|
|From||Departure airport code.|
|To||Arrival airport code.|
|Bearing||Where the aircraft is in relation to your aircraft.|
|GS||Ground speed of the aircraft.|
|Wind||Current wind strength and direction affecting the aircraft. In METAR format.|
|Ignore||Click this cell if you do not wish to see any aircraft/objects from this owner in future. Aircraft from ignored people will not show in the list or in the simulator.|
The objects window shows details about all other non-aircraft simulator objects available in the current session. From this window you can choose to broadcast objects across the network, for example, aircraft carriers or service vehicles. You can also see the objects that other people in the network are broadcasting.
|Owner||The nickname/callsign of the owner of the object. A JoinFS client can broadcast multiple objects over the network.|
|Model||The title name of the model used to represent the object in the simulator. This can be changed at any time using the Substitute button below the list. Substitution suffix: '(S)' for custom, '(A)' for automatic, '(D)' for default role-type.|
|Count||If the objects are grouped by model type using the box at the bottom right then this column shows the total number of objects of that model type.|
|Bearing||Where the object is in relation to your aircraft.|
|Distance||Distance from your aircraft in the simulator.|
|Broadcast||Click on the cell for your own objects to enable/disable sending that object or model type across the network. If disabled then others will not see your object.|
|Ignore Owner||Click this cell if you do not wish to see any aircraft/objects from this owner in future. Objects from ignored people will not show in the list or in the simulator.|
|Ignore Model||Click this cell if you do not wish to see any objects of this model type. Objects of this model type will not show in the list or in the simulator.|
Sometimes the size of the object list can become overwhelming, so you can group them by clicking the option at the bottom right of the window.
The monitor window is for diagnostics and debugging of JoinFS. It shows warnings and error messages and also information about operational events from JoinFS, such and connections being established and so on. There is an option below the output box that allows you to save the output to a file. Click the View Logs button to view the current and previous log files.
JoinFS includes its own method of sharing cockpits with other pilots. There is no restriction on which aircraft type you need to select when joining another cockpit. However, if your aircraft is significantly different then you are likely to experience some odd aircraft behavior. The advantage is that you can choose a similar type or aircraft by a different publisher and still be able to share the cockpit.
To enter the cockpit of another aircraft you must have permission from the owner of that aircraft. The exception is if you are entering a recorded aircraft that you own. The aircraft owner can allow you permission to enter the cockpit and can also hand over different sets of controls to different co-pilots. Controls are divided into three separate groups: 'flight', 'engine' and 'other'. You can decide to hand over any or all of these groups.
JoinFS supports an unlimited number of co-pilots/passengers in one aircraft.
Procedure For Sharing The Cockpit
Pilot A wants to enter the aircraft of pilot B.
- Both pilots A and B run JoinFS and join the same session.
- Both pilots A and B choose the same aircraft in the simulator. (This is preferable but not enforced)
- Pilot B opens the user list from the menu, 'View|Users'.
- Pilot B selects pilot A.
- Pilot B clicks the 'Permissions...' button.
- Pilot B ticks the 'Allow cockpit entry' option and the desired hand over options.
- Pilot B clicks OK to confirm.
- Pilot A opens the aircraft list from the menu, 'View|Aircraft'.
- Pilot A selects pilot B's aircraft.
- Pilot A clicks the 'Enter Cockpit' button.
- Pilot A and B are now linked and sharing.
- Further pilots can also join pilot B's aircraft by using the same steps above.
Map Support And Exporting Live Data To A 'whazzup.txt' File
Aircraft position information can be accessed in real time by enabling the whazzup option in the JoinFS Settings. Using the standard whazzup.txt file format this data can then be read by other applications and used to generate online maps or any number of other interesting uses. The file is written to the Windows user folder AppData/Local/JoinFS/whazzup.txt.
An additional option allow the inclusion of AI aircraft and also all aircraft listed on public Hubs. However, the latter aircraft will only be updated once a minute or so.
Command Line Options
The following options can be used when launching from a command line, which provides a way to automate certain features. For example, to create a desktop shortcut that always connects to a favorite server, copy and paste the installed JoinFS shortcut, right-click the shortcut and select properties; in the target box, append the required options, such as 'C:\Program Files (x86)\JoinFS (TEST)\JoinFS.exe -nickname "Bob" -join myhub.com'.
If you have any problems connecting or seeing other objects, try the following checks:
- Check the main JoinFS window and make sure that both the 'Simulator' and 'Network' buttons are green. If any are not green, click the button.
- While connected to the simulator go to the menu and select 'File|Scan For Models'. This will update JoinFS with the latest models in the simulator. It should report the number of models found. Make sure you add any other model folders that you have to the 'Additional Folders' box.
- Open the user list from the menu 'View|Users'.
- Look at the list to make sure that you see everyone you expect to see.
- Look at the 'Connected' column - it should say 'Yes' and be green.
- Look at the 'Ignore' column - it should be unticked if you with to see that user's objects.
- Open the aircraft list from the menu, 'View|Aircraft'.
- Look at the list to make sure that you see all the aircraft you expect to see.
- Look at the 'Distance' column. See if the distance is what you expected. If it is not highlighted green, check the 'Circle Of Activity' setting from the menu 'File|Settings'. Also make sure that the ignore option in the aircraft details, below the list, is unticked.
- Look at the 'Model' column. A letter in brackets after the model shows the type of substitution. See Aircraft View. Click on the 'Substitute' button to change the model displayed.
- You can quickly view any aircraft in the simulator, usually by right-clicking in the simulator window and selecting the traffic to view them. This will quickly allow you to see if an aircraft is there.
- If there are still problems then check the log window from the menu, 'View|Monitor'. Look for anything unusual. If you need help with the log, click the save option, click 'View Logs' and contact the support forum.
Sometimes a connection issue can be fixed using this quick re-connection procedure. Click the simulator button twice and then the network button twice. If a problem still persists then see the JoinFS forum.
Public Wifi Connections
If connecting from a public wifi point and you are experiencing problems connecting with JoinFS then you may need to use VPN software such as Windscribe on your device before using JoinFS.