Connecting to a FSD server

Pre-login identification (VATSIM only)

Note: IVAO does not implement this form of identification. The client initiates communication after the TCP connection is established (see the "Login" section).

Server

Once the connection is established, the server identifies itself using the $DI prefix:

$DISERVER:CLIENT:VATSIM FSD V3.13:(token)

(token) is a 22-character hexadecimal string that changes on every login. The mechanism behind its generation is unknown.

Client

The client must then identify itself using the $ID prefix before continuing:

$ID(callsign):SERVER:(client id):(client string):3:2:(network ID):(num)
Field Description
(callsign) The callsign to log in as.
(client id) A 4-character hexadecimal string that identifies the client. See next subsection for details.
(client string) A human-readable string that identifies the client in use.
(network ID) VATSIM CID.
(num) A user-unique signed 9-digit number. It is unclear if it is linked to the client's hardware.

Client ID and string

VATSIM servers appear to contain a whitelist of client IDs. Connections using non-whitelisted client IDs will be closed by the server:

$ERserver:unknown:016::Unauthorized client software

The client string is not used by the server to identify the client software. It is merely a human-readable string for readability purposes.

The following are a list of known client IDs:

Client ID Client string
69d7 EuroScope 3.2
88e4 vPilot
48e2 Swift
de1e VRC

Login

The format varies slightly between pilots and ATC:

ATC

#AA(callsign):SERVER:(full name):(network ID):(password):(num1):(protocol version)

The meaning of the following fields is unclear:

Field Examples Possible meaning
(num1) 1, 12 ATC rating

Pilot

#AP(callsign):SERVER:(network ID):(password):(num1):(protocol version):(num2):(full name ICAO)

The meaning of the following fields is unclear:

Field Examples Possible meaning
(num1) 1, 11 Pilot rating
(num2) 2, 30 Unknown

Post-login

Message of the Day

If the login is successful, the server returns a pre-defined message, encoded as private messages sent from SERVER.

IVAO

#TMSERVER:(callsign):IVAO FSD Server B.06k - (c)1996-2016 Filip Jonckers, Kenny Moens, Ken Andries - limited license, usage granted to International Virtual Aviation Organisation VZW
#TMSERVER:(callsign):Welcome to the IVAO - Europe (a) - Network Server
#TMSERVER:(callsign):Please visit www.ivao.aero for further info.
#TMSERVER:(callsign):You are now online and connected, have fun.
#TMSERVER:(callsign):You are (b)
Field Information
(a) IVAO server number (e.g. 4 for EU4)
(b) User's ATC or Pilot rating; e.g. Pilot Rating FS3, ATC Rating AS3

VATSIM

#TMserver:(callsign):By using your VATSIM assigned identification number on this server you 
#TMserver:(callsign):hereby agree to the terms of the VATSIM Code of Regulations and the 
#TMserver:(callsign):VATSIM User Agreement and the VATSIM Code of Conduct which may be viewed 
#TMserver:(callsign):at http://www.vatsim.net/network/docs/ 
#TMserver:(callsign):All logins are tracked and identification numbers are recorded. 
#TMserver:(callsign):Users must enter their real full first names and surnames when logging 
#TMserver:(callsign):onto any of the VATSIM.net servers. 

Post-login setup

IVAO

The client then provides information to the server about itself:

!C(callsign):SERVER:(rating):(num1):(client):(client version):(num2)
Field Description
(callsign) User's callsign.
(rating) User's rating, as an integer (see "Terms Used" under "Introduction")
(num1) Unknown.
(client) Name of the client; e.g. IvAp.
(client version) Client version; e.g. 2.0.2
(num2) Unknown.

The server replies with some information about the client:

!RSERVER:(callsign):(rating):(num1):(rating):(num2):(client IP address)

The meaning of (num1) and (num2) is unclear. They are different from (num1) and (num2) in the packet sent before this response.

ATC

Prior to the above-mentioned !C packet, ATC clients provide an additional packet on the controller's airfield:

&D(callsign):SERVER:0:(airport ICAO)
Pilot

After the !C packet, the client sends some additional info:

$NV(callsign):SERVER:(callsign):1
-PD(callsign):SERVER:(MTL model name)
-MD(callsign):SERVER:13
&R(callsign):SERVER:0
-RF(callsign):SERVER:3:3

The meaning of the trailing numbers is unclear.

VATSIM

The server requests information on the client's capabilities:

ATC

Server request:

$CQSERVER:(callsign):CAPS
$CRSERVER:(callsign):ATC:N:(callsign)
$CRSERVER:(callsign):CAPS:ATCINFO=1:SECPOS=1
$CRSERVER:(callsign):IP:(client IP address)

The N on the second line may indicate the server indicating that the client is not providing ATC services.

Client response:

$CR(callsign):SERVER:CAPS:ATCINFO=1:SECPOS=1:MODELDESC=1:ONGOINGCOORD=1
Pilot

Server request:

$CQSERVER:(callsign):CAPS
$CRSERVER:(callsign):IP:(client IP address)
$ERserver:(callsign):008:(callsign):No flightplan

Client response:

$CR(callsign):SERVER:CAPS:VERSION=1:ATCINFO=1:MODELDESC=1:ACCONFIG=1