Skip to main content

CPDLC Server

Server Diagram

The server maintains one or more connections to upstream ACARS networks (i.e. Hoppies). Each connection simulates a single air traffic service unit (ATSU), such as Brisbane (YBBB) or Melbourne (YMMM). The server will relay CPDLC messages to the upstream ACARS network, allowing pilots to connect to a single ATS unit and communicate with all enroute controllers within that unit.

The server also allows for multiple connections upstream ACARS networks, enabling ATC to communicate with aircraft on different ACARS networks (Hoppies, FSDLP, etc.) or aggregate messages across multiple ATSUs.

Deployment

Deploy your own CPDLC Server instance to DigitalOcean:

Deploy to DigitalOcean

After deployment, configure the following environment variables in the DigitalOcean dashboard:

  • Acars__0__StationIdentifier: Your station identifier (e.g., YBBB)
  • Acars__0__AuthenticationCode: Your Hoppie ACARS authentication code

Prerequisites

Before running the CPDLC Server, ensure you have:

Configuration

The server can be configured using environment variables. Copy example.env to .env and update with your settings:

# Logging
Logging__Level=Information

# ACARS Client Configuration
Acars__0__Type=Hoppie
Acars__0__FlightSimulationNetwork=VATSIM
Acars__0__StationIdentifier=YBBB
Acars__0__Url=http://www.hoppie.nl/acars/system/connect.html
Acars__0__AuthenticationCode=your-hoppie-logon-code

# Handoff Configuration
# How many minutes before the expected transfer time to send the NEXT DATA AUTHORITY message (default: 10)
Handoff__NotificationLeadTime=10

Multiple ACARS Connections

You can configure multiple ACARS clients by incrementing the index (Acars__1__, Acars__2__, etc.). This is useful when serving multiple ATSUs (e.g., YBBB and YMMM)

Example configuration for multiple connections:

# Brisbane FIR
Acars__0__Type=Hoppie
Acars__0__FlightSimulationNetwork=VATSIM
Acars__0__StationIdentifier=YBBB
Acars__0__Url=http://www.hoppie.nl/acars/system/connect.html
Acars__0__AuthenticationCode=your-ybbb-hoppie-code

# Melbourne FIR
Acars__1__Type=Hoppie
Acars__1__FlightSimulationNetwork=VATSIM
Acars__1__StationIdentifier=YMMM
Acars__1__Url=http://www.hoppie.nl/acars/system/connect.html
Acars__1__AuthenticationCode=your-ymmm-hoppie-code
note

Hoppie is currently the only supported ACARS network type.

Running

Docker

docker-compose up

The server will be available at http://localhost:5272.

Local Development

dotnet run --project source/CPDLCServer/CPDLCServer.csproj

The server will start on http://localhost:5261.