> ## Documentation Index
> Fetch the complete documentation index at: https://docs.canadava.com/llms.txt
> Use this file to discover all available pages before exploring further.

# ATC Interaction

> How ATC positions work on VATSIM - controller types, top-down coverage, handoff procedures, squawk codes, and complete scenario walkthroughs

export const RadioExchange = ({exchanges, title}) => <div className="radio-exchange">
    {title && <div className="radio-exchange-title">{title}</div>}
    <div className="radio-exchange-body">
      {exchanges.map((ex, i) => <div key={i} className={`radio-line radio-line-${ex.from?.toLowerCase()}`}>
          <span className="radio-tag">{ex.from}</span>
          <span className="radio-msg">{ex.msg}</span>
        </div>)}
    </div>
  </div>;

Understanding how ATC works on VATSIM is essential for every pilot. This page covers the different controller positions, how top-down coverage works, the handoff process, squawk codes, and complete scenario walkthroughs for different staffing situations.

## ATC Positions

Each ATC position handles a specific part of your flight. Controllers log in with a callsign that includes a **suffix** indicating their position.

| Position             | Suffix        | Typical Frequency | Responsibilities                                                         |
| -------------------- | ------------- | ----------------- | ------------------------------------------------------------------------ |
| Delivery             | \_DEL         | 121.x             | Issues IFR clearances, assigns squawk codes and initial altitude         |
| Ground               | \_GND         | 121.6 - 121.9     | Pushback approval, taxi instructions, gate assignments                   |
| Tower                | \_TWR         | 118.x - 119.x     | Runway operations, takeoff and landing clearances                        |
| Approach / Departure | \_APP / \_DEP | 119.x - 135.x     | Terminal area radar control, vectors, approach clearances, initial climb |
| Center (En Route)    | \_CTR         | 128.x - 135.x     | Cruise altitude control, en route separation, flight level changes       |

<Info>
  On VATSIM, you can identify which controller to contact by looking at the **controller list** in your pilot client. It shows each online controller's position, callsign, frequency, and the area they cover.
</Info>

### How the Positions Work Together

In a fully staffed scenario, you move through ATC positions in this order:

<Steps>
  <Step title="Delivery">
    Get your IFR clearance (route, altitude, squawk code)
  </Step>

  <Step title="Ground">
    Request pushback and taxi to the departure runway
  </Step>

  <Step title="Tower">
    Receive takeoff clearance and depart
  </Step>

  <Step title="Departure">
    Get radar vectors and climb instructions leaving the terminal area
  </Step>

  <Step title="Center">
    Cruise at altitude, possible sector handoffs between Center controllers
  </Step>

  <Step title="Approach">
    Receive descent instructions, vectors, and approach clearance at your destination
  </Step>

  <Step title="Tower">
    Receive landing clearance
  </Step>

  <Step title="Ground">
    Taxi to your gate after landing
  </Step>
</Steps>

## Top-Down Coverage

On VATSIM, you will rarely find every position staffed at an airport. **Top-down coverage** is the principle that a controller covering a higher-level position also handles all lower positions within their airspace.

Here is how it works:

| If Only This Is Online | They Also Cover                                                    |
| ---------------------- | ------------------------------------------------------------------ |
| Center (\_CTR)         | Approach, Tower, Ground, and Delivery for airports in their sector |
| Approach (\_APP)       | Tower, Ground, and Delivery for the airport(s) they cover          |
| Tower (\_TWR)          | Ground and Delivery for their airport                              |
| Ground (\_GND)         | Delivery for their airport                                         |
| Delivery (\_DEL)       | Delivery only                                                      |

<Tip>
  If only **Montreal Center** (CZUL\_CTR) is online, they provide all ATC services for airports within their sector - including clearance delivery, taxi, takeoff, departure, en route, approach, and landing. You contact them on their Center frequency for everything.
</Tip>

### Practical Example

If you are departing Toronto and only **Toronto Center** (CZYZ\_CTR) is online:

