Simulator GPS/Traffic/Attitude Integration

If you are the developer of a flight simulator and would like to integrate its GPS and/or traffic feed into ForeFlight Mobile (v5.2 or newer), this page describes how. ForeFlight Mobile 6.0 added an Attitude Indicator to show pitch/bank.

The simulator will need to send GPS info packets on UDP port 49002 once per second in the form of a string message like this:

XGPSMy Sim,-80.11,34.55,1200.1,359.05,55.6

The "words" are separated by a comma (no word may contain a comma). The required words are:

XGPS followed by a name/ID of the simulator type sending the data (that might be "My Sim" without quotes)

  • Longitude
  • Latitude
  • Altitude in meters MSL
  • Track-along-ground from true north, positive value
  • Groundspeed in meters/sec

XGPS messages should come in at 1Hz (one per second, evenly spaced in time). There is a maximum size limit for the message, so don't use a very long name as part of the XGPS word. 2-3 decimals of precision is appropriate for the lat/lon and track values. Speed and altitude are fine with just 1 decimal of precision.

For traffic data, the simulator will need to send packets in the form of a string message like this:

XTRAFFICMy Sim,168,33.85397339,-118.32486725,3749.9,-213.0,1,68.2,126.0,KS6

The "words" are separated by a comma (no word may contain a comma). The required words are:

  • XTRAFFIC followed by a name/ID of the simulator type sending the data (that might be "My Sim" without quotes)
  • ICAO address, an integer ID
  • Traffic latitude - float
  • Traffic longitude - float
  • Traffic geometric altitude - float (feet)
  • Traffic vertical speed - float (ft/min)
  • Airborne boolean flag - 1 or 0: 1=airborne; 0=surface
  • Track - float, positive, degrees true
  • Velocity knots - float
  • Callsign - string

There is a maximum size limit for the message, so don't use a very long name as part of the XTRAFFIC word. 2-3 decimals of precision is appropriate for the lat/lon and track values. Speed and altitude are fine with just 1 decimal of precision.

For attitude data, the simulator will need to send packets in the form of a string message like this (at 4-10Hz rate, evenly spaced in time):

XATTMy Sim,180.2,0.1,0.2

The "words" are separated by a comma (no word may contain a comma). The required words are:

  • XATT followed by a name/ID of the simulator type sending the data (that might be "My Sim" without quotes)
  • True Heading - float
  • Pitch - degrees, float, up is positive
  • Roll - degrees, float, right is positive

Sending a broadcast packet, which will be seen by all iPads on the network, is a nice way to prevent the user from having to provide the IP address of their iPad. However, that transmission method is not appropriate for all simulator setups or network/firewall configurations.