1. Contact Center on their frequency for your IFR clearance
2. Contact the same controller for pushback and taxi
3. Contact the same controller when ready for departure
4. The controller handles your entire flight until you leave their sector or they hand you to another controller

The controller may tell you to switch to different frequencies for different phases (for example, a Tower frequency for departure), but you are still talking to the same person.

## Handoff Procedures

A **handoff** is when one controller transfers you to another. This happens at the boundary between controller areas of responsibility.

### Standard Handoff

<RadioExchange
  title="Standard Handoff"
  exchanges={[
{ from: "ATC", msg: "Air Canada 456, contact Toronto Departure 126.4." },
{ from: "PILOT", msg: "Departure 126.4, Air Canada 456." },
]}
/>

Then on the new frequency:

<RadioExchange
  title="Check-in After Handoff"
  exchanges={[
{ from: "PILOT", msg: "Toronto Departure, Air Canada 456, passing 3,000, climbing flight level 350." },
{ from: "ATC", msg: "Air Canada 456, Toronto Departure, radar contact." },
]}
/>

### "Monitor" vs "Contact"

This distinction is critical and catches many new pilots off guard:

| Instruction                            | Action                                                             |
| -------------------------------------- | ------------------------------------------------------------------ |
| **"Contact \[position] \[frequency]"** | Tune the frequency **and call them** with a check-in               |
| **"Monitor \[position] \[frequency]"** | Tune the frequency but **do not call**. Wait for them to call you. |

<Warning>
  If told to **monitor**, do not transmit. The receiving controller knows you are coming and will call you when ready. Transmitting when told to monitor creates unnecessary congestion and may confuse the controller.
</Warning>

## Squawk Codes

Your transponder squawk code identifies your aircraft on ATC radar. ATC assigns you a unique squawk code during your IFR clearance.

### Standard Codes

| Code                           | Meaning                                                               |
| ------------------------------ | --------------------------------------------------------------------- |
| **Assigned code** (e.g., 4521) | Your unique identifier, assigned by ATC during clearance              |
| **2000**                       | Default IFR code (used when no specific code has been assigned yet)   |
| **1200**                       | VFR (visual flight rules) - used when flying VFR without ATC services |
| **7500**                       | Hijack                                                                |
| **7600**                       | Communication failure (lost comms)                                    |
| **7700**                       | Emergency                                                             |

<Warning>
  **Never squawk 7500, 7600, or 7700** unless directed by ATC or you are simulating an emergency with prior ATC permission. These codes trigger immediate alerts and responses. On VATSIM, misuse of emergency codes is a violation of the Code of Conduct.
</Warning>

### Setting Your Squawk Code

1. ATC assigns your squawk code during the IFR clearance (e.g., "Squawk 4521")
2. Enter the code in your transponder panel
3. Set your transponder to **Mode C** (altitude reporting) - this is the standard setting for IFR flights
4. ATC will see your callsign and altitude on their radar scope

<Tip>
  If ATC ever says **"Squawk ident"**, press the IDENT button on your transponder. This makes your radar target flash on the controller's screen, helping them confirm which target is yours.
</Tip>

## When ATC Goes Offline

Controllers on VATSIM are volunteers and may disconnect at any time - their session ended, real life called, or their shift is over. Here is what to do:

<Steps>
  <Step title="Switch to UNICOM">
    Tune to **122.800** (UNICOM frequency)
  </Step>

  <Step title="Announce your position">
    Make a position report on UNICOM so other pilots know where you are
  </Step>

  <Step title="Continue your flight plan">
    Keep flying your filed route at your assigned altitude
  </Step>

  <Step title="Watch for new controllers">
    If a new controller comes online covering your area, they may contact you via text or expect you to check in on their frequency. Your pilot client will typically show a notification.
  </Step>
</Steps>

<RadioExchange
  title="Announcing on UNICOM After ATC Disconnect"
  exchanges={[
{ from: "PILOT", msg: "Montreal traffic, Air Canada 456, flight level 350, direct CYUL, any traffic please advise." },
]}
/>

## Complete Scenario Walkthroughs

<AccordionGroup>
  <Accordion title="Full ATC Staffing (DEL, GND, TWR, DEP, CTR, APP, TWR, GND)">
    This is the ideal scenario with every position staffed. Here is the complete flow from gate to gate.

    **Departure - Toronto (CYYZ)**

    **Step 1: ATIS** - Tune ATIS on COM2. Note the information letter (e.g., Bravo), runway, and altimeter.

    **Step 2: Delivery (CYYZ\_DEL)** - Request IFR clearance on COM1.

    <RadioExchange
      title="Clearance"
      exchanges={[
    { from: "PILOT", msg: "Toronto Delivery, Air Canada 456, gate Charlie 32, request IFR clearance to Montreal with information Bravo." },
    { from: "ATC", msg: "Air Canada 456, cleared to Montreal via DEDKI3 departure, AVSEP transition, flight planned route. Climb via SID, expect flight level 350. Squawk 4521." },
    { from: "PILOT", msg: "Cleared to Montreal, DEDKI3 departure, AVSEP transition, flight planned route. Climb via SID, expect flight level 350, squawk 4521. Air Canada 456." },
    { from: "ATC", msg: "Air Canada 456, readback correct. Contact Ground 121.9 when ready to push." },
  ]}
    />

    **Step 3: Ground (CYYZ\_GND on 121.9)** - Request pushback and taxi.

    <RadioExchange
      title="Pushback and Taxi"
      exchanges={[
    { from: "PILOT", msg: "Toronto Ground, Air Canada 456, gate Charlie 32, request pushback." },
    { from: "ATC", msg: "Air Canada 456, pushback approved, face south." },
    { from: "PILOT", msg: "Pushback approved, facing south, Air Canada 456." },
    { from: "PILOT", msg: "Toronto Ground, Air Canada 456, ready to taxi." },
    { from: "ATC", msg: "Air Canada 456, taxi to runway 05 via Alpha, Bravo." },
    { from: "PILOT", msg: "Taxi to runway 05 via Alpha, Bravo, Air Canada 456." },
  ]}
    />

    **Step 4: Tower (CYYZ\_TWR on 118.7)** - Hold short, then get takeoff clearance.

    <RadioExchange
      title="Takeoff"
      exchanges={[
    { from: "ATC", msg: "Air Canada 456, contact Tower 118.7." },
    { from: "PILOT", msg: "Tower 118.7, Air Canada 456." },
    { from: "PILOT", msg: "Toronto Tower, Air Canada 456, runway 05, ready for departure." },
    { from: "ATC", msg: "Air Canada 456, winds 040 at 8, runway 05, cleared for takeoff." },
    { from: "PILOT", msg: "Cleared for takeoff, runway 05, Air Canada 456." },
  ]}
    />

    **Step 5: Departure (CYYZ\_DEP on 126.4)** - Climb out of the terminal area.

    <RadioExchange
      title="Departure"
      exchanges={[
    { from: "ATC", msg: "Air Canada 456, contact Departure 126.4." },
    { from: "PILOT", msg: "Departure 126.4, Air Canada 456." },
    { from: "PILOT", msg: "Toronto Departure, Air Canada 456, passing 3,000, climbing flight level 350." },
    { from: "ATC", msg: "Air Canada 456, radar contact. Climb flight level 350." },
  ]}
    />

    **Step 6: Center (CZUL\_CTR on 132.2)** - Cruise at altitude.

    <RadioExchange
      title="En Route"
      exchanges={[
    { from: "ATC", msg: "Air Canada 456, contact Montreal Center 132.2." },
    { from: "PILOT", msg: "Montreal Center 132.2, Air Canada 456." },
    { from: "PILOT", msg: "Montreal Center, Air Canada 456, flight level 350." },
    { from: "ATC", msg: "Air Canada 456, Montreal Center, radar contact." },
  ]}
    />

    **Arrival - Montreal (CYUL)**

    **Step 7: Approach (CYUL\_APP on 119.1)** - Descent and vectors.

    <RadioExchange
      title="Approach"
      exchanges={[
    { from: "ATC", msg: "Air Canada 456, contact Montreal Approach 119.1." },
    { from: "PILOT", msg: "Approach 119.1, Air Canada 456." },
    { from: "PILOT", msg: "Montreal Approach, Air Canada 456, descending flight level 120, information Delta, expecting ILS 24R." },
    { from: "ATC", msg: "Air Canada 456, expect vectors ILS 24R. Descend 4,000." },
    { from: "PILOT", msg: "Descend 4,000, expecting vectors ILS 24R, Air Canada 456." },
    { from: "ATC", msg: "Air Canada 456, turn right heading 210, cleared ILS runway 24R approach." },
    { from: "PILOT", msg: "Right heading 210, cleared ILS runway 24R approach, Air Canada 456." },
  ]}
    />

    **Step 8: Tower (CYUL\_TWR on 118.9)** - Landing clearance.

    <RadioExchange
      title="Landing"
      exchanges={[
    { from: "ATC", msg: "Air Canada 456, contact Tower 118.9." },
    { from: "PILOT", msg: "Tower 118.9, Air Canada 456." },
    { from: "PILOT", msg: "Montreal Tower, Air Canada 456, ILS 24R, 8 miles final." },
    { from: "ATC", msg: "Air Canada 456, winds 250 at 12, runway 24R, cleared to land." },
    { from: "PILOT", msg: "Cleared to land, runway 24R, Air Canada 456." },
  ]}
    />

    **Step 9: Ground (CYUL\_GND on 121.9)** - Taxi to gate.

    <RadioExchange
      title="Taxi to Gate"
      exchanges={[
    { from: "ATC", msg: "Air Canada 456, turn right Bravo, contact Ground 121.9." },
    { from: "PILOT", msg: "Right Bravo, Ground 121.9, Air Canada 456." },
    { from: "PILOT", msg: "Montreal Ground, Air Canada 456, runway 24R vacated at Bravo, request taxi to gate." },
    { from: "ATC", msg: "Air Canada 456, taxi to terminal via Bravo, Alpha." },
    { from: "PILOT", msg: "Taxi to terminal via Bravo, Alpha, Air Canada 456." },
  ]}
    />
  </Accordion>

  <Accordion title="Only Center Online (Top-Down Coverage)">
    This is the most common scenario on VATSIM. A single Center controller handles everything for airports in their sector.

    **Departure - Toronto (CYYZ) with only CZYZ\_CTR online**

    **Step 1: ATIS** - Check if ATIS is available. If not, the Center controller may provide airport conditions.

    **Step 2: Contact Center for clearance, pushback, and taxi.**

    <RadioExchange
      title="Clearance from Center"
      exchanges={[
    { from: "PILOT", msg: "Toronto Center, Air Canada 456, at gate Charlie 32, request IFR clearance to Montreal." },
    { from: "ATC", msg: "Air Canada 456, Toronto Center, cleared to Montreal via DEDKI3 departure, AVSEP transition, flight planned route. Climb via SID, expect flight level 350. Squawk 4521. Report ready to taxi." },
    { from: "PILOT", msg: "Cleared to Montreal, DEDKI3 departure, AVSEP transition, flight planned route. Climb via SID, expect flight level 350, squawk 4521. Will report ready to taxi. Air Canada 456." },
  ]}
    />

    **Step 3: When ready, report back to Center for taxi and departure.**

    <RadioExchange
      title="Taxi and Departure from Center"
      exchanges={[
    { from: "PILOT", msg: "Toronto Center, Air Canada 456, ready to taxi." },
    { from: "ATC", msg: "Air Canada 456, taxi to runway 05. Report ready for departure." },
    { from: "PILOT", msg: "Taxi to runway 05, will report ready, Air Canada 456." },
    { from: "PILOT", msg: "Toronto Center, Air Canada 456, runway 05, ready for departure." },
    { from: "ATC", msg: "Air Canada 456, runway 05, cleared for takeoff." },
    { from: "PILOT", msg: "Cleared for takeoff, runway 05, Air Canada 456." },
  ]}
    />

    **Step 4: En route - continue on the same frequency.** Center already has you.

    **Step 5: Arrival - Center provides approach instructions.**

    <RadioExchange
      title="Approach and Landing via Center"
      exchanges={[
    { from: "ATC", msg: "Air Canada 456, descend flight level 120. Expect ILS runway 24R at Montreal." },
    { from: "PILOT", msg: "Descend flight level 120, expecting ILS 24R, Air Canada 456." },
    { from: "ATC", msg: "Air Canada 456, descend 4,000. Turn right heading 210, cleared ILS runway 24R approach." },
    { from: "PILOT", msg: "Descend 4,000, right heading 210, cleared ILS 24R approach, Air Canada 456." },
    { from: "ATC", msg: "Air Canada 456, winds 250 at 12, runway 24R, cleared to land. After landing, taxi to terminal via Bravo, Alpha. No further ATC services, frequency change approved." },
    { from: "PILOT", msg: "Cleared to land 24R, taxi via Bravo, Alpha after landing, Air Canada 456. Good day." },
  ]}
    />

    <Note>
      When a Center controller is providing top-down service, they may combine instructions to keep things efficient. You might receive your approach clearance and landing clearance in fewer exchanges than with full staffing.
    </Note>
  </Accordion>

  <Accordion title="No ATC Online (UNICOM Only)">
    When no controllers are online anywhere along your route, you fly on UNICOM (122.800) and self-announce.

    **Departure - Toronto (CYYZ) on UNICOM**

    <RadioExchange
      title="UNICOM Departure"
      exchanges={[
    { from: "PILOT", msg: "Toronto Pearson traffic, Air Canada 456, taxiing to runway 05 via Alpha." },
    { from: "PILOT", msg: "Toronto Pearson traffic, Air Canada 456, departing runway 05, northbound." },
  ]}
    />

    **En route** - Position reports are optional but helpful if there is traffic nearby.

    <RadioExchange
      title="UNICOM Position Report"
      exchanges={[
    { from: "PILOT", msg: "UNICOM, Air Canada 456, flight level 350, 100 miles southwest of Montreal, inbound CYUL." },
  ]}
    />

    **Arrival - Montreal (CYUL) on UNICOM**

    <RadioExchange
      title="UNICOM Arrival"
      exchanges={[
    { from: "PILOT", msg: "Montreal traffic, Air Canada 456, 15 miles south, inbound for ILS runway 24R, descending through 4,000." },
    { from: "PILOT", msg: "Montreal traffic, Air Canada 456, 8 miles final, ILS 24R." },
    { from: "PILOT", msg: "Montreal traffic, Air Canada 456, runway 24R vacated." },
  ]}
    />

    <Tip>
      Even on UNICOM, check the wind and weather to choose an appropriate runway. Use your simulator's weather to determine the best option, or check a real-world METAR for the airport.
    </Tip>
  </Accordion>
</AccordionGroup>

## Etiquette and Tips

<Note>
  ATC controllers on VATSIM are unpaid volunteers. They are providing a service because they enjoy it and want to create a realistic experience for everyone. Always be respectful, patient, and courteous - even when things get busy or mistakes happen.
</Note>

* **Be patient during busy periods.** Controllers may have 10 or more aircraft to manage. If they do not respond immediately, wait. They will get to you.
* **Do not repeat your call** unless at least 30 seconds have passed without acknowledgment. Controllers are likely working other aircraft.
* **Follow instructions promptly.** If you need time (e.g., to reprogram your FMS), say "Standby" and get back to them quickly.
* **If you make a mistake**, say "Correction" and fix it. Do not dwell on errors - just correct and move on.
* **Thank the controllers** when you finish your flight. A simple "Thanks for the service, good day" goes a long way.

## Next Steps

<CardGroup cols={2}>
  <Card title="Radio Phraseology" icon="message" href="/vatsim/communication/radio-phraseology">
    Complete reference for standard radio calls at every phase of flight
  </Card>

  <Card title="Voice Basics" icon="tower-broadcast" href="/vatsim/communication/voice-basics">
    Understand frequencies, UNICOM, ATIS, and Audio for VATSIM
  </Card>
</CardGroup>
