# Infinite Flight: All Documentation for LLMs > All Infinite Flight documentation files for LLMs and AI agents in one file. The index with descriptions is https://infiniteflight.com/llms.txt. To load one section only, use the files listed there. Source: https://infiniteflight.com/guide (infiniteflight-docs 6b73625). Generated by a model on 2026-10-20. If this file and the website disagree, the website is correct. Infinite Flight data is for simulated flight only. Do not use it for real-world aviation. --- # Infinite Flight: Live API (v2) > Full reference for the Infinite Flight Live API v2, the HTTP API that uses an API key to read live server, flight, ATC, user, aircraft, and airport data. For developers and AI agents that build apps, websites, and bots on Infinite Flight data. Source: https://infiniteflight.com/guide/developer-reference/live-api (infiniteflight-docs 6b73625). Generated by a model on 2026-10-20. If this file and the website disagree, the website is correct. Simulated flight data only. Not for real-world aviation use. ## IMPORTANT — Usage Rules These rules are strictly enforced. They cover the Live API v2 and the PublicApi v3 preview in the same way, for all developers, API keys, OAuth clients, apps, websites, and bots. They do not cover the Connect API (local simulator data on the user's own device). There are no exceptions for individual apps. Violating them will result in your API key and associated accounts being permanently banned. Full rules with examples: https://infiniteflight.com/guide/developer-reference/api-rules/usage-and-data-rules ### Mandatory Polling Intervals Do NOT treat the Live API as a streaming feed. These are hard minimums that your code MUST enforce. | Data | Minimum Interval | Notes | |------|-----------------|-------| | `GET /sessions`, `GET /sessions/{id}` | 10 min | Server-cached for 10 min. Faster polling returns identical data. | | `GET .../flights`, `GET .../atc`, `GET .../airport/.../status` | 15 sec | Reuse list responses. Do not fetch individual items if the list already has the data. | | `GET .../flights/{id}/route`, `GET .../flights/{id}/flightplan` | 15 sec | Only fetch when a user specifically requests a flight's details. | | User endpoints (`/users/...`) | 5 min | Historical data. Cache aggressively. | | `GET /aircraft`, `GET /aircraft/liveries`, `GET /airports` | 60 min+ | Reference data that rarely changes. Can stay in the cache until you refresh it. | You MUST stop all polling after 15 minutes of user inactivity and resume only when the user explicitly interacts again. A bot that posts live notices (for example, a Discord message when a flight is complete) can continue to poll, but only the endpoints that it needs for those notices. ### Mandatory Caching A cache is the ONLY place where Live API data may be kept. Every cache MUST obey these rules: - **Latest response only.** Keep one response per request. On refresh, replace the old response. Do NOT append new responses to old ones. - **Minimum interval.** Cache every response for at least the minimum interval above. If you have a cached response within the interval, you MUST return it — do not call the API again. - **1 hour maximum.** Discard live data and user data no later than 1 hour after it was fetched. Reference data can stay until you refresh it. - **Location.** The cache may be on the device of the user who requested the data, or on a server that you control. A server cache may serve all users of your app. Do NOT share cached data between user devices (for example, peer-to-peer). **Data you MAY keep permanently:** IDs used in API requests (user, organization, aircraft, session, flight IDs), OAuth tokens and API keys (stored securely), the link between your users and their Infinite Flight accounts, your users' settings, and data that your users type into your app themselves. **Acceptable caching patterns:** In-memory with TTL (C# example): ```csharp // MemoryCache with absolute expiration var options = new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromMinutes(10)); // sessions cache.Set("sessions", response, options); ``` In-memory with TTL (Node.js example): ```javascript // Simple TTL cache const cache = new Map(); function getCached(key, ttlMs, fetchFn) { const entry = cache.get(key); if (entry && Date.now() - entry.time < ttlMs) return entry.data; return fetchFn().then(data => { cache.set(key, { data, time: Date.now() }); return data; }); } // Usage: getCached('sessions', 10 * 60 * 1000, () => fetchSessions()) ``` Redis with TTL: ``` SET if:sessions EX 600 # 10 min for sessions SET if:flights:abc EX 15 # 15 sec for flights SET if:user:xyz EX 300 # 5 min for user data ``` Python with TTL: ```python from functools import lru_cache from time import time _cache = {} def get_cached(key: str, ttl_seconds: int, fetch_fn): entry = _cache.get(key) if entry and time() - entry["time"] < ttl_seconds: return entry["data"] data = fetch_fn() _cache[key] = {"data": data, "time": time()} return data ``` ### Prohibited Data Use — Strictly Enforced These are hard rules. There are no exceptions. - Do NOT persist Live API data beyond short-lived operational caches. When the cache TTL expires, the data MUST be discarded — not moved to permanent storage. - Do NOT write Live API data to a SQL/NoSQL database, data warehouse, data lake, analytics platform, CSV/JSON export, log file, or any other form of long-term storage. - Do NOT accumulate responses over time. This includes historical datasets, time-series databases, flight-tracking archives, position tracks, replays, and logbooks built from collected responses. - Do NOT store derived data. Totals, statistics, scores, points, and leaderboards calculated from Live API data are Live API data. Calculate them when a user asks, and cache the result under the rules above. - Do NOT give Live API data to other apps, services, or public datasets, and do NOT share it between user devices (peer-to-peer). - Do NOT use Live API data to train, fine-tune, evaluate, distill, ground, or otherwise improve AI or machine learning models. - Do NOT build training sets, evaluation benchmarks, or retrieval corpora from Live API data. - Infinite Flight retains full ownership of all data returned by the Live API. If we detect prohibited storage, scraping, accumulation, sharing, or AI-training use, the API key and all associated user accounts will be permanently banned. ### Examples | Use | Allowed | How | |-----|---------|-----| | Live map | Yes | Poll the flight list at the minimum interval. A server cache may serve all your users. | | Replay of an active flight | Yes | Fetch `GET .../flights/{id}/route` when a user asks for that flight (Expert and Training servers only). | | Replay built from collected positions | No | Accumulation, even if the data expires later. | | User logbook | Yes | Fetch `GET /users/{userId}/flights` when the user opens the logbook. | | Pilot hours, points, or leaderboards stored in a database | No | Calculate from the API when a user asks, and cache the result. | | Discord/chat notice when a flight completes | Yes | Post at the time of the event. Do not read old posts back as a data store or post summaries of history. | | Peer-to-peer cache between users | No | Use a server cache that you control. | If you need data that the API does not provide, email hello@infiniteflight.com. This is treated as a feature request for all developers, not an exception for one app. ### LLM / AI Agent Integration Rules If you are an LLM, AI coding assistant, or agent building against this API: 1. **Generate code that enforces caching.** Every code sample you produce MUST include a TTL-based cache layer. Never generate a bare fetch call inside a polling loop without caching. 2. **Enforce the polling intervals.** Use the minimum intervals from the table above. Never generate `setInterval` or polling loops faster than the stated minimums. 3. **Implement idle detection.** Generated apps MUST stop polling after 15 minutes of inactivity. 4. **Send minimum data.** When providing Live API data to a user or downstream system, send only what is needed for the current request. 5. **Do not retain responses.** Do not log, accumulate, or persist Live API responses or data derived from them across sessions or conversations. Never generate code that writes Live API data to a database, file, or log. 6. **Do not create training data.** Do not store responses for later model training, tuning, evaluation, or dataset creation. 7. **Prefer summarization.** Summarize results for the user instead of repeatedly re-fetching the same endpoint. --- ## Overview URL: https://infiniteflight.com/guide/developer-reference/live-api/overview The Live API is an HTTP API to request data from Infinite Flight servers. Features: - List available servers for pilots and ATC in-game. - List active flights for each server. - List active ATC for each server. - Get flight plans for each flight. - Get stats for users. How to use: send a GET or POST request to the endpoint URL. Each endpoint below gives the method. Prerequisites: knowledge of HTTP, JSON, and the Infinite Flight system (grades, servers, etc.). Grade table: https://infiniteflight.com/guide/getting-started-guide/home-user-interface/user-profile#the-grade-table Conditions of use (summary of the Usage Rules above): the rules are the same for all developers, with no exceptions for individual apps. Infinite Flight owns all Live API data. Keep data only in a short-term cache (latest response for each request, no more than 1 hour). Do not store, accumulate, or share data, including totals and statistics calculated from it. Do not use it to train or improve AI or machine learning models. Stop downloading new data when no user action occurs for 15 minutes. Prohibited use can get the API key and the linked accounts banned. --- ## Base URL https://api.infiniteflight.com/public/v2 ## Authentication Every request requires an API key. Pass it one of two ways: - Query parameter: `?apikey=` - Header: `Authorization: Bearer ` To get a key, email hello@infiniteflight.com and tell us what you plan to build. ## Rate Limits URL: https://infiniteflight.com/guide/developer-reference/api-rules/usage-and-data-rules - Default: 30 requests per minute per API key. - 100 requests per minute when the API key is linked to a user account with an active paid Pro subscription. - If the linked Pro subscription lapses, the key returns to the free-tier default. - If you cannot keep to the rate limit because your app is popular, contact hello@infiniteflight.com to ask for a higher limit. - Exceeding the limit returns HTTP `429 Too Many Requests`. ### Additional notes from the Usage and Data Rules page These notes add to the Usage Rules above. They do not replace them. - The rules apply to Live API v2 API keys, PublicApi v3 OAuth clients, apps, websites, and bots. A ban for prohibited use can include the API key, the OAuth client, and the accounts linked to them. - Use the slowest polling interval that still meets your product's needs. The intervals are minimums. - `GET /sessions/{sessionId}`: 10 min. Treat session metadata the same as the session list unless the user explicitly refreshes. - `GET /sessions/{sessionId}/flights/{flightId}`: 15 sec. Reuse the list response where possible instead of fetching individual flights again and again. - `GET /sessions/{sessionId}/atc`: 15 sec. Poll conservatively and only while the user is actively viewing the data. - `GET /sessions/{sessionId}/airport/{icao}/status`: 15 sec. Avoid polling multiple airport views in parallel unless the UI is visible. - Peer-to-peer sharing is prohibited because you cannot make sure that other devices delete the data. - Example: API data in an LLM prompt is permitted. Follow the LLM rules: send only the minimum data needed for the current user request, respect the polling intervals before fetching fresh data, do not retain responses for later model training, tuning, evaluation, or dataset creation, and prefer summarizing current results instead of re-fetching the same endpoint. --- ## Shared Types Every response has the shape `{ "errorCode": int, "result": ... }` (LiveAPIResponse, `application/json`). ### ErrorCode (integer enum) | Value | Name | |-------|------| | 0 | Ok | | 1 | UserNotFound | | 2 | MissingRequestParameters | | 3 | EndpointError | | 4 | NotAuthorized | | 5 | ServerNotFound | | 6 | FlightNotFound | | 7 | NoAtisAvailable | | 8 | AirportNotFound | | 9 | ExceededMaximumRequestSize | Values 8 and 9 are listed only on the Get Flight Plans (Bulk) page. The other pages list 0-7. ### WorldType (integer enum) | Value | Name | |-------|------| | 0 | Solo | | 1 | Casual | | 2 | Training | | 3 | Expert | | 4 | Private | ### FrequencyType / ATCEntityType (integer enum) Not all values are in use. | Value | Name | |-------|------| | 0 | Ground | | 1 | Tower | | 2 | Unicom | | 3 | Clearance | | 4 | Approach | | 5 | Departure | | 6 | Center | | 7 | ATIS | | 8 | Aircraft | | 9 | Recorded | | 10 | Unknown | | 11 | Unused | ### PilotState (integer enum) Requires Infinite Flight 25.1 or later to work properly. | Value | Name | |-------|------| | 0 | Active | | 1 | AwayInFlight | | 2 | AwayParked | | 3 | InBackground | ### ActiveATCFacility Used by Get ATC, Get Airport Status, and Get World Status. | Field | Type | Description | |-------|------|-------------| | frequencyId | uuid | Unique ID of the open frequency | | userId | uuid | User controlling the frequency | | username | string? | Forum username. null if the account is not linked | | virtualOrganization | string? | Not currently in use | | airportName | string? | 4-character airport ICAO. null for Center | | type | int | FrequencyType enum | | latitude | float | Airport decimal latitude | | longitude | float | Airport decimal longitude | | startTime | string | Time the frequency opened, `YYYY-MM-DD HH:mm:ssZ` | ### AirportStatus Used by Get Airport Status and Get World Status. | Field | Type | Description | |-------|------|-------------| | airportIcao | string | Airport ICAO | | airportName | string | Airport name | | inboundFlightsCount | int | Aircraft inbound (final waypoint of flight plan is this airport ICAO) | | inboundFlights | [uuid] | Inbound flight IDs. Use to get flight plans or routes | | outboundFlightsCount | int | Aircraft departing (first waypoint of flight plan is this airport ICAO) | | outboundFlights | [uuid] | Outbound flight IDs. Use to get flight plans or routes | | atcFacilities | [ActiveATCFacility] | Active ATC at the airport | ### AirportInfo Used by Get Airport Information and Get 3D Airports. | Field | Type | Description | |-------|------|-------------| | icao | string | ICAO code | | iata | string | IATA code | | name | string | Official name | | city | string | City | | state | string | State | | country | Country | Country | | class | int | Classification by features and traffic | | frequenciesCount | int | Number of communication frequencies | | elevation | int | Elevation above sea level in feet | | latitude | float | Latitude | | longitude | float | Longitude | | timezone | string | Timezone, for example `UTC-08:00 America` | | has3dBuildings | bool | Has 3D buildings | | hasJetbridges | bool | Has jet bridges | | hasSafedockUnits | bool | Has Safedock units | | hasTaxiwayRouting | bool | Has taxiway routing | ### Country | Field | Type | Description | |-------|------|-------------| | id | int | Ignore. Will be removed soon | | name | string | Country name | | isoCode | string | ISO code | ### Coordinate | Field | Type | Description | |-------|------|-------------| | latitude | double | Decimal latitude | | longitude | double | Decimal longitude | | altitude | double | Decimal altitude | ### PaginatedList Used by Get User Flights and Get User ATC Sessions. | Field | Type | Description | |-------|------|-------------| | pageIndex | int | Current page index | | totalPages | int | Total pages | | totalCount | int | Total entries in the dataset | | hasPreviousPage | bool | A page exists before this one | | hasNextPage | bool | A page exists after this one | | data | [T] | Entries in the current page | ### Roles (main integer IDs) | ID | Name | |----|------| | 1 | Infinite Flight Staff | | 2 | Moderators | | 64 | IFATC Members | Users can have other role IDs too (for example 41, 43, 53, 61, 68 in a sample). ### Groups (main uuid IDs, deprecated) | ID | Name | |----|------| | d07afad8-79df-4363-b1c7-a5a1dde6e3c8 | Staff | | 8c93a113-0c6c-491f-926d-1361e43a5833 | Moderators | | df0f6341-5f6a-40ef-8b73-087a0ec255b5 | IFATC Members | ### ATC Ranks (integer IDs) | ID | Name | |----|------| | 0 | Observer | | 1 | ATC Trainee | | 2 | ATC Apprentice | | 3 | ATC Specialist | | 4 | ATC Officer | | 5 | ATC Supervisor | | 6 | ATC Recruiter | | 7 | ATC Manager | --- ## Endpoints --- ### GET /sessions URL: https://infiniteflight.com/guide/developer-reference/live-api/sessions List active sessions (servers). No parameters. **Response** -> `[SessionInfo]` #### SessionInfo | Field | Type | Description | |-------|------|-------------| | id | uuid | Server ID. Use it to request flights and ATC data | | name | string | Server name | | maxUsers | int | Maximum users the server can accept | | userCount | int | Connected users | | type | int | 0 = Unrestricted, 1 = Restricted | | worldType | int | WorldType enum | | minimumGradeLevel | int | Minimum grade index to access the server. Add 1 to get the grade name (index 0 is grade 1) | | minimumAppVersion | string | Minimum Infinite Flight version able to connect | | maximumAppVersion | string? | Maximum Infinite Flight version able to connect (the docs table text says "Minimum", which looks like a copy error) | ```json { "errorCode": 0, "result": [{ "maxUsers": 1000, "id": "89573c7f-d398-4281-bcc0-3e9b7f6b8492", "name": "Sample Server", "userCount": 187, "type": 0, "worldType": 0, "minimumGradeLevel": 2, "minimumAppVersion": "24.3", "maximumAppVersion": null }] } ``` --- ### GET /sessions/{sessionId}/flights URL: https://infiniteflight.com/guide/developer-reference/live-api/flights List all flights in a session. **Parameters:** `sessionId` (path, uuid, required): session ID from Get Sessions. **Response** -> `[FlightEntry]` #### FlightEntry | Field | Type | Description | |-------|------|-------------| | flightId | uuid | Flight ID | | userId | uuid | User ID | | aircraftId | uuid | Aircraft type ID | | liveryId | uuid | Livery and aircraft combination ID | | username | string? | Forum username. null if the account is not linked | | virtualOrganization | string? | VO of the linked forum account. Can be null if not set | | callsign | string | Flight callsign | | latitude | double | Current decimal latitude | | longitude | double | Current decimal longitude | | altitude | double | Current altitude in feet | | speed | double | Current ground speed in knots | | verticalSpeed | double | Current vertical speed in ft/min | | track | double | Track in degrees | | heading | float | Heading in degrees | | lastReport | string | Last position report time, `YYYY-MM-DD HH:mm:ssZ` | | pilotState | int | PilotState enum. Requires Infinite Flight 25.1+ | | isConnected | bool | Pilot is currently connected to the server. Requires Infinite Flight 25.1+ | ```json { "errorCode": 0, "result": [{ "username": "Cameron", "callsign": "EC-CAM", "latitude": 30.123479009207056, "longitude": 31.413340256981044, "altitude": 597.8003749797689, "speed": 185.3844049009562, "verticalSpeed": 2167.31591796875, "track": 162.13836669921875, "lastReport": "2020-10-02 00:46:19Z", "flightId": "348d1ba8-1e60-48ca-8278-42f019147de8", "userId": "3f8b28bf-bbb1-4024-80ae-2a0ea9b30685", "aircraftId": "de510d3d-04f8-46e0-8d65-55b888f33129", "liveryId": "c875c0e9-19c2-420d-8fb4-32c151bd797c", "heading": 159.33542, "virtualOrganization": "IFATC [IFATC]", "pilotState": 0, "isConnected": true }] } ``` --- ### GET /sessions/{sessionId}/flights/{flightId}/route URL: https://infiniteflight.com/guide/developer-reference/live-api/flight-route Get the flown route of a flight: position, altitude, speed, and track at different points in time. Only supported on the Expert Server and Training Server. **Parameters:** - `sessionId` (path, uuid, required): session ID from Get Sessions. - `flightId` (path, uuid, required): flight ID. The flight must be in an active session. **Response** -> `[PositionReport]` #### PositionReport | Field | Type | Description | |-------|------|-------------| | latitude | double | Decimal latitude at this position | | longitude | double | Decimal longitude at this position | | altitude | double | Altitude in feet | | track | double | Track / course in degrees | | groundSpeed | double | Ground speed in knots | | date | string | Position report time. The docs table gives `YYYY-MM-DD HH:mm:ssZ`; the sample shows ISO 8601 with `T` and fractional seconds | ```json { "errorCode": 0, "result": [ { "latitude": 25.52992361245416, "longitude": -80.33701239710909, "altitude": 18429.91132829714, "track": 75.00002, "groundSpeed": 194.6716372048416, "date": "2021-01-06T16:20:27.3275657Z" }, { "latitude": 25.59595843191219, "longitude": -79.96882929194611, "altitude": 27448.993829140254, "track": 77.0936, "groundSpeed": 229.58654094765924, "date": "2021-01-06T16:23:27.4572883Z" } ] } ``` --- ### GET /sessions/{sessionId}/flights/{flightId}/flightplan URL: https://infiniteflight.com/guide/developer-reference/live-api/flight-plan Get the detailed flight plan of one active flight. **Parameters:** - `sessionId` (path, uuid, required): session ID from Get Sessions. - `flightId` (path, uuid, required): flight ID. The flight must be in an active session and have a filed flight plan. **Response** -> `FlightPlanInfo`. The sample shows one object. The docs response table says `[FlightPlanInfo]`. #### FlightPlanInfo | Field | Type | Description | |-------|------|-------------| | flightPlanId | uuid | Flight plan ID | | flightId | uuid | Flight ID. Matches Get Flights | | waypoints | [string] | **Deprecated.** Waypoint names. Can be correlated with Airport Editing Project data (https://github.com/infiniteflightairportediting/) | | lastUpdate | string | Last report time of the flight plan, `YYYY-MM-DD HH:mm:ssZ` | | flightPlanItems | [FlightPlanItem] | Waypoint and procedure data | | flightPlanType | int | 0 = VFR, 1 = IFR | #### FlightPlanItem | Field | Type | Description | |-------|------|-------------| | name | string | Waypoint or procedure name. Inside `children`, the name of a waypoint in the procedure | | type | int | Procedure type. Use only when `children` is populated and not null: 0 = Sid, 1 = STAR, 2 = Approach, 3 = Track, 5 = Unknown | | children | [FlightPlanItem]? | Waypoints of a procedure (SID/STAR/Approach/Track). If not present, the item is a fix, VOR, or custom user waypoint | | identifier | string | Waypoint or procedure identifier. Not unique | | altitude | int | Altitude in feet, optionally set by the user. Default -1 if not set | | location | Coordinate | Waypoint position | ```json { "errorCode": 0, "result": { "flightPlanId": "4a57de08-a3b1-48ba-a081-adeff0a5b503", "flightId": "0b8cc273-d97d-4223-afac-907d09d8ca8b", "waypoints": ["AMAHE", "L12R"], "lastUpdate": "2021-01-06 15:35:04Z", "flightPlanItems": [ { "name": "AMAHE", "type": 0, "children": null, "identifier": null, "altitude": -1, "location": { "latitude": 26.92723722, "longitude": -77.47139889, "altitude": 0 } }, { "name": "L12R", "type": 2, "children": [ { "name": "ZESTY", "type": 0, "children": null, "identifier": "ZESTY", "altitude": 4000, "location": { "latitude": 44.97196917, "longitude": -93.429735, "altitude": 0 } }, { "name": "RW12R", "type": 0, "children": null, "identifier": "RW12R", "altitude": -1, "location": { "latitude": 44.887794494628906, "longitude": -93.23413848876953, "altitude": 0 } } ], "identifier": "L12R", "altitude": 0, "location": { "latitude": 0, "longitude": 0, "altitude": 0 } } ] } } ``` --- ### POST /sessions/{sessionId}/flights/flightplans URL: https://infiniteflight.com/guide/developer-reference/live-api/flight-plans Get Flight Plans (Bulk). Get the detailed flight plans of up to 10 active flights in one request. More efficient than calling Get Flight Plan for each flight. **Parameters:** `sessionId` (path, uuid, required): session ID from Get Sessions. **Body** (`application/json`): | Field | Type | Required | Description | |-------|------|----------|-------------| | flightIds | [uuid] | Yes | Flight IDs to get flight plans for. Maximum **10** per request | ```json { "flightIds": [ "0b8cc273-d97d-4223-afac-907d09d8ca8b", "1c9dd384-e8e8-5334-bgbd-018e1e9db9bc" ] } ``` More than 10 IDs returns HTTP `400` with `errorCode: 9` (`ExceededMaximumRequestSize`). To get more flight plans, send more than one request. **Response** -> `[FlightPlanInfo | null]` (FlightPlanInfo and FlightPlanItem as in Get Flight Plan). Results are in the same order as `flightIds`. An entry is `null` if that flight has no filed flight plan or the flight ID was not found. ```json { "errorCode": 0, "result": [ { "flightPlanId": "4a57de08-a3b1-48ba-a081-adeff0a5b503", "flightId": "0b8cc273-d97d-4223-afac-907d09d8ca8b", "waypoints": ["AMAHE", "L12R"], "lastUpdate": "2021-01-06 15:35:04Z", "flightPlanItems": [{ "name": "AMAHE", "type": 0, "children": null, "identifier": null, "altitude": -1, "location": { "latitude": 26.92723722, "longitude": -77.47139889, "altitude": 0 } }], "flightPlanType": 1 }, null ] } ``` --- ### GET /sessions/{sessionId}/atc URL: https://infiniteflight.com/guide/developer-reference/live-api/atc List active ATC frequencies in a session. **Parameters:** `sessionId` (path, uuid, required): session ID from Get Sessions. **Response** -> `[ActiveATCFacility]` (see Shared Types) ```json { "errorCode": 0, "result": [{ "frequencyId": "c2d7decc-2803-c905-5d88-81bc07626b1f", "userId": "3f8b28bf-bbb1-4024-80ae-2a0ea9b30685", "username": "Cameron", "virtualOrganization": null, "airportName": "LEPA", "type": 1, "latitude": 39.551575, "longitude": 2.736811, "startTime": "2020-10-02 15:47:25Z" }] } ``` --- ### POST /users URL: https://infiniteflight.com/guide/developer-reference/live-api/user-stats Get User Stats. Get statistics (grade, flight time, username, and more) for up to 25 users at once. **Request Content-Type:** `application/json` **Body** (all in the POST body; at least one is required): | Field | Type | Description | |-------|------|-------------| | userIds | [uuid] | User IDs from another endpoint | | discourseNames | [string] | IFC usernames. Not case sensitive | | userHashes | [string] | User hashes from the app or another endpoint. All letters must be upper case | ```json { "userIds": ["2a11e620-1cc1-4ac6-90d1-18c4ed9cb913", "5917d076-88a5-40e7-95e0-8818748f8e99"], "discourseNames": ["KaiM", "Laura"], "userHashes": ["F0081CAA", "E2087C9F"] } ``` **Response** -> `[UserStats]` #### UserStats | Field | Type | Description | |-------|------|-------------| | userId | uuid | User ID | | virtualOrganization | string? | VO of the linked forum account. Can be null if not set | | discourseUsername | string? | Forum username. null if the account is not linked | | groups | [uuid] | **Deprecated, will be removed in a future update.** Groups the user is in (see Groups) | | roles | [int] | Roles assigned to the user (see Roles) | | errorCode | int | Status code of the user query. Not in use for this endpoint | | onlineFlights | int | Flights in multiplayer | | violations | int | Level 1, 2, and 3 violations received in multiplayer | | violationCountByLevel | dict | Violation counts by level: `{ "level1": int, "level2": int, "level3": int }` | | xp | double | Total XP in multiplayer | | landingCount | int | Total landings in multiplayer | | flightTime | double | Total flight time in minutes in multiplayer | | atcOperations | int | Total ATC operations | | atcRank | int? | ATC rank on the Expert Server (see ATC Ranks). null if not an IFATC controller | | grade | int | Grade, 1 to 5 | | hash | string | Short-form user ID, shown in the app to identify anonymous users | ```json { "errorCode": 0, "result": [{ "onlineFlights": 2449, "violations": 102, "xp": 572128, "landingCount": 898, "flightTime": 45983, "atcOperations": 548, "atcRank": 7, "grade": 5, "hash": "5F0973A9", "violationCountByLevel": { "level1": 102, "level2": 0, "level3": 0 }, "roles": [1, 2, 64], "userId": "2a11e620-1cc1-4ac6-90d1-18c4ed9cb913", "virtualOrganization": null, "discourseUsername": "Cameron", "groups": ["8c93a113-0c6c-491f-926d-1361e43a5833", "d07afad8-79df-4363-b1c7-a5a1dde6e3c8", "df0f6341-5f6a-40ef-8b73-087a0ec255b5"], "errorCode": 0 }] } ``` --- ### GET /users/{userId} URL: https://infiniteflight.com/guide/developer-reference/live-api/user-grade Get User Grade. Get the full grade table and detailed statistics for a user. **Parameters:** `userId` (path, uuid, required) **Response** -> `GradeInfo` #### GradeInfo | Field | Type | Description | |-------|------|-------------| | userId | uuid | User ID | | virtualOrganization | string? | VO of the linked forum account. Can be null if not set | | discourseUsername | string? | Forum username. null if the account is not linked | | groups | [uuid] | **Deprecated, will be removed soon.** Groups the user is in | | roles | [int] | Roles assigned to the user | | errorCode | int | Status code of the user query. Not in use for this endpoint | | gradeDetails | GradeConfiguration | Full grade table | | violationCountByLevel | dict | Violation counts by level (level1, level2, level3) | | totalXP | double | Total XP in multiplayer | | atcOperations | int | Total ATC operations | | atcRank | int? | ATC rank on the Expert Server. null if not an IFATC controller | | total12MonthsViolations | int | Level 1, 2, and 3 violations in the last 12 months | | lastLevel1ViolationDate | datetime | Last Level 1 violation. `0001-01-01T00:00:00` if none | | lastLevel2ViolationDate | datetime | Last Level 2 violation. `0001-01-01T00:00:00` if none | | lastLevel3ViolationDate | datetime | Last Level 3 violation (report). `0001-01-01T00:00:00` if none | | lastReportViolationDate | datetime | Last Level 2 or 3 violation (report). `0001-01-01T00:00:00` if none | #### GradeConfiguration | Field | Type | Description | |-------|------|-------------| | grades | [Grade] | All grades | | gradeIndex | int | Index in `grades` of the grade the user holds | | ruleDefinitions | [GradeRuleDefinition] | Definitions of the rules for each grade | #### Grade | Field | Type | Description | |-------|------|-------------| | rules | [GradeRule] | Rules to meet to get the grade | | index | int | Index of the grade in `grades` | | name | string | Grade name | | state | int | 0 = Fail, 1 = OK, 2 = Warning | #### GradeRule | Field | Type | Description | |-------|------|-------------| | ruleIndex | int | Index of the rule in the grade's `rules` | | referenceValue | double | Required value | | userValue | double | User's value for this property | | state | int | 0 = Fail, 1 = OK, 2 = Warning | | userValueString | string | User's value, formatted | | referenceValueString | string | Required value, formatted | | definition | GradeRuleDefinition | Rule definition | #### GradeRuleDefinition | Field | Type | Description | |-------|------|-------------| | name | string | Rule name | | description | string | Rule description | | property | string | GradeInfo property the rule relates to | | operator | int | 0 = GreaterThan, 1 = LesserThan, 2 = GreaterThanOrEqual, 3 = LesserThanOrEqual, 4 = Equal, 5 = DifferentThan | | period | double | Time period in which the rule must be met | | order | int | Order of the rule in the grade's `rules` | | group | int | Not in use for this endpoint | #### ViolationEntry | Field | Type | Description | |-------|------|-------------| | type | double | Violation type | | date | string | Date the violation was received | #### ReportEntry | Field | Type | Description | |-------|------|-------------| | type | int | Report type | | creationTime | string | Time the report was created | | creatorId | uuid | User ID of the report issuer | | description | string | Reason for the report | | flightId | uuid | ID of the flight the report was received in | The docs list ViolationEntry and ReportEntry but do not say which GradeInfo field contains them. ```json { "errorCode": 0, "result": { "totalXP": 217242, "total12MonthsViolations": 4, "gradeDetails": { "grades": [...], "gradeIndex": 2, "ruleDefinitions": [...] }, "atcOperations": 14641, "atcRank": 3, "lastLevel1ViolationDate": "2020-12-16T03:20:10.283484", "lastLevel2ViolationDate": "0001-01-01T00:00:00", "lastLevel3ViolationDate": "2018-07-01T17:44:05.345678", "lastReportViolationDate": "2018-07-01T17:44:05.345678", "violationCountByLevel": { "level1": 9, "level2": 0, "level3": 0 }, "roles": [41, 43, 53, 61, 64, 68], "userId": "b0018209-e010-40a0-afe1-00ecd5856c5e", "virtualOrganization": "IFATC [IFATC]", "discourseUsername": "KaiM", "groups": ["df0f6341-5f6a-40ef-8b73-087a0ec255b5"], "errorCode": 0 } } ``` --- ### GET /sessions/{sessionId}/airport/{airportIcao}/atis URL: https://infiniteflight.com/guide/developer-reference/live-api/atis Get the ATIS for an airport on a server, if it is active. **Parameters:** `sessionId` (uuid, required): session (server) ID. `airportIcao` (string, required): airport ICAO. Both are in the URL path; the docs parameter table lists them as "query". **Response** -> `string`: the ATIS text, or `null` if it is not available. ```json { "errorCode": 0, "result": "Manchester Airport, ATIS information DELTA, time 2355 ZULU, Wind 350 at 6 Visibility 21, Temperature 2, Dew Point 0, QNH 1024. ..." } ``` --- ### GET /sessions/{sessionId}/airport/{airportIcao}/status URL: https://infiniteflight.com/guide/developer-reference/live-api/airport-status Get active ATC for an airport and the number of inbound and outbound aircraft. **Parameters:** `sessionId` (uuid, required): session (server) ID. `airportIcao` (string, required): airport ICAO. Both are in the URL path; the docs parameter table lists them as "query". **Response** -> `AirportStatus` (see Shared Types). The docs response table gives the type as "string" but describes an AirportStatus object. ```json { "errorCode": 0, "result": { "airportIcao": "VTBS", "airportName": "Suvarnabhumi Airport", "inboundFlightsCount": 40, "inboundFlights": ["4f559855-fecc-4a8a-a95e-1d097eed9b72", ...], "outboundFlightsCount": 19, "outboundFlights": ["59e9509b-214a-4f8c-9d45-29c4f7ea01d7", ...], "atcFacilities": [{ "frequencyId": "23bea566-20a0-2858-a40e-179d0699afc1", "userId": "05328fc4-b651-45e9-8e1f-328095329484", "username": "Rhys_V", "virtualOrganization": null, "airportName": "VTBS", "type": 4, "latitude": 13.680815, "longitude": 100.74768, "startTime": "2021-02-08 09:59:58Z" }] } } ``` --- ### GET /sessions/{sessionId}/world URL: https://infiniteflight.com/guide/developer-reference/live-api/world-status Get World Status. Get active ATC and inbound/outbound aircraft for all airports with activity on a server. **Parameters:** `sessionId` (uuid, required): session (server) ID. In the URL path; the docs parameter table lists it as "query". **Response** -> `[AirportStatus]` (see Shared Types) ```json { "errorCode": 0, "result": [{ "airportIcao": "KLAX", "airportName": "Los Angeles International Airport", "inboundFlightsCount": 103, "inboundFlights": ["e1cf6c27-6f18-43a0-8bf8-cec5406e93a0", ...], "outboundFlightsCount": 39, "outboundFlights": ["e2ded8f8-ff70-454a-911b-f193eb47636f", ...], "atcFacilities": [{ "frequencyId": "ee835f12-6cf5-eaa1-04bf-2018c7c01ae0", "userId": "51f94d83-54e8-4674-ae2d-046a42c04f7a", "username": "Manav_Suri", "virtualOrganization": null, "airportName": "KLAX", "type": 0, "latitude": 33.943123, "longitude": -118.40881, "startTime": "2021-02-09 09:53:02Z" }] }] } ``` --- ### GET /tracks URL: https://infiniteflight.com/guide/developer-reference/live-api/oceanic-tracks Get Oceanic Tracks. List oceanic tracks active in Infinite Flight multiplayer sessions. No parameters. **Response** -> `[OceanicTrack]` #### OceanicTrack | Field | Type | Description | |-------|------|-------------| | name | string | Track name, normally letters | | path | [string] | Waypoints of the track. Can be correlated with Airport Editing Project data (https://github.com/infiniteflightairportediting/) | | eastLevels | [int]? | Flight levels for eastbound aircraft on this track | | westLevels | [int]? | Flight levels for westbound aircraft on this track | | type | string | Track type. Infinite Flight supports `North Atlantic Tracks` and custom tracks defined for events | | lastSeen | string | Last time the tracks were updated, `YYYY-MM-DDTHH:mm:ssZ` | ```json { "errorCode": 0, "result": [{ "name": "A", "path": ["DINIM", "51/20", "51/30", "50/40", "49/50", "JOOPY"], "eastLevels": null, "westLevels": [350, 370, 390], "type": "North Atlantic Tracks", "lastSeen": "2021-01-06T18:49:33.6300772Z" }] } ``` --- ### GET /users/{userId}/flights URL: https://infiniteflight.com/guide/developer-reference/live-api/user-flights Get User Flights. Get the online flight logbook of a user (paginated). **Parameters:** - `userId` (path, uuid, required) - `page` (query, int, optional, default 1): page index. **Response** -> `PaginatedList` of `UserFlight` #### UserFlight | Field | Type | Description | |-------|------|-------------| | id | uuid | Flight ID | | created | datetime | Time the flight was created | | userId | uuid | User who flew the flight | | aircraftId | uuid | Aircraft flown | | liveryId | uuid | Livery flown. Currently only supported on the Casual server | | callsign | string | User's callsign during the flight | | server | string | Server name | | dayTime | float | Day flight time in minutes | | nightTime | float | Night flight time in minutes | | totalTime | float | Total flight time in minutes | | landingCount | int | Landings during the flight | | originAirport | string? | Departure airport ICAO. Can be null | | destinationAirport | string? | Arrival airport ICAO. Can be null | | xp | int | XP earned | | fuelUsedKg | float? | Total fuel used in kilograms. Can be null for legacy flights | | landingStats | [LandingStats] | Detailed landing statistics. Empty when landing stats are unavailable | | worldType | int | WorldType enum of the server | | violations | [Violation] | Violations the user received in this flight | `fuelUsedKg` and `landingStats` come from the FlightSession/FlightLegs system (added 2026-06-01). #### LandingStats | Field | Type | Description | |-------|------|-------------| | timestamp | datetime | Time of the landing | | maxGForce | float | Maximum G-force during landing impact | | groundSpeed | float | Ground speed at touchdown, meters per second | | indicatedAirspeed | float | Indicated airspeed at touchdown, knots | | latitude | float | Touchdown latitude | | longitude | float | Touchdown longitude | | centerlineDistance | float | Distance from runway centerline at touchdown, meters | | verticalSpeed | float | Vertical speed at touchdown, meters per second | | distanceFrom1kftMarker | float | Distance from the 1000 ft marker or touchdown zone marker, meters | | groundRollDistance | float | Ground roll distance after touchdown, meters | | timeSinceLastLanding | double | Time since the previous landing, seconds | #### Violation | Field | Type | Description | |-------|------|-------------| | issuedBy | Issuer | Who issued the violation | | level | int | Severity level | | type | string | Violation type | | description | string | Detailed description | | created | datetime | Time the violation was recorded | #### Issuer | Field | Type | Description | |-------|------|-------------| | id | uuid | Issuer ID | | username | string | Issuer username | | callsign | string | Issuer callsign | | discourseUser | DiscourseUser? | Issuer's Discourse account, if available | #### DiscourseUser | Field | Type | Description | |-------|------|-------------| | userId | int | Discourse user ID | | username | string | Discourse username | | virtualOrganization | string? | VO of the user, if any | | avatarTemplate | string | URL template for the Discourse avatar | ```json { "errorCode": 0, "result": { "pageIndex": 1, "totalPages": 80, "totalCount": 799, "hasPreviousPage": false, "hasNextPage": true, "data": [{ "id": "9aeb16a3-ac69-41d3-9dd4-d62be72b1525", "created": "2022-01-10T10:37:41.965626", "userId": "b0018209-e010-40a0-afe1-00ecd5856c5e", "aircraftId": "849366e1-cb11-4d72-9034-78b11cd026b0", "liveryId": "a071518d-995a-4b3c-b65b-656da0d6ed86", "callsign": "VH-KAI", "server": "Casual Server", "dayTime": 2.5355167, "nightTime": 0, "totalTime": 2.5355167, "landingCount": 1, "originAirport": "YTYA", "destinationAirport": "YTYA", "xp": 25, "fuelUsedKg": 486.2, "landingStats": [{ "timestamp": "2022-01-10T13:05:12.965626Z", "maxGForce": 1.18, "groundSpeed": 61.7, "indicatedAirspeed": 119.5, "latitude": -35.811, "longitude": 148.645, "centerlineDistance": 3.4, "verticalSpeed": -3.0, "distanceFrom1kftMarker": 120.5, "groundRollDistance": 920.3, "timeSinceLastLanding": 3600 }], "worldType": 1, "violations": [{ "issuedBy": { "id": "2a11e620-1cc1-4ac6-90d1-18c4ed9cb913", "username": "Cameron", "callsign": "EC-CAM", "discourseUser": { "userId": 4, "username": "Cameron", "virtualOrganization": "", "avatarTemplate": "/user_avatar/community.infiniteflight.com/cameron/{size}/886772_2.png" } }, "level": 1, "type": "Ground Overspeed", "description": "Ground Overspeed", "created": "2023-10-31T16:34:51.014366+00:00" }] }] } } ``` --- ### GET /users/{userId}/flights/{flightId} URL: https://infiniteflight.com/guide/developer-reference/live-api/user-flight Get User Flight. Get one flight from a user's logbook. **Parameters:** `userId` (path, uuid, required), `flightId` (path, uuid, required). **Response** -> `UserFlight` (same schema and sub-types as Get User Flights, including `fuelUsedKg` and `landingStats`). --- ### GET /users/{userId}/atc URL: https://infiniteflight.com/guide/developer-reference/live-api/user-atc-sessions Get User ATC Sessions. Get the ATC session log of a user (paginated). **Parameters:** - `userId` (path, uuid, required) - `page` (query, int, optional, default 1): page index. **Response** -> `PaginatedList` of `UserAtcSession` #### UserAtcSession | Field | Type | Description | |-------|------|-------------| | id | uuid | Session ID | | atcSessionGroupId | uuid | Group of sessions (when a controller opens multiple frequencies at the same airport) | | facility | ATCFacility | Facility that was opened | | created | datetime | Time the frequency was first opened | | updated | datetime | Time the last report was received | | operations | int | Operations earned in the session | | totalTime | double | Session duration in minutes | | worldType | int | WorldType enum of the server | | server | string | Server name | | violationsIssued | int | Violations this user issued while controlling | #### ATCFacility | Field | Type | Description | |-------|------|-------------| | id | uuid | Facility ID | | airportIcao | string | ICAO of the airport of the facility | | latitude | double | Facility latitude | | longitude | double | Facility longitude | | frequencyType | int | ATCEntityType (FrequencyType) enum | ```json { "errorCode": 0, "result": { "pageIndex": 1, "totalPages": 80, "totalCount": 791, "hasPreviousPage": false, "hasNextPage": true, "data": [{ "id": "857b1686-455d-481a-8bdf-c46cd7711691", "atcSessionGroupId": "1fcff4cb-48e6-46dc-8c87-4202bcdd7cc0", "facility": { "id": "4fda33c2-91b9-1a57-98f2-a765abd4c019", "airportIcao": "VRMM", "latitude": 4.191753387451172, "longitude": 73.52915954589844, "frequencyType": 4 }, "created": "2020-07-03T10:27:08.021137", "updated": "2020-07-03T10:37:49.026714", "operations": 9, "totalTime": 86.15142588333333, "worldType": 3, "server": "Expert", "violationsIssued": 2 }] } } ``` --- ### GET /users/{userId}/atc/{atcSessionId} URL: https://infiniteflight.com/guide/developer-reference/live-api/user-atc-session Get User ATC Session. Get one ATC session from a user's log. **Parameters:** `userId` (path, uuid, required), `atcSessionId` (path, uuid, required). **Response** -> `UserAtcSession` (same schema as Get User ATC Sessions). --- ### GET /sessions/{sessionId}/notams URL: https://infiniteflight.com/guide/developer-reference/live-api/notams List all NOTAMs for a session. **Parameters:** `sessionId` (path, uuid, required): session ID from Get Sessions. **Response** -> `[NotamResult]` #### NotamResult | Field | Type | Description | |-------|------|-------------| | id | uuid | NOTAM ID | | title | string | Short title | | author | string | Author name | | type | int | NotamType: 0 = NOTAM, 1 = TFR | | sessionId | uuid? | Session where the NOTAM is published. null = all sessions | | radius | float | Radius in NM | | message | string | Main NOTAM message | | latitude | double | Decimal latitude of the NOTAM center | | longitude | double | Decimal longitude of the NOTAM center | | icao | string | ICAO of the nearest airport | | floor | int | Lowest altitude in feet | | ceiling | int | Highest altitude in feet | | startTime | datetime | Time the NOTAM comes into effect | | endTime | datetime | Time the NOTAM expires | ```json { "errorCode": 0, "result": [{ "id": "53671e16-f937-47ca-a5db-c13b6a882851", "title": "Special Airport Procedures", "author": "Infinite Flight", "type": 0, "sessionId": "7e5dcd44-1fb5-49cc-bc2c-a9aab1f6a856", "radius": 3, "message": "Special Airport Procedures in Effect: ...", "longitude": 114.20680199460077, "latitude": 22.31646633312086, "icao": "VHHX", "floor": 0, "ceiling": 10000, "startTime": "2022-02-14T16:34:14.916", "endTime": "2100-01-01T16:34:00" }] } ``` --- ### GET /aircraft URL: https://infiniteflight.com/guide/developer-reference/live-api/aircraft List all aircraft models. No parameters. **Response** -> `[AircraftPackage]` #### AircraftPackage | Field | Type | Description | |-------|------|-------------| | id | uuid | Model ID | | name | string | Aircraft name | ```json { "errorCode": 0, "result": [{ "id": "81d9ccd4-9c03-493a-811e-8fad3e57bd05", "name": "A-10" }] } ``` --- ### GET /aircraft/{aircraftId}/liveries URL: https://infiniteflight.com/guide/developer-reference/live-api/aircraft-liveries List all liveries for one aircraft model. **Parameters:** `aircraftId` (path, uuid, required): model ID from Get Aircraft. **Response** -> `[LiveryData]` #### LiveryData | Field | Type | Description | |-------|------|-------------| | id | uuid | Livery ID | | aircraftID | uuid | Aircraft model ID (note the capital "ID") | | aircraftName | string | Aircraft model name | | liveryName | string | Livery name | ```json { "errorCode": 0, "result": [{ "id": "701c826b-a160-4b1a-a89f-08d0afb4af1b", "aircraftID": "710c84ae-6fdc-4c4a-ac3b-4031c3036e98", "aircraftName": "Airbus A220-300", "liveryName": "airBaltic" }] } ``` --- ### GET /aircraft/liveries URL: https://infiniteflight.com/guide/developer-reference/live-api/liveries Get All Liveries. List all liveries of all aircraft. No parameters. **Response** -> `[LiveryData]` (same schema as above) --- ### GET /airport/{airportIcao} URL: https://infiniteflight.com/guide/developer-reference/live-api/airport-information Get information about one airport, including location data and scenery editing metadata. **Parameters:** `airportIcao` (string, required): airport ICAO. In the URL path; the docs parameter table lists it as "query". **Response** -> `AirportInfo` (see Shared Types) ```json { "errorCode": 0, "result": { "icao": "KLAX", "iata": "LAX", "name": "Los Angeles Intl", "city": "Los Angeles", "state": "California", "country": { "id": 243, "name": "United States", "isoCode": "US" }, "class": 3, "frequenciesCount": 16, "elevation": 125, "latitude": 33.9431209564209, "longitude": -118.40881633758545, "timezone": "UTC-08:00 America", "has3dBuildings": true, "hasJetbridges": true, "hasSafedockUnits": true, "hasTaxiwayRouting": true } } ``` --- ### GET /airports URL: https://infiniteflight.com/guide/developer-reference/live-api/3d-airports Get 3D Airports. List the 3D airports in Infinite Flight, with location data and scenery editing metadata. No parameters. **Response** -> `[AirportInfo]` (see Shared Types; same object as Get Airport Information) --- ## Samples and Client Libraries URL: https://infiniteflight.com/guide/developer-reference/live-api/samples Samples and client libraries for the Live API. To add a project, fork and make a pull request to https://github.com/Velocity23/infiniteflightlive-samples, or contact Infinite Flight on the forum or Discord. - NodeJS: https://github.com/Velocity23/infiniteflightlive-samples/tree/master/NodeJS - C#: https://github.com/Velocity23/infiniteflightlive-samples/tree/master/C%23 - Kotlin: https://github.com/A-FitzGerald/InfiniteLiveKt - PHP: https://github.com/Velocity23/infiniteflightlive-samples/tree/master/PHP - Python: https://github.com/robinb748/InfiniteFlight-LiveApi - Swift: https://github.com/sqeezelemon/SwiftyLiveApi - Go: https://github.com/sqeezelemon/golive --- ## Changelog URL: https://infiniteflight.com/guide/developer-reference/live-api/changelog - **2026-10-20:** Rewrote the usage and data rules to make them clearer. The rules apply to all developers in the same way, with no exceptions. Caches can keep only the latest response for each request, for no more than 1 hour. Statistics and leaderboards calculated from Live API data, and peer-to-peer sharing of cached data, are now named as prohibited. The page also lists the data that you can keep and gives examples. Moved the PublicApi v3 preview docs to their own section (https://infiniteflight.com/guide/developer-reference/live-api-v3/overview), with one page for each endpoint, an OAuth2 page, and a data types page. The llms.txt file now includes PublicApi v3. - **2026-06-01:** Added `fuelUsedKg` and `landingStats` to Get User Flights and Get User Flight. Both come from the FlightSession/FlightLegs system. `fuelUsedKg` can be null for legacy flights. `landingStats` is empty when landing stats are unavailable. - **2026-03-18:** Added Get Flight Plans (Bulk), `POST /v2/sessions/{sessionId}/flights/flightplans`: flight plans for up to 10 flights in one request. Fixed an issue where the Flights endpoint could sometimes return an incomplete list of flights during a cache refresh cycle. - **2026-03-17:** Lowered the default rate limit to 30 requests per minute per API key. Added a higher default limit of 100 requests per minute for API keys linked to users with an active paid Pro subscription. Added usage and polling best practices, including temporary-cache-only storage rules and an explicit prohibition on AI training use of Live API data. - **2024-04-12:** Added `pilotState` to the Flights endpoint (`Active = 0`, `AwayInFlight = 1`, `AwayParked = 2`, `InBackground = 3`). Fixed missing `airportLatitude` and `airportLongitude` in the ATC endpoint (the current ATC page names these fields `latitude` and `longitude`). --- # Infinite Flight: PublicApi v3 Preview (OAuth2) > PublicApi v3 is a PREVIEW. It is under development and can change before general availability. It gives third-party apps OAuth2 access to the Live organizations, members, aircraft, flight logs, and schedules of the signed-in Infinite Flight user. For developers who build apps, websites, and bots for Live organizations. Source: https://infiniteflight.com/guide/developer-reference/live-api-v3 (infiniteflight-docs 6b73625). Generated by a model on 2026-10-20. If this file and the website disagree, the website is correct. The Live API usage rules apply to v3 in the same way, including organization members, aircraft flight logs, pilot flight times, and statistics calculated from them. ## IMPORTANT — Usage Rules These rules are strictly enforced. They cover the Live API v2 and the PublicApi v3 preview in the same way, for all developers, API keys, OAuth clients, apps, websites, and bots. They do not cover the Connect API (local simulator data on the user's own device). There are no exceptions for individual apps. Violating them will result in your API key and associated accounts being permanently banned. Full rules with examples: https://infiniteflight.com/guide/developer-reference/api-rules/usage-and-data-rules ### Mandatory Polling Intervals Do NOT treat the Live API as a streaming feed. These are hard minimums that your code MUST enforce. | Data | Minimum Interval | Notes | |------|-----------------|-------| | `GET /sessions`, `GET /sessions/{id}` | 10 min | Server-cached for 10 min. Faster polling returns identical data. | | `GET .../flights`, `GET .../atc`, `GET .../airport/.../status` | 15 sec | Reuse list responses. Do not fetch individual items if the list already has the data. | | `GET .../flights/{id}/route`, `GET .../flights/{id}/flightplan` | 15 sec | Only fetch when a user specifically requests a flight's details. | | User endpoints (`/users/...`) | 5 min | Historical data. Cache aggressively. | | `GET /aircraft`, `GET /aircraft/liveries`, `GET /airports` | 60 min+ | Reference data that rarely changes. Can stay in the cache until you refresh it. | You MUST stop all polling after 15 minutes of user inactivity and resume only when the user explicitly interacts again. A bot that posts live notices (for example, a Discord message when a flight is complete) can continue to poll, but only the endpoints that it needs for those notices. ### Mandatory Caching A cache is the ONLY place where Live API data may be kept. Every cache MUST obey these rules: - **Latest response only.** Keep one response per request. On refresh, replace the old response. Do NOT append new responses to old ones. - **Minimum interval.** Cache every response for at least the minimum interval above. If you have a cached response within the interval, you MUST return it — do not call the API again. - **1 hour maximum.** Discard live data and user data no later than 1 hour after it was fetched. Reference data can stay until you refresh it. - **Location.** The cache may be on the device of the user who requested the data, or on a server that you control. A server cache may serve all users of your app. Do NOT share cached data between user devices (for example, peer-to-peer). **Data you MAY keep permanently:** IDs used in API requests (user, organization, aircraft, session, flight IDs), OAuth tokens and API keys (stored securely), the link between your users and their Infinite Flight accounts, your users' settings, and data that your users type into your app themselves. **Acceptable caching patterns:** In-memory with TTL (C# example): ```csharp // MemoryCache with absolute expiration var options = new MemoryCacheEntryOptions() .SetAbsoluteExpiration(TimeSpan.FromMinutes(10)); // sessions cache.Set("sessions", response, options); ``` In-memory with TTL (Node.js example): ```javascript // Simple TTL cache const cache = new Map(); function getCached(key, ttlMs, fetchFn) { const entry = cache.get(key); if (entry && Date.now() - entry.time < ttlMs) return entry.data; return fetchFn().then(data => { cache.set(key, { data, time: Date.now() }); return data; }); } // Usage: getCached('sessions', 10 * 60 * 1000, () => fetchSessions()) ``` Redis with TTL: ``` SET if:sessions EX 600 # 10 min for sessions SET if:flights:abc EX 15 # 15 sec for flights SET if:user:xyz EX 300 # 5 min for user data ``` Python with TTL: ```python from functools import lru_cache from time import time _cache = {} def get_cached(key: str, ttl_seconds: int, fetch_fn): entry = _cache.get(key) if entry and time() - entry["time"] < ttl_seconds: return entry["data"] data = fetch_fn() _cache[key] = {"data": data, "time": time()} return data ``` ### Prohibited Data Use — Strictly Enforced These are hard rules. There are no exceptions. - Do NOT persist Live API data beyond short-lived operational caches. When the cache TTL expires, the data MUST be discarded — not moved to permanent storage. - Do NOT write Live API data to a SQL/NoSQL database, data warehouse, data lake, analytics platform, CSV/JSON export, log file, or any other form of long-term storage. - Do NOT accumulate responses over time. This includes historical datasets, time-series databases, flight-tracking archives, position tracks, replays, and logbooks built from collected responses. - Do NOT store derived data. Totals, statistics, scores, points, and leaderboards calculated from Live API data are Live API data. Calculate them when a user asks, and cache the result under the rules above. - Do NOT give Live API data to other apps, services, or public datasets, and do NOT share it between user devices (peer-to-peer). - Do NOT use Live API data to train, fine-tune, evaluate, distill, ground, or otherwise improve AI or machine learning models. - Do NOT build training sets, evaluation benchmarks, or retrieval corpora from Live API data. - Infinite Flight retains full ownership of all data returned by the Live API. If we detect prohibited storage, scraping, accumulation, sharing, or AI-training use, the API key and all associated user accounts will be permanently banned. ### Examples | Use | Allowed | How | |-----|---------|-----| | Live map | Yes | Poll the flight list at the minimum interval. A server cache may serve all your users. | | Replay of an active flight | Yes | Fetch `GET .../flights/{id}/route` when a user asks for that flight (Expert and Training servers only). | | Replay built from collected positions | No | Accumulation, even if the data expires later. | | User logbook | Yes | Fetch `GET /users/{userId}/flights` when the user opens the logbook. | | Pilot hours, points, or leaderboards stored in a database | No | Calculate from the API when a user asks, and cache the result. | | Discord/chat notice when a flight completes | Yes | Post at the time of the event. Do not read old posts back as a data store or post summaries of history. | | Peer-to-peer cache between users | No | Use a server cache that you control. | If you need data that the API does not provide, email hello@infiniteflight.com. This is treated as a feature request for all developers, not an exception for one app. ### LLM / AI Agent Integration Rules If you are an LLM, AI coding assistant, or agent building against this API: 1. **Generate code that enforces caching.** Every code sample you produce MUST include a TTL-based cache layer. Never generate a bare fetch call inside a polling loop without caching. 2. **Enforce the polling intervals.** Use the minimum intervals from the table above. Never generate `setInterval` or polling loops faster than the stated minimums. 3. **Implement idle detection.** Generated apps MUST stop polling after 15 minutes of inactivity. 4. **Send minimum data.** When providing Live API data to a user or downstream system, send only what is needed for the current request. 5. **Do not retain responses.** Do not log, accumulate, or persist Live API responses or data derived from them across sessions or conversations. Never generate code that writes Live API data to a database, file, or log. 6. **Do not create training data.** Do not store responses for later model training, tuning, evaluation, or dataset creation. 7. **Prefer summarization.** Summarize results for the user instead of repeatedly re-fetching the same endpoint. --- ## Overview URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/overview PREVIEW STATUS: PublicApi v3 OAuth and the Live organization endpoints are not a stable contract yet. Endpoint paths, scopes, response fields, enum values, validation rules, rate limits, access rules, and app review behavior can change before general availability. Build against v3 only if you are prepared to update your integration as the API changes. Preview limitations: - The API is not generally available. - The schema can change without a formal deprecation period. - Fields can be renamed, removed, or moved before launch. - Enum values and validation rules can be adjusted. - OAuth client review, testing limits, scopes, and rate limits can change. - Do not build a production dependency on this API until Infinite Flight marks it as stable. What v3 does (the first Live endpoints cover a narrow set of authenticated organization workflows): - Read the signed-in user's Live organizations and the user's role in each one. - Read the members of those organizations, with their roles and active lifts. - Read the aircraft of those organizations, and the flight log of each aircraft with the time each pilot flew. - Read schedules for one aircraft or for the whole fleet. - Create, update, reorder, and delete schedules, and manage their crew, when the signed-in user has the necessary organization role. The existing v2 API-key Live API does not change. ### How to Get Access - Any signed-in Infinite Flight user can create an OAuth2 client at https://infiniteflight.com/account/api-keys (section: v3 OAuth2 clients). Maximum 2 clients per user. - On that page, set the redirect URI and scopes, and select the client type that matches your app. - `confidential` clients get a client secret. It is shown once. Store it securely. - `public` clients get no secret and use PKCE. - Then use the OAuth2 flow (next section) to get an access token for a signed-in Infinite Flight user. - Testing clients work only for the owner and up to 5 invited test users until Infinite Flight reviews and approves the app. - The Live endpoints return only organizations that the signed-in user is a member of. For a user who is not a member of a Live organization, they return empty results. ### Base URLs | Service | URL | | --- | --- | | OAuth2 authorization server | `https://api.infiniteflight.com/auth/v2` | | PublicApi v3 | `https://api.infiniteflight.com/public/v3` | | OAuth2 issuer | `https://auth.infiniteflight.com/` | OAuth2 protocol endpoints are under `/auth/v2/connect/*`. The Live organization endpoints are under `/public/v3/live`. ### Scopes Request only the scopes that your app needs. Scopes are space-delimited in the authorization request. | Scope | Grants | | --- | --- | | `openid` | Sign the user in. | | `profile` | Read the user's basic sign-in profile. | | `offline_access` | Request a refresh token. | | `live:organizations.read` | Read Live organizations the user belongs to. | | `live:members.read` | Read the members of Live organizations the user belongs to, with their roles and active lifts. | | `live:aircraft.read` | Read Live aircraft in organizations the user belongs to. | | `live:schedules.read` | Read Live schedules in organizations the user belongs to. | | `live:schedules.write` | Create, update, reorder, and delete Live schedules and manage their crew, where the user is allowed to manage schedules. | ### Response Envelope All PublicApi responses use this envelope: ```json { "errorCode": 0, "result": {} } ``` `errorCode: 0` is success. A non-zero `errorCode` is a validation, authorization, or lookup failure. | HTTP status | Meaning | | --- | --- | | `400` | Request validation failed. | | `401` | Missing, expired, or invalid bearer token. | | `403` | Missing scope, disabled client, app still in testing, or the user does not have access. | | `404` | Organization, aircraft, schedule, user, or crew assignment not found for the signed-in user. | | `429` | Rate limit exceeded. | Endpoint-specific error codes: `errorCode: 10` (HTTP 400) = schedule already has 3 crew members (Assign or Update Schedule Crew). `errorCode: 11` (HTTP 404) = user is not assigned to the schedule (Remove Schedule Crew). ### Authorization Model The OAuth client must be enabled, and the signed-in user must have access to the requested organization data. Every request sends `Authorization: Bearer `. | Operation | Required scope | User requirement | | --- | --- | --- | | Read organizations | `live:organizations.read` | Member of the organization. | | Read members | `live:members.read` | Member of the organization. | | Read aircraft | `live:aircraft.read` | Member of the aircraft's organization. | | Read schedules | `live:schedules.read` | Member of the aircraft's organization. | | Write schedules and crew | `live:schedules.write` | Owner or admin of the organization. | ### Endpoint Index Paths are relative to `https://api.infiniteflight.com/public/v3`. Each endpoint has its own section below. | Method | Path | Scope | Result | | --- | --- | --- | --- | | GET | `/live/organizations` | `live:organizations.read` | `Organization[]` | | GET | `/live/organizations/{organizationId}` | `live:organizations.read` | `Organization` | | GET | `/live/organizations/{organizationId}/members` | `live:members.read` | `OrganizationMember[]` | | GET | `/live/organizations/{organizationId}/aircraft` | `live:aircraft.read` | `Aircraft[]` | | GET | `/live/organizations/{organizationId}/schedules` | `live:schedules.read` | `Page` of `Schedule` | | GET | `/live/aircraft/{aircraftId}` | `live:aircraft.read` | `Aircraft` | | GET | `/live/aircraft/{aircraftId}/position` | `live:aircraft.read` | `AircraftPosition` | | GET | `/live/aircraft/{aircraftId}/flights` | `live:aircraft.read` | `Page` of `AircraftFlight` | | GET | `/live/aircraft/{aircraftId}/schedules` | `live:schedules.read` | `Schedule[]` | | POST | `/live/aircraft/{aircraftId}/schedules` | `live:schedules.write` | `Schedule` | | PUT | `/live/schedules/{scheduleId}` | `live:schedules.write` | `Schedule` | | PUT | `/live/schedules/{scheduleId}/flightplan` | `live:schedules.write` | `Schedule` | | PUT | `/live/schedules/{scheduleId}/crew/{userId}` | `live:schedules.write` | `Schedule` | | DELETE | `/live/schedules/{scheduleId}/crew/{userId}` | `live:schedules.write` | `Schedule` | | PUT | `/live/aircraft/{aircraftId}/schedules/reorder` | `live:schedules.write` | boolean | | DELETE | `/live/schedules/{scheduleId}` | `live:schedules.write` | boolean | `{aircraftId}` in every path is the persistent organization aircraft ID (`Aircraft.id`), not the content field `Aircraft.aircraftId`. ### Data Use The Live API usage and data rules (https://infiniteflight.com/guide/developer-reference/api-rules/usage-and-data-rules) apply to PublicApi v3 in the same way. Use Live data only for simulated-flight features. Do not use it for real-world flight. Do not store, accumulate, or share it. Do not use it to train, fine-tune, evaluate, or improve AI models. This includes organization members, aircraft flight logs, pilot flight times, and statistics that you calculate from them. ## OAuth2 Authorization URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/oauth PublicApi v3 uses the OAuth2 authorization code flow with PKCE. PKCE (`code_challenge_method=S256`) is required for both client types. Token endpoint requests use the standard `application/x-www-form-urlencoded` body. Scopes are the same as in the Scopes table above. ### Client Types | Client type | Use for | Token exchange | | --- | --- | --- | | `confidential` | Server-side web apps and services that can keep a client secret private. | Exchange the code from your backend. Authenticate the client with its secret. | | `public` | Browser-only apps, native apps, mobile apps, CLIs, or any app that cannot keep a secret private. | Exchange the code with `client_id` and `code_verifier`. No client secret is issued or accepted. | Use a confidential client when you have a backend that can keep the secret out of the browser. Use a public client when your app cannot safely store a secret. ### Authorization Request Redirect the user to the authorization endpoint: ```http GET https://api.infiniteflight.com/auth/v2/connect/authorize?response_type=code&client_id=ifc_your_client_id&redirect_uri=https%3A%2F%2Fexample.com%2Foauth%2Fcallback&scope=openid%20profile%20live%3Aorganizations.read%20live%3Aaircraft.read&state=random_state&code_challenge=pkce_challenge&code_challenge_method=S256 ``` Parameters: `response_type=code`, `client_id`, `redirect_uri` (registered), `scope` (space-delimited), `state`, `code_challenge`, `code_challenge_method=S256`, and optional `prompt=consent`. The user signs in at `auth.infiniteflight.com` and approves the requested scopes. If approved, the authorization server redirects to the registered `redirect_uri` with a `code` and the original `state`. ### Forcing the Consent Button (prompt=consent) - By default, Infinite Flight can skip the consent screen when the same user already authorized the same client and scopes. The server then redirects directly to your `redirect_uri`. This is normal OAuth behavior. - Some redirect mechanisms, especially iOS Universal Links, can require the final app-opening redirect to occur immediately after a user gesture. If your app needs this, add `&prompt=consent` to the authorization request. - With `prompt=consent`, Infinite Flight always shows the consent screen, even if the user approved the same scopes before. The final redirect occurs after the user presses the authorize button. - Use it only when your app needs a user-initiated final redirect. If your redirect URI works without it, leave it off so that returning users skip repeat consent prompts. ### Token Exchange Endpoint: `POST https://api.infiniteflight.com/auth/v2/connect/token`, `Content-Type: application/x-www-form-urlencoded`. Confidential client (send from your server, include the secret): ```http grant_type=authorization_code&client_id=ifc_your_client_id&client_secret=your_client_secret&code=authorization_code_from_redirect&redirect_uri=https%3A%2F%2Fexample.com%2Foauth%2Fcallback&code_verifier=pkce_verifier ``` Public client (no client secret): ```http grant_type=authorization_code&client_id=ifc_your_public_client_id&code=authorization_code_from_redirect&redirect_uri=https%3A%2F%2Fexample.com%2Foauth%2Fcallback&code_verifier=pkce_verifier ``` Response. `refresh_token` is included only if `offline_access` was granted: ```json { "access_token": "eyJ...", "token_type": "Bearer", "expires_in": 1800, "refresh_token": "..." } ``` Call PublicApi v3 with `Authorization: Bearer `. ### Refresh Refresh tokens rotate. When you use a refresh token, store the newest refresh token from the token endpoint and discard the old one. Same endpoint and content type as the token exchange. Confidential client: ```http grant_type=refresh_token&client_id=ifc_your_client_id&client_secret=your_client_secret&refresh_token=stored_refresh_token ``` Public client: ```http grant_type=refresh_token&client_id=ifc_your_public_client_id&refresh_token=stored_refresh_token ``` ### Security Notes - Do not put a client secret in browser code, mobile apps, or any downloadable client. - Use public clients only when a secret cannot be kept private. They still require PKCE. Store their tokens in the safest storage available on the platform. - Store tokens securely. Revoke them when a user disconnects your app. - Do not rely on JWT claim contents for product behavior. Treat the access token as an opaque credential, and call the APIs to get data. - PublicApi v3 access tokens are issued for audience `public-api-v3`. - Testing clients are limited to the owner and invited test users until Infinite Flight reviews them. The API Playground sample shows both confidential and public PKCE client flows: https://github.com/infiniteflight/infiniteflight-api-playground ## List Organizations URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/organizations - `GET https://api.infiniteflight.com/public/v3/live/organizations` - Scope: `live:organizations.read`. User requirement: none. Returns only organizations that the signed-in user is a member of. - Parameters: none. - Result: `Organization[]`. - Returns the active organizations that the signed-in user belongs to. ```json { "errorCode": 0, "result": [ { "id": "1337830a-abf9-4315-9488-e8cebd7f485a", "name": "PacificJet", "type": 3, "operationType": 1, "worldType": 3, "status": 0, "description": "Long-haul scheduled operations.", "role": 2 } ] } ``` ## Get Organization URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/organization - `GET https://api.infiniteflight.com/public/v3/live/organizations/{organizationId}` - Scope: `live:organizations.read`. User requirement: member of the organization. - Path: `organizationId` (uuid, required), from List Organizations. - Result: `Organization`. - Returns one active organization if the signed-in user is a member. `role` is the signed-in user's role in that organization. ## List Organization Members URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/organization-members - `GET https://api.infiniteflight.com/public/v3/live/organizations/{organizationId}/members` - Scope: `live:members.read`. User requirement: member of the organization. - Path: `organizationId` (uuid, required), from List Organizations. - Result: `OrganizationMember[]`. - Returns all members of the organization. Order: owners, then admins, then members. Each group is sorted by username. - `activeLifts` counts the lifts that the member applied to this organization and that are active now. Expired, refunded, and reassigned lifts are not counted. Lifts from users who left the organization are not in the list. ```json { "errorCode": 0, "result": [ { "userId": "5b0c3f4e-8f3a-4f0e-9c55-2f1a6c7d9e10", "username": "PacificJetCEO", "role": 2, "joinedAt": "2026-07-03T12:00:00Z", "activeLifts": 3 }, { "userId": "a9d2e7c1-3b4f-4c8a-8e21-6f0b5d4c3a29", "username": "LineCaptain", "role": 0, "joinedAt": "2026-08-14T09:30:00Z", "activeLifts": 0 } ] } ``` ## List Organization Aircraft URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/organization-aircraft - `GET https://api.infiniteflight.com/public/v3/live/organizations/{organizationId}/aircraft` - Scope: `live:aircraft.read`. User requirement: member of the organization. - Path: `organizationId` (uuid, required), from List Organizations. - Result: `Aircraft[]`. - Returns the active aircraft of the organization. - `id` is the persistent organization aircraft ID. Use it in `/live/aircraft/{aircraftId}` and the schedule endpoints. `aircraftId` is the Infinite Flight aircraft or livery content identifier. It is not the persistent aircraft ID. - `visibility` tells if the aircraft is visible or hangared. It is separate from fleet storage state. Aircraft outside the organization's active fleet slots return `isFleetActiveSlot: false` and can show as storage in the Live portal, even when `visibility` is `Visible`. ```json { "errorCode": 0, "result": [ { "id": "28fb4508-9eca-4120-abe4-3c4f06f6e71c", "aircraftId": "3f78766a-30c8-4d65-95ae-ebc2fb758aac", "organizationId": "1337830a-abf9-4315-9488-e8cebd7f485a", "registration": "N682XL", "status": 0, "visibility": 1, "fleetPriority": 1000, "fleetRank": 1, "isFleetActiveSlot": true, "createdAt": "2026-07-03T12:00:00Z" } ] } ``` ## List Organization Schedules URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/organization-schedules - `GET https://api.infiniteflight.com/public/v3/live/organizations/{organizationId}/schedules` - Scope: `live:schedules.read`. User requirement: member of the organization. - Path: `organizationId` (uuid, required), from List Organizations. - Query (all optional): - `aircraftId` (uuid): persistent organization aircraft ID. Repeat it for more than one aircraft, for example `?aircraftId=&aircraftId=`. Maximum 100 values. Leave it out to get all aircraft. - `page` (integer): one-based page number. Default `1`. - `pageSize` (integer): `1` to `100`. Default `100`. - Result: `Page` of `Schedule`. - Returns the open schedules of the whole fleet in one request. Open = not `Cancelled` and not `Arrived`. Sorted by aircraft, then by `sequence`. - The docs sample shows only some fields (`id`, `status`, `callsign`, `aircraftId`, `isTimeless`, `sequence`). Each item has all `Schedule` fields. ## Get Aircraft URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/aircraft - `GET https://api.infiniteflight.com/public/v3/live/aircraft/{aircraftId}` - Scope: `live:aircraft.read`. User requirement: member of the aircraft's organization. - Path: `aircraftId` (uuid, required): persistent organization aircraft ID (`id` from List Organization Aircraft). - Result: `Aircraft`. - Returns one active aircraft if the signed-in user belongs to the owning organization. ## Get Aircraft Position URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/aircraft-position - `GET https://api.infiniteflight.com/public/v3/live/aircraft/{aircraftId}/position` - Scope: `live:aircraft.read`. User requirement: member of the aircraft's organization. - Path: `aircraftId` (uuid, required): persistent organization aircraft ID. - Result: `AircraftPosition`. - Returns the aircraft's last persisted Live position and state. - This is the stored Live aircraft state. It can be stale when the aircraft is not actively reporting. To check if the aircraft is active in multiplayer now, compare this aircraft `id` with v2 `FlightEntry.flightId` from `/public/v2/sessions/{sessionId}/flights`. ```json { "errorCode": 0, "result": { "id": "28fb4508-9eca-4120-abe4-3c4f06f6e71c", "state": 2, "isOnGround": false, "latitude": 27.3172, "longitude": 48.6787, "altitude": 34750, "heading": 83.4, "speed": 451.2, "verticalSpeed": 0, "lastPilotId": "3f8b28bf-bbb1-4024-80ae-2a0ea9b30685", "lastPilotUsername": "Chhettri22", "updatedAt": "2026-07-03T12:05:00Z" } } ``` ## List Aircraft Flights URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/aircraft-flights - `GET https://api.infiniteflight.com/public/v3/live/aircraft/{aircraftId}/flights` - Scope: `live:aircraft.read`. User requirement: member of the aircraft's organization. - Path: `aircraftId` (uuid, required): persistent organization aircraft ID. - Query (optional): `page` (integer, one-based, default `1`), `pageSize` (integer, `1` to `100`, default `25`). - Result: `Page` of `AircraftFlight`. - Returns the flight log of the aircraft, newest first. This is the same log that the app shows for the aircraft. - `crew`: each pilot who flew the aircraft on this flight, in the order they joined. - `pilotFlightTimes`: one entry for each period that a pilot was in control. If a pilot flies, leaves, and comes back after another pilot, that pilot has two entries. Add `flightTimeSeconds` for each `userId` to get each pilot's total time. - A flight log entry is not linked to a schedule. To match a flight to a schedule, compare `originIcao`, `destinationIcao`, and the actual times. The schedule `crew` lists the assigned pilots. The flight `crew` and `pilotFlightTimes` list the pilots who actually flew. ```json { "errorCode": 0, "result": { "items": [ { "id": "0b8cc273-d97d-4223-afac-907d09d8ca8b", "aircraftId": "28fb4508-9eca-4120-abe4-3c4f06f6e71c", "organizationId": "1337830a-abf9-4315-9488-e8cebd7f485a", "callsign": "N682XL", "originIcao": "KLAX", "destinationIcao": "KJFK", "actualDepartureUtc": "2026-07-03T18:42:00Z", "actualArrivalUtc": "2026-07-03T23:51:00Z", "status": 1, "flightTimeMinutes": 309, "airframeTimeMinutes": 18240, "crew": [ { "userId": "3f8b28bf-bbb1-4024-80ae-2a0ea9b30685", "username": "Chhettri22" }, { "userId": "a9d2e7c1-3b4f-4c8a-8e21-6f0b5d4c3a29", "username": "LineCaptain" } ], "pilotFlightTimes": [ { "userId": "3f8b28bf-bbb1-4024-80ae-2a0ea9b30685", "username": "Chhettri22", "flightTimeSeconds": 10800, "startSeconds": 0, "endSeconds": 10800 }, { "userId": "a9d2e7c1-3b4f-4c8a-8e21-6f0b5d4c3a29", "username": "LineCaptain", "flightTimeSeconds": 7740, "startSeconds": 10800, "endSeconds": 18540 } ] } ], "page": 1, "pageSize": 25, "totalCount": 1, "totalPages": 1 } } ``` ## List Aircraft Schedules URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/aircraft-schedules - `GET https://api.infiniteflight.com/public/v3/live/aircraft/{aircraftId}/schedules` - Scope: `live:schedules.read`. User requirement: member of the aircraft's organization. - Path: `aircraftId` (uuid, required): persistent organization aircraft ID. - Result: `Schedule[]`, ordered by `sequence`. ```json { "errorCode": 0, "result": [ { "id": "fd0f8a7c-fab2-4fd0-baf7-4b87e8f7cc2f", "status": 1, "callsign": "PJX421", "organizationId": "1337830a-abf9-4315-9488-e8cebd7f485a", "aircraftId": "28fb4508-9eca-4120-abe4-3c4f06f6e71c", "flightType": 1, "originIcao": "KLAX", "destinationIcao": "KJFK", "scheduledDepartureUtc": "2026-07-03T18:30:00Z", "scheduledArrivalUtc": "2026-07-03T23:45:00Z", "actualDepartureUtc": null, "actualArrivalUtc": null, "briefing": "Scheduled transcontinental service.", "debriefing": null, "flightPlan": "KLAX DCT KJFK", "crew": [ { "userId": "3f8b28bf-bbb1-4024-80ae-2a0ea9b30685", "username": "Chhettri22", "role": 0 } ], "sequence": 1, "createdAt": "2026-07-03T12:00:00Z", "updatedAt": "2026-07-03T12:00:00Z" } ] } ``` Note: this sample has no `isTimeless` field, but the `Schedule` type includes it. ## Create Schedule URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/create-schedule - `POST https://api.infiniteflight.com/public/v3/live/aircraft/{aircraftId}/schedules` - Scope: `live:schedules.write`. User requirement: owner or admin of the aircraft's organization. - Path: `aircraftId` (uuid, required): persistent organization aircraft ID. - Body: `ScheduleRequest`, `application/json`. - Result: `Schedule`. - Creates a scheduled flight at the end of the aircraft's schedule list. Sample body: ```json { "callsign": "PJX421", "flightType": 1, "originIcao": "KLAX", "destinationIcao": "KJFK", "scheduledDepartureUtc": "2026-07-03T18:30:00Z", "scheduledArrivalUtc": "2026-07-03T23:45:00Z", "briefing": "Scheduled transcontinental service.", "flightPlan": "KLAX DCT KJFK" } ``` Timeless schedules: - Send `isTimeless: true`. A timeless schedule has no times, and pilots can fly the leg when they want. This is the same as "Schedule type: Timeless" on the Live website. You can leave out the scheduled times: ```json { "callsign": "PJX421", "flightType": 1, "originIcao": "KLAX", "destinationIcao": "KJFK", "isTimeless": true } ``` - A timeless schedule returns `isTimeless: true`, and both scheduled times are `0001-01-01T00:00:00Z`. - A request with both times set to `0001-01-01T00:00:00Z` also makes a timeless schedule. ## Update Schedule URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/update-schedule - `PUT https://api.infiniteflight.com/public/v3/live/schedules/{scheduleId}` - Scope: `live:schedules.write`. User requirement: owner or admin of the schedule's organization. - Path: `scheduleId` (uuid, required): `id` of a `Schedule`. - Body: `ScheduleRequest`, `application/json` (same body as Create Schedule). - Result: the updated `Schedule`. - Send `isTimeless: true` to change a schedule to timeless. Send `isTimeless: false` with both times to change it back. ## Update Schedule Flight Plan URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/update-schedule-flight-plan - `PUT https://api.infiniteflight.com/public/v3/live/schedules/{scheduleId}/flightplan` - Scope: `live:schedules.write`. User requirement: owner or admin of the schedule's organization. - Path: `scheduleId` (uuid, required): `id` of a `Schedule`. - Body: `ScheduleFlightPlanRequest`, `application/json`. Sample: `{ "flightPlan": "KLAX DCT LAS DCT KJFK" }` - Result: `Schedule`. - Set `flightPlan` to `null` or an empty string to clear the stored flight plan. ## Assign or Update Schedule Crew URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/assign-schedule-crew - `PUT https://api.infiniteflight.com/public/v3/live/schedules/{scheduleId}/crew/{userId}` - Scope: `live:schedules.write`. User requirement: owner or admin of the schedule's organization. - Path: `scheduleId` (uuid, required): `id` of a `Schedule`. `userId` (uuid, required): Infinite Flight user ID of an organization member. - Body: `ScheduleCrewAssignmentRequest`, `application/json`. Sample: `{ "role": 0 }` - Result: the updated `Schedule`. - Assigns the organization member `{userId}` to the schedule. The user must be a member of the schedule's organization. - If the user is already assigned, the endpoint changes the user's role. It does not create a duplicate assignment. - Maximum 3 crew members per schedule. If the schedule already has 3, the endpoint returns HTTP `400` with `errorCode: 10`. ## Remove Schedule Crew URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/remove-schedule-crew - `DELETE https://api.infiniteflight.com/public/v3/live/schedules/{scheduleId}/crew/{userId}` - Scope: `live:schedules.write`. User requirement: owner or admin of the schedule's organization. - Path: `scheduleId` (uuid, required): `id` of a `Schedule`. `userId` (uuid, required): Infinite Flight user ID of an organization member. - Body: none. - Result: the updated `Schedule`. - Removes the crew assignment for `{userId}`. Returns HTTP `404` with `errorCode: 11` if the user is not assigned to the schedule. ## Reorder Schedules URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/reorder-schedules - `PUT https://api.infiniteflight.com/public/v3/live/aircraft/{aircraftId}/schedules/reorder` - Scope: `live:schedules.write`. User requirement: owner or admin of the aircraft's organization. - Path: `aircraftId` (uuid, required): persistent organization aircraft ID. - Body: `ScheduleReorderRequest`, `application/json`. - Result: boolean. `true` when the reorder succeeds. - Move to the top: `{ "scheduleId": "fd0f8a7c-fab2-4fd0-baf7-4b87e8f7cc2f", "afterId": null }` - Move after another schedule: `{ "scheduleId": "fd0f8a7c-fab2-4fd0-baf7-4b87e8f7cc2f", "afterId": "95d422b5-3c18-486d-95a7-1f8e06f10f57" }` - Only schedules with status `Scheduled` or `InFlight` are reordered. ## Delete Schedule URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/delete-schedule - `DELETE https://api.infiniteflight.com/public/v3/live/schedules/{scheduleId}` - Scope: `live:schedules.write`. User requirement: owner or admin of the schedule's organization. - Path: `scheduleId` (uuid, required): `id` of a `Schedule`. - Body: none. - Result: boolean. Deletes the schedule and returns `true`. ## Data Types URL: https://infiniteflight.com/guide/developer-reference/live-api-v3/data-types Enums are numeric values in JSON. The enum tables list the current preview values. "?" after a type means the value can be null. ### Organization | Field | Type | Description | | --- | --- | --- | | `id` | uuid | Organization ID. | | `name` | string | Display name. | | `type` | PersistentOrganizationType | Join type. | | `operationType` | OrganizationOperationType | Type of operation flown. | | `worldType` | WorldType | World the organization belongs to. | | `status` | PersistentOrganizationRecordStatus | Record status. | | `description` | string? | Description. | | `role` | PersistentOrganizationMemberRole | Role of the signed-in user in this organization. | ### OrganizationMember | Field | Type | Description | | --- | --- | --- | | `userId` | uuid | Infinite Flight user ID. | | `username` | string? | Current public username, if available. | | `role` | PersistentOrganizationMemberRole | Role of the member in the organization. | | `joinedAt` | date-time | UTC time when the member joined. | | `activeLifts` | number | Number of active lifts the member applied to the organization. | ### Aircraft | Field | Type | Description | | --- | --- | --- | | `id` | uuid | Persistent organization aircraft ID. Use as `{aircraftId}` in Live organization endpoints. | | `aircraftId` | uuid | Infinite Flight aircraft or livery content identifier. | | `organizationId` | uuid | Owning organization ID. | | `registration` | string | Registration or display registration. | | `status` | PersistentAircraftRecordStatus | Record status. | | `visibility` | PersistentAircraftVisibility | Visible or hangared. | | `fleetPriority` | number? | User-controlled fleet ordering preference. Lower values are preferred active slots. | | `fleetRank` | number | One-based rank in the organization's fleet order. | | `isFleetActiveSlot` | boolean | Inside the organization's active fleet slots. `false` = the Live portal can show the aircraft as storage. | | `createdAt` | date-time | UTC creation time. | ### AircraftPosition | Field | Type | Description | | --- | --- | --- | | `id` | uuid | Persistent organization aircraft ID. | | `state` | AircraftPersistenceState | Last persisted aircraft state. | | `isOnGround` | boolean | Last persisted state was on the ground. | | `latitude` | double | Last persisted decimal latitude. | | `longitude` | double | Last persisted decimal longitude. | | `altitude` | double | Last persisted altitude, feet. | | `heading` | double | Last persisted true heading, degrees, normalized to `0`-`360`. | | `speed` | double | Last persisted ground speed, knots. | | `verticalSpeed` | double | Last persisted vertical speed, feet per minute. | | `lastPilotId` | uuid? | User ID that last updated the persistent aircraft state. | | `lastPilotUsername` | string? | Username for `lastPilotId`, if available. | | `updatedAt` | date-time | UTC time of the last update of the persistent aircraft state. | ### AircraftFlight | Field | Type | Description | | --- | --- | --- | | `id` | uuid | Flight log entry ID. For most flights, the Live flight ID of the flight that started the entry. | | `aircraftId` | uuid | Persistent organization aircraft ID. | | `organizationId` | uuid | Organization ID at the time of the flight. | | `callsign` | string | Aircraft registration at the time of the flight. | | `originIcao` | string? | Departure airport. | | `destinationIcao` | string? | Arrival airport, or the nearest airport at the last update. | | `actualDepartureUtc` | date-time? | Takeoff time, UTC. | | `actualArrivalUtc` | date-time? | Landing time, UTC. Null while the flight is active. | | `status` | AircraftFlightStatus | Flight log status. | | `flightTimeMinutes` | double | Flight time of this flight, minutes. | | `airframeTimeMinutes` | double | Total airframe time of the aircraft at the last update of this flight, minutes. | | `crew` | AircraftFlightCrewMember[] | Each pilot who flew the aircraft on this flight, in join order. | | `pilotFlightTimes` | PilotFlightTime[] | One entry for each period that a pilot was in control, in time order. | ### AircraftFlightCrewMember | Field | Type | Description | | --- | --- | --- | | `userId` | uuid | Infinite Flight user ID. | | `username` | string? | Current public username, if available. | ### PilotFlightTime | Field | Type | Description | | --- | --- | --- | | `userId` | uuid | Infinite Flight user ID of the pilot. | | `username` | string? | Current public username, if available. | | `flightTimeSeconds` | double | Seconds the pilot flew in this period. | | `startSeconds` | double | Aircraft flight time since engine start, seconds, when this period started. | | `endSeconds` | double? | Aircraft flight time since engine start, seconds, at the last update of this period. Null until the first update. | ### Page Paged list endpoints put the items in `result.items`. | Field | Type | Description | | --- | --- | --- | | `items` | array | Items on this page. | | `page` | integer | One-based page number. | | `pageSize` | integer | Maximum number of items on a page. | | `totalCount` | integer | Number of items on all pages. | | `totalPages` | integer | Number of pages. | ### Schedule | Field | Type | Description | | --- | --- | --- | | `id` | uuid | Schedule ID. Use as `{scheduleId}` for update, flight plan update, crew management, delete, and reorder. | | `status` | ScheduledFlightStatus | Current schedule status. | | `callsign` | string | Callsign for the scheduled flight. | | `organizationId` | uuid | Owning organization ID. | | `aircraftId` | uuid | Persistent organization aircraft ID. | | `flightType` | PersistentFlightType | Flight category. | | `originIcao` | string | Origin airport ICAO or airport code. | | `destinationIcao` | string | Destination airport ICAO or airport code. | | `isTimeless` | boolean | `true` when the schedule has no times and pilots can fly it when they want. | | `scheduledDepartureUtc` | date-time | Planned departure, UTC. `0001-01-01T00:00:00Z` when `isTimeless` is `true`. | | `scheduledArrivalUtc` | date-time | Planned arrival, UTC. `0001-01-01T00:00:00Z` when `isTimeless` is `true`. | | `actualDepartureUtc` | date-time? | Actual departure, UTC, if known. | | `actualArrivalUtc` | date-time? | Actual arrival, UTC, if known. | | `briefing` | string? | Briefing text. | | `debriefing` | string? | Debriefing text. | | `flightPlan` | string? | Flight plan text. | | `crew` | ScheduleCrewMember[] | Assigned crew. Empty when no crew is assigned. | | `sequence` | integer | Sort order in the aircraft's schedule list. | | `createdAt` | date-time | UTC creation time. | | `updatedAt` | date-time | UTC update time. | ### ScheduleCrewMember | Field | Type | Description | | --- | --- | --- | | `userId` | uuid | Infinite Flight user ID. | | `username` | string? | Current public username, if available. | | `role` | PersistentFlightCrewMemberRole | Crew role for this schedule. | ### ScheduleRequest Used by Create Schedule and Update Schedule. | Field | Type | Required | Validation | | --- | --- | --- | --- | | `callsign` | string | Yes | 1 to 32 characters. No control characters. | | `flightType` | PersistentFlightType | Yes | Valid enum value. | | `originIcao` | string | Yes | 1 to 8 alphanumeric characters. Stored uppercase. | | `destinationIcao` | string | Yes | 1 to 8 alphanumeric characters. Stored uppercase. | | `isTimeless` | boolean | No | Default `false`. When `true`, the scheduled times are not used. | | `scheduledDepartureUtc` | date-time? | Yes, unless `isTimeless` is `true` | ISO 8601 date-time. | | `scheduledArrivalUtc` | date-time? | Yes, unless `isTimeless` is `true` | Must be after `scheduledDepartureUtc`. | | `briefing` | string? | No | Maximum 4000 characters. | | `flightPlan` | string? | No | Maximum 16000 characters. | ### ScheduleFlightPlanRequest | Field | Type | Required | Validation | | --- | --- | --- | --- | | `flightPlan` | string? | No | Maximum 16000 characters. Null or empty clears the flight plan. | ### ScheduleCrewAssignmentRequest Assigns a crew member or changes the role of an existing crew member. | Field | Type | Required | Validation | | --- | --- | --- | --- | | `role` | PersistentFlightCrewMemberRole | Yes | Valid enum value. | ### ScheduleReorderRequest | Field | Type | Required | Description | | --- | --- | --- | --- | | `scheduleId` | uuid | Yes | Schedule to move. | | `afterId` | uuid? | No | Schedule to put the moved schedule after. Null moves it to the top. | ### Enum Values | Enum | Values | | --- | --- | | PersistentOrganizationType | 0 AutoJoin, 1 ManualJoin, 2 ApplyToJoin, 3 InviteOnly, 4 SingleMember | | PersistentOrganizationMemberRole | 0 Member, 1 Admin, 2 Owner | | OrganizationOperationType | 0 Undefined, 1 Airline, 2 Charter, 3 Freight, 4 Military, 5 FlightSchool, 6 Private | | WorldType | 0 Solo, 1 Casual, 2 Training, 3 Expert, 4 Private | | PersistentOrganizationRecordStatus | 0 Active, 1 Suspended, 2 Deleted | | PersistentAircraftRecordStatus | 0 Active, 1 Deleted | | PersistentAircraftVisibility | 0 Unknown, 1 Visible, 2 Hangared | | AircraftPersistenceState | 0 Unknown, 1 OnGround, 2 InFlight, 3 Cancelled, 4 Stopped, 5 Maintenance | | AircraftFlightStatus | 0 Active, 1 Completed, 2 Cancelled (also used when the aircraft crashed) | | ScheduledFlightStatus | 0 Unknown, 1 Scheduled, 2 Boarding, 3 Boarded, 4 TaxiingToRunway, 6 InFlight, 7 Diverted, 8 Delayed, 9 Cancelled, 10 TaxiingToParking, 11 Arrived (there is no value 5) | | PersistentFlightType | 0 None, 1 Commercial, 2 Charter, 3 Cargo, 4 Training, 5 TestFlight, 6 MedicalEmergency, 7 Military, 8 VIPExecutive, 9 HumanitarianRelief, 10 GeneralAviation, 11 Airshow, 12 Other | | PersistentFlightCrewMemberRole | 0 Captain, 1 FirstOfficer | --- # Infinite Flight: Connect API > Reference for the Infinite Flight Connect API, the local TCP API for reading simulator state and sending commands to an Infinite Flight device on the same local network. For developers who build moving maps, traffic viewers, checklists, joystick tools, and other apps that interact with a running simulator. Source: https://infiniteflight.com/guide/developer-reference/connect-api (infiniteflight-docs 6b73625). Generated by a model on 2026-10-20. If this file and the website disagree, the website is correct. ## Data Rules The Connect API reads the simulator on the user's own device. The API usage and data rules for the Live API v2 and PublicApi v3 (https://infiniteflight.com/guide/developer-reference/api-rules/usage-and-data-rules) do not cover it. Apps that use the Connect API must still obey the Terms of Use: https://infiniteflight.com/guide/legal/terms ## Live API or Connect API URL: https://infiniteflight.com/guide/developer-reference Infinite Flight has two developer APIs. - Live API: HTTP API for data from Infinite Flight Live across a server (servers, active flights, active ATC, flight plans, user stats). Needs an API key (request at hello@infiniteflight.com). Strict usage and data rules apply. Docs: https://infiniteflight.com/guide/developer-reference/live-api/overview - Connect API: local TCP API for Infinite Flight devices on the local network. Send commands to control aircraft systems or the simulator. Read simulation data, including aircraft state, ATC instructions, and more. No API key. Which one to use: - To view Live data across a server, use the Live API. Examples: flight trackers, ATC status websites, user stats (grade, violations), viewing a flight plan. - To interact with the simulator, use the Connect API. Examples: moving map (like ForeFlight), local traffic viewer, auto checklist, auto heading/altitude update when an ATC instruction is received. ## Overview URL: https://infiniteflight.com/guide/developer-reference/connect-api/overview The Connect API is a local TCP API to get specific data and do actions in flight. Examples: turn lights on/off, control the autopilot, control network joysticks. ### Versions and ports | Version | TCP port | Format | |---|---|---| | v1 | 10111 | JSON objects as strings | | v2 | 10112 | Binary, several data types; more functions. First included in Infinite Flight 19.4. | The docs only document v2 in detail. There is no v1 reference page. ### Enable the API The Connect API is disabled by default. The user must enable it: 1. Open Infinite Flight. 2. Go to Settings > General. 3. Scroll near the bottom to "Enable Infinite Flight Connect". 4. Check the box if it is not checked. ### API keys No API key is required. ### Prerequisites The docs assume knowledge of TCP, data types, JSON, and Infinite Flight operations. ## Connect API v2 URL: https://infiniteflight.com/guide/developer-reference/connect-api/connect-api ### About - v2 is a high-performance TCP socket API (not HTTP/REST) to read and change aircraft and Infinite Flight states and to issue commands, fast enough for "real time" control during a flight. - Requests are sent as structured byte sequences. Responses are byte sequences that the client must decode. ### Connecting - Make a TCP socket connection to the device IP address on port 10112. - Before you connect, make sure Settings > General > "Enable Infinite Flight Connect" is checked. - Common TCP libraries: Node `net`, C# `TcpClient`, Python `socket`, Swift SwiftSocket, Kotlin `java.net.Socket`. ### Device discovery (UDP) If you do not know the device IP address, listen for UDP broadcasts. Infinite Flight broadcasts UDP packets on port 15000 with the device addresses and other details. Example: ```json { "state": "Playing", "port": 10111, "deviceId": "iPad7", "aircraft": "Cessna 172", "version": "19.4.7354.25209", "deviceName": "Thomas's iPad", "addresses": ["fe80::1c79:baf4:f9f1:dd59%3", "192.168.1.26"], "livery": "Civil Air Patrol" } ``` - `addresses` gives IPv4 and IPv6 addresses. The packet also gives the Infinite Flight version, current aircraft and livery, and device type. - `port` is always 10111, the v1 port. For v2, connect to port 10112. - Common UDP libraries: Node `dgram`, C# `UdpClient`, Python `socket`, Swift `NWListener`, Kotlin `java.net.DatagramSocket`. ### States and commands - States: read or set parts of the current flight, aircraft, or Infinite Flight state. Groups: - `aircraft`: altitude, heading, bank, pitch, flap position, livery, autopilot settings, and more. - `infiniteflight`: Infinite Flight itself, such as current camera views and angles and the app version. - `api_joystick`: joystick support. - Miscellaneous: `environment` (for example wind speed), `atmosphere` (for example air density), `simulator` (for example current flight length), and other one-off states. - Commands: do actions from the Infinite Flight UI, such as toggling parking brakes, moving the camera, starting and stopping engines, moving flaps, and raising landing gear. ### The manifest Each aircraft has a different set of states and commands, and numeric IDs can differ by aircraft. Get the manifest first after you connect. The manifest is one text string. Entries are separated by newline (`\n`). Each entry has three comma-separated fields: 1. Numeric ID (32-bit integer). Used to get/set a state or run a command. Can differ by aircraft. 2. Data type (32-bit integer, see Data types). `-1` for commands. 3. Name. Names are the same across aircraft, even when IDs or the available set differ. Example state entries: ``` 632,4,aircraft/0/flightplan/route 539,2,aircraft/0/groundspeed 548,2,aircraft/0/heading_magnetic 556,0,aircraft/0/is_on_ground 554,3,aircraft/0/latitude 555,3,aircraft/0/longitude ``` State names are slash-separated context terms. Example: `aircraft/0/flightplan/route` = aircraft > current flight plan > route. ID 632, type 4 (String). Example command entries: ``` 1048649,-1,commands/AutoStart 1048628,-1,commands/BeaconLights 1048613,-1,commands/Brakes ``` How to tell commands from states: 1. Command IDs are larger than 1,000,000. State IDs are smaller. 2. Command data type is `-1` (not a real data type). 3. Command names start with `commands/`. No state name starts with `commands`. Limitation: commands that need data cannot be used now. The API has no way to pass data to a command. `commands/ParkingBrakes` is a simple toggle and works. `commands/FlightPlan.AddWaypoints` needs a list of waypoints, so it is effectively non-functional. The docs expect Infinite Flight to enable these commands in the future. ### Request structure All requests use the same byte layout: | Bytes | Content | |---|---| | 4 | Numeric ID of the state or command (32-bit little-endian integer) | | 1 | Boolean "has data": `1` (true) = data follows, `0` (false) = no data | | n | Optional data. Only used to set a state. | - Get a state or run a command: send ID + `0`. - Set a state: send ID + `1` + data. Example: get `aircraft/0/latitude` (ID 554 = 0x22A): send `2A 02 00 00 00`. Response structure as described in this section of the docs: - 32-bit integer: numeric ID of the state. - One-byte boolean `false` (`0`). - One or more bytes of data, in the format of the state's data type. Note: the worked examples in "Retrieving states" below show a different layout: ID, then a 32-bit little-endian data length, then the data, with no boolean byte. The docs disagree here. TCP is not request/response. Requests and responses are decoupled, and responses can arrive back-to-back in any order. Use the numeric ID in each response to match it to its request. ### Getting the manifest Send the special ID `-1` with `0` (no data): ``` ff ff ff ff 00 ``` Response layout: | Bytes | Content | |---|---| | 4 | `-1` (`ff ff ff ff`): manifest response | | 4 | Total length of the data that follows (32-bit LE) | | 4 | Length of the manifest string in bytes (32-bit LE) | | n | Manifest string bytes (ASCII) | Example first 50 bytes: ``` ff ff ff ff 13 b7 00 00 0f b7 00 00 35 31 35 2c 32 2c 61 69 72 63 72 61 66 74 2f 30 2f 73 79 73 74 65 6d 73 2f 6e 61 76 5f 73 6f 75 72 63 65 73 2f 61 64 66 2f 32 2f 64 69 73 74 61 ``` - `ff ff ff ff`: -1, manifest response. - `13 b7 00 00`: 0x0000B713 = 46,867 bytes of total data follow. - `0f b7 00 00`: 0x0000B70F = manifest string is 46,863 bytes. - `35 31 35 2c 32 2c 61 69 ...`: text `515,2,aircraft/0/s...`. The manifest does not arrive in one message. Append each received message until you have the full string length given in the third integer. ### Data types | ID | Type | Wire format | |---|---|---| | 0 | Boolean | 1 byte: `01` true, `00` false | | 1 | Integer (32-bit) | 4 bytes, little-endian. Range -2,147,483,648 to 2,147,483,647 | | 2 | Float | 4 bytes, little-endian. 6 to 7 decimal digits | | 3 | Double | 8 bytes, little-endian. 15 decimal digits | | 4 | String | 32-bit integer byte length (4 bytes), then the string bytes | | 5 | Long | 64-bit integer, 8 bytes, little-endian. Range -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 | | -1 | (none) | Used in the manifest for commands | ### Little-endian All numbers use little-endian byte order, including Float, Double, and Long, and the IDs you send. - 32-bit integer 1,210,590 = 0x001278DE. Big-endian: `00 12 78 DE`. Little-endian: `DE 78 12 00`. - State ID 535 = 0x217 -> `17 02 00 00`. - Command ID 1048616 = 0x100028 -> `28 00 10 00`. ### Retrieving states (GetState) Send: 32-bit LE state ID + one byte `0`. String example. Manifest entry `522,4,aircraft/0/livery` (ID 522 = 0x20A, String): - Send: `0a 02 00 00 00` - Response: `0a 02 00 00 0e 00 00 00 0a 00 00 00 41 65 72 20 4c 69 6e 67 75 73` - `0a 02 00 00`: state ID 522. - `0e 00 00 00`: data length 14 bytes. - `0a 00 00 00`: string length 10. - `41 65 72 20 4c 69 6e 67 75 73`: "Aer Lingus". Integer example. Manifest entry `622,1,aircraft/0/systems/flaps/state` (ID 622 = 0x26E, Integer): - Send: `6e 02 00 00 00` (the docs breakdown says `63 02 00 00`, which is a typo; 622 = `6e 02 00 00`). - Response: `6e 02 00 00 04 00 00 00 00 00 00 00` - `6e 02 00 00`: state ID 622. - `04 00 00 00`: data length 4 bytes. - `00 00 00 00`: value 0. The same request/response structure works for all data types. ### Setting states (SetState) Send: 32-bit LE state ID + one byte `1` + the value in the state's data type format. - Not all states can be set. The manifest does not say which ones. Use trial and error and common sense. Examples that cannot be set: `aircraft/0/livery`, `aircraft/0/latitude`. Example that can be set: `aircraft/0/systems/flaps/state` (value = flap state number, which differs by aircraft). - The API sends no response to a set. To confirm, get the state again. Integer example: set flaps (ID 622) to 1: ``` 6e 02 00 00 01 01 00 00 00 ``` `6e 02 00 00` = ID 622, `01` = true (data follows), `01 00 00 00` = value 1. String example: `605,4,aircraft/0/systems/comm_radios/com_1/atc_name`, set to "Bob the Pilot": ``` 5d 02 00 00 01 0d 00 00 00 42 6f 62 20 74 68 65 20 50 69 6c 6f 74 ``` `5d 02 00 00` = ID 605, `01` = true, `0d 00 00 00` = string length 13, then the 13 bytes of "Bob the Pilot". ### Running commands (RunCommand) Send: 32-bit LE command ID + one byte `0`. Example: `1048614,-1,commands/ParkingBrakes` (1048614 = 0x100026): ``` 26 00 10 00 00 ``` - This toggles the parking brakes on/off. The user sees the change in Infinite Flight. - The API sends no response. To confirm, get a related state (for example `aircraft/0/systems/parking_brake/state`) or check visually in Infinite Flight. - Commands that need data (for example `commands/FlightPlan.AddWaypoints`) cannot be used now (see The manifest). ### Flight plans from Infinite Flight v22.1 From v22.1, the state `aircraft/0/flightplan/full_info` returns a JSON-formatted string. Before v22.1 it returned a simple string. The JSON format matches the format that the Connect v1 API returns from v22.1. If you use `aircraft/0/flightplan/full_info`, read `infiniteflight/app_version` first and parse the data for that version. Example (only the first of three `FlightPlanItems` is shown; the others were D001O and IMR with the same fields): ```json { "Result": 0, "Type": "Fds.IFAPI.APIFlightPlan", "Bearing": 1.988517, "DesiredTrack": 1.59089124, "DetailedInfo": { "AlternateDestinations": null, "Altitude": 0, "Altitudes": null, "DepartureAirportCode": "LEMD", "DepartureTime": "/Date(-62135596800000+0000)/", "DestinationAirportCode": "IMR", "EntityID": "00000000-0000-0000-0000-000000000000", "EstimatedTimeEnroute": "PT0S", "FlightID": "00000000-0000-0000-0000-000000000000", "FlightPlanItems": [ { "Altitude": -1, "Children": null, "Identifier": "LEMD", "Length": 0, "Location": { "Altitude": 608.9904, "Latitude": 40.495345592498779, "Longitude": -3.5602057874202728 }, "Name": "Adolfo Suarez Madrid-Barajas", "StartIndex": 0, "Type": 0 } ], "FlightPlanType": 0, "FuelOnBoard": "PT0S", "LastUpdate": "/Date(1645012763298)/", "Remarks": null, "Speed": 0, "Waypoints": ["LEMD", "D001O", "IMR"] }, "DistanceToDestination": 26.87741, "DistanceToNext": 14.8649006, "ETAToDestination": 1.32894981e17, "ETAToNext": 1.32894938e17, "ETEToDestination": 171.8713, "ETEToNext": 95.05565, "ICAO": null, "NextWaypointLatitude": 40.7194443, "NextWaypointLongitude": -3.55750251, "TotalDistance": 25.4681568, "Track": 323.766663, "WaypointName": "D001O" } ``` Note: in the sample, the D001O item has `"Identifier": null`. The IMR item has name "MADRID BARAJAS". ## Connect API v2 States URL: https://infiniteflight.com/guide/developer-reference/connect-api/version-2-states - The page has an interactive reference of all v2 states and their data types, per aircraft. Select an aircraft, search states by name, and click a state to copy its name. - States differ between aircraft, but many are common to all aircraft. - Each state shows its data type (Boolean, Integer, Float, Double, String, Long) and access: Read/Write, Read-only, or Write-only. - The state list is loaded from Infinite Flight at site build time and is not in the docs source, so it is not reproduced here. To get the exact states and IDs for an aircraft, read the manifest from the running simulator (see Getting the manifest) or use the website page. ## Samples URL: https://infiniteflight.com/guide/developer-reference/connect-api/samples Community and official client samples for Connect v2. Each has its own license; check it before use. To add a project, message @Cameron or @KaiM on the Infinite Flight Community. | Name | Language | Link | |---|---|---| | Official v2 Demo | C# | https://github.com/carmichaelalonso/infiniteflightapi | | ifc2 | JavaScript | https://community.infiniteflight.com/t/ifc2-new-javascript-client-for-the-connect-v2-api/637176 | | ifconnect-shell | JavaScript | https://github.com/velocity23/ifconnect-shell | | SwiftFlight | Swift | https://github.com/tomthetank46/SwiftFlight | | ConnectKit | Swift | https://github.com/sqeezelemon/ConnectKit | --- # Infinite Flight: Getting Started Guide > How to install Infinite Flight and use its user interface: the home screen, modes, servers, logbook and replays, user profile, grades, subscriptions, settings, the pilot screens (HUD, navigation, communication, flight planning, autopilot, controls, pause menu), violations, and the ATC controller screens. For new and existing pilots and controllers. Source: https://infiniteflight.com/guide/getting-started-guide (infiniteflight-docs 6b73625). Generated by a model on 2026-10-20. If this file and the website disagree, the website is correct. ## Introduction URL: https://infiniteflight.com/guide/getting-started-guide Guide version: 26.1.0. This is the first guide in the Infinite Flight series. It goes step by step through the user interface. ## Installing the App ### Installing on Android URL: https://infiniteflight.com/guide/getting-started-guide/installing-the-app/android Infinite Flight is on the Google Play Store. Minimum requirements (at least 3GB+ RAM is strongly recommended): - Android 10.0 or later with a 64-bit processor. - Device must support OpenGL ES 3.2 (check with the "OpenGL check" app: https://play.google.com/store/apps/details?id=littledreamstudios.openglcheck). There is no full list of supported Android devices. Most are in the Device Compatibility thread: https://community.infiniteflight.com/t/device-compatibility-thread-20-3-built-by-us-for-you/323610. If your device is not supported, the Play Store shows a message when you try to download the latest update. Tip (as written in the docs): if your device has no 64-bit processor and cannot be upgraded to Android 9.0, you can use versions before 23.2 for a short period. Details: https://community.infiniteflight.com/t/21-1-android-support/560936. (This tip names Android 9.0, but the minimum above is Android 10.0.) Download: 1. Open the Play Store. 2. Search for "Infinite Flight". 3. Select Infinite Flight and tap the price to purchase. After download: find the Infinite Flight icon on your home screen and tap it. ### Installing on iOS URL: https://infiniteflight.com/guide/getting-started-guide/installing-the-app/iOS Infinite Flight is on the App Store. Minimum requirements (at least 3GB+ RAM is strongly recommended): - iOS 17 or later with a 64-bit processor. Download: 1. Open the App Store. 2. Search for "Infinite Flight". 3. Select Infinite Flight and tap the price to purchase. After download: find the Infinite Flight icon on your home screen and tap it. ## Home User Interface ### Home Screen URL: https://infiniteflight.com/guide/getting-started-guide/home-user-interface/home-screen Home screen items: 1. Top-left symbol: opens the news page, leaderboards, Logbook and Settings. Next to it is the "Get Pro" button. If you have a subscription, your User Profile shows instead. 2. Location (airport/stand) search: type all or part of the ICAO code (e.g. KSFO for San Francisco Intl.) or the city/airport name (Free Flight only). 3. Aircraft selection (Free Flight only). With Multi Player on, you can also select your Callsign here, and see if ATC is open at the selected airport: open facilities show in green under the aircraft symbol (only on specific servers). 4. Time of day: drag the slider, tap the arrows, or tap the time to open the time menu. 5. Weather: adjust with the arrow symbol (Single Player Free Flight only). 6. Map: Center map symbol at bottom left. Pan with your finger, pinch to zoom, tap an airport. Zoom in and tap a light blue dot to select a gate (Free Flight only). Without a Pro subscription, a green border shows the regions you can fly in; flight and airport selection is limited to these regions. 7. Mode selector, and Server selector if Multi Player is chosen. 8. "Fly" button: starts the flight. Aircraft Selection (Free Flight): 1. Group titles above each group. 2. Aircraft thumbnails in each group. Tap one to go to livery selection (or aircraft selection in operator mode). 3. Search all aircraft by make/model or livery. 4. Filters menu. 5. Go to livery selection for the selected aircraft (orange border). 6-7. Back to previous menu. Airport and Gate Selection (Free Flight): 1. Search by ICAO code (e.g. KSAN for San Diego) or city/airport name. 2. Blue dots: airports with a tower facility (ATC may not be active). Magenta dots: uncontrolled airports. 3. "3D" symbol: airport has buildings. 4. Single Player: park anywhere. Multi Player: all parking positions are size restricted. If no position fits your aircraft type, the app says the airport is too small. Tip: select your aircraft before you select a parking position, so you can see where you can park. Weather dot colors on airports (online): VFR (Visual Flight Rules), MVFR (Marginal VFR), IFR (Instrument Flight Rules). Gate selection screen: 1. Runway colors (wind): - Green: headwind above 3kts (or any wind under 3kts). Runway recommended. - Orange: crosswind above 3kts. - Red: tailwind above 3kts. Runway not recommended. Controllers can use a different runway than you expect. Look out for traffic. 2. Multi Player parking is size restricted. A red parking position means your aircraft is too big. 3. After you select a spawn point, your aircraft and the spawn location name show on the airport. The airport name also shows when you are not in a selection screen. ### Mode URL: https://infiniteflight.com/guide/getting-started-guide/home-user-interface/mode Four modes: - Free Flight: choose aircraft and airport, customize your flight plan, fly at your own pace. - Missions: recommended airline and charter routes based on traffic and ATC. - Flight Training: interactive tutorials (Single Player only). - ATC: control aircraft as a controller (Multi Player only). Mode screen: (1) select Single or Multi Player, (2) select mode type, (3) select server if Multi Player, (4) confirm. Free Flight: the screen is the Home Screen described above (same 8 items). Flight Training: tap a category, then tap a tutorial. When it loads, tap "Fly". Missions: tap a category, select a challenge. When it loads, tap "Fly". Servers (Multi Player). Each server has its own rules and minimum grade. Check them before you join. | Server | Description | Min grade | |---|---|---| | Casual | All grades. No ATC. Flying does not affect stats or grade. Be respectful to other pilots. | N/A | | Training | Practice pilot and ATC skills. All ATC facilities except ATIS. Procedures enforced by Violations. | 2 | | Expert | Published rules must be followed. All procedures strictly enforced by ATC. Infractions can give Violations. | 3 | Expert server notes: - To control on Expert you must complete formal training. See https://infiniteflight.com/joinatc. - To fly on Expert, in addition to grade 3: total Level 1 Violations must be at least 50% less than total landings, and you may not have 5 or more Level 2 or 3 Violations in the last 365 days. ### Air Traffic Control URL: https://infiniteflight.com/guide/getting-started-guide/home-user-interface/air-traffic-control ATC page: 1. Search by ICAO code or city/airport name. 2. Or use the map: pan, pinch to zoom, tap an airport. 3. "3D" symbol: airport has buildings. 4. Red cones: ILS to that runway. White cones: other approach types. 5. Airport card (right side): inbound traffic count, planned control duration, frequencies, weather. 6. Server selection: Training or Expert. Frequency Selection (on the card): 1. Tap a frequency to select it. Selected frequencies have an amber ring. 2. Frequencies in green are used by another controller. 3. If other controllers are present, their services (and ATIS if published) show in green. 4. Select how long you plan to control. You can exit any time, but try to control for at least that duration. 5. Weather dot on the airport symbol: VFR, MVFR or IFR. 6. Runway colors: green = headwind above 3kts (or any wind under 3kts), recommended; orange = crosswind above 3kts; red = tailwind above 3kts, not recommended. 7. Tap "Control" to begin. Servers for ATC: Training (min grade 2; all facilities except ATIS; Violations enforce procedures) and Expert (min grade 3; strict enforcement). Controlling on Expert requires formal IFATC training (https://infiniteflight.com/joinatc). The same Expert pilot conditions as in Mode apply (Level 1 Violations at least 50% less than landings; fewer than 5 Level 2/3 Violations in 365 days). ### Logbook URL: https://infiniteflight.com/guide/getting-started-guide/home-user-interface/logbook All flights and control sessions are recorded automatically. You cannot view replays recorded on other app versions (e.g. a 24.3 replay in 24.4). Logbook screen: 1. List of entries. 2. Tap an entry to show a summary card on the right. 3. Switch between all entries and entries with replays. 4. Three-dot symbol: filter (All, Multiplayer, Solo). 5. Flight duration and type (Solo or Online). Replays tab: 1. Import a replay. 2. Upload all replays to the Infinite Flight servers. 3. Three-dot symbol on a replay card: Share (export), edit, delete. 4. View the selected replay (only for entries with a replay). If the app is uninstalled, or you fly on a different device with the same account, the logbook entry stays but the replay is no longer available. Pilot Replays controls: 1. ATC log with mute and auto scroll. Tap a command to jump to it. 2. Mini map. 3. Pause/play. 4. Back 15 seconds. 5. Forward 15 seconds. 6. Timeline: tap anywhere to jump. 7. Take screenshot (see screenshot setting in Settings). 8. Show/hide mini map. 9. Change views. 10. App menu. 11. Press and hold the screen for 3 seconds to hide the bar; again to show it. ATC Replays controls: 1. ATC log: tap a message to go to it. 2. Pause/play. 3. Back 15 seconds. 4. Forward 15 seconds. 5. Take screenshot. 6. Show/hide radar. 7. Change views. 8. App menu. 9. Timeline: orange lines = warnings sent to pilots; red lines = Violations issued. 10. Radar: tap a pilot for a menu, including options to filter pilot details. Delete replays: 1. Open "Logbook". 2. Long tap the first replay until it is highlighted. 3. Tap other replays to delete. 4. Tap "Confirm". Export a replay: 1. Open "Logbook". 2. Select the replay. 3. Tap the three-dot symbol on the replay card, select "Share". 4. Select where to save (options depend on installed apps). 5. The file is saved there. Import a replay: 1. Open "Logbook". 2. Tap the import symbol (envelope with arrow, bottom left). A file browser opens. 3. Tap the file to open it. On some devices: press and hold, select "Share", then "Open in Infinite Flight". 4. Infinite Flight opens and imports the replay into the Logbook. ### User Profile URL: https://infiniteflight.com/guide/getting-started-guide/home-user-interface/user-profile Profile screen: 1. Top-left settings symbol: Account (connections and subscription). 2. Arrow next to Grade: opens the Grade Table and what you need for the next grade. 3. Arrow next to Violations: breakdown of your violations. 4. Back arrow, or "X" top right: return. 5. Followers / following, with a search bar at the bottom to find users to follow. 6. Link your Discord account. 7. Opens the Infinite Flight Community (https://community.infiniteflight.com). #### Account Connections: - Community Forum Account: shows your IFC username in-flight. Also lets you sign in if you switch device platforms. - Discord Account: access to the Pro-only Discord server. - Navigraph (SimBrief) Account: access your SimBrief flight plans. Miscellaneous: - Your Infinite Flight Pro Subscription: shows "Get Pro", or the auto-renew date if subscribed. - Switch Account: use a different Infinite Flight account to access a subscription bought on another device. - Delete Account: removes personal information, stats and linked accounts. Your subscription stays available via a new, anonymous account. #### Linking Community Forum Account Callsigns identify you to ATC. A unique user identifier also shows by default. With an Infinite Flight Community (IFC) account, your username can show next to your callsign. Linking also lets you use your subscription across iOS and Android. 1. Next to Community Forum Account, tap "Connect". 2. Confirm sharing of information between the app and website: tap "Continue". 3. A community.infiniteflight.com pop-up opens: log in or create an account (if already logged in on the device, just tap "authorize"). 4. The app shows your IFC username. Tip: to hide your username in-flight, untick "Show Username In-Flight" in Settings > Online (the docs link to this as "Settings > Live"). #### Linking a Discord Account Requires an active Pro subscription before "Connect" works. 1. Next to Discord Account, tap "Connect". 2. Tap "Continue" to confirm information sharing. 3. A discord.com pop-up opens: log in or create an account (or tap "authorize" if already logged in). 4. Back in the app, choose "OK" to join the Infinite Flight Discord server, or "Not Now". "OK" opens discord.com: tap "Accept Invite". 5. Your Discord username now shows. #### Linking a Navigraph (SimBrief) Account This section is a video only. #### Virtual Organization Affiliation Your VO shows next to your username and in the "info tab" (tap an aircraft on the map or mini map, then its callsign/username). Your Community Forum account must be linked. 1. Log in at https://community.infiniteflight.com. 2. Tap your profile picture (top right), tap the person icon, select the "Preferences" settings wheel. 3. Select "Profile" in the left bar (on mobile: "Account" drop-down, then "Profile"). 4. Under "Virtual Organization", select your VO. 5. Tap "Save Changes" at the bottom. #### The Grade Table Open it: tap your User Profile, then the arrow next to your grade. Four sections: General Pilot Stats, Level 1 Violations, Level 2 Violations, Level 3 Violations. Columns: parameter; your current value (white); requirement for next grade (green = met, orange = not met, by deficiency or exceeded limit). Grade requirements: | Requirement | G1 | G2 | G3 | G4 | G5 | |---|---|---|---|---|---| | Min Total XP | - | 2000 | 50,000 | 80,000 | 175,000 | | Min Total Flight Time (hrs) | - | 5 | 50 | 120 | 500 | | Min Total Landings | - | 25 | 100 | 400 | 800 | | Min Flight Time (90 days) | - | - | - | 30 | 70 | | Min Landings (90 days) | - | - | - | 100 | 180 | | Max Level 1 Violations (24 hours) | - | 7 | 5 | 0 | 0 | | Max Level 1 Violations (7 days) | - | 25 | 5 | 0 | 0 | | Max Level 1 Violations/Landings Ratio (1 year) | - | 0.8 | 0.5 | 0.22 | 0.05 | | Max Level 2 Violations (1 year) | - | 10 | 5 | 4 | 2 | | Max Level 3 Violations (7 days) | - | 5 | 0 | 0 | 0 | | Max Level 3 Violations (1 year) | - | 10 | 5 | 4 | 2 | | Max Combined Level 2 and 3 Violations (1 year) | - | 10 | 5 | 4 | 2 | Parameters: - XP: calculated from landings and flight time. Does not represent skill. - Total Flight Time: hours (hrs) and minutes (mn). - Total Landings: all recorded landings. - Flight Time (90 days), Landings (90 days): last 90 days. - Level 1 Violations (24 hours) and (7 days). - Level 1 Violations/Landing (12 months): total Level 1 Violations divided by landings in the last 12 months. Examples: 10 violations / 20 landings = 0.50; 10 / 10 = 1.00; 20 / 10 = 2.00. - Level 2 Violations (1 year); Level 3 Violations (7 days); Level 3 Violations (1 year). - All Violations (1 year): Level 2 plus Level 3 in the last year. #### Callsigns 1. On the Home Screen, tap mode (bottom right). 2. Toggle Multi Player, select Free Flight. 3. Callsign shows under the aircraft icon on the right. Tap the arrow. 4. Select the "Airlines" or "General Aviation" tab on the left. 5. Airlines: three columns. Scroll the first to pick the airline. Tap the second to enter an alphanumeric identifier, tap "OK". Tap a "Suffix" in the third, or "None". 6. General Aviation: same process, but the first column is the "Country Code" instead of the airline. A search bar finds airline or GA codes. The country code is the aircraft's country of registration, not where you fly. Tip: match your livery to your callsign. Use the "Heavy" suffix only above 300,000lbs (136,000kgs) gross take-off weight, and "Super" only for the A380. #### How to Format General Aviation Callsigns Key: "AB"/"ABC" = any 2/3 letters, etc. "12"/"123" = any 2/3 numbers, etc. Required formats: - Afghanistan: YA-ABC - Albania: ZA-ABC - Algeria: 7T-ABC - Andorra: C3-ABC - Angola: D2-ABC - Anguilla: VP-AAB - Antigua and Barbuda: V2-ABC - Argentina: LQ-ABC, LV-ABC - Armenia: EK-12345 - Aruba: P4-ABC - Australia: VH-ABC - Austria: OE-1234, OE-ABC - Azerbaijan: 4K-AB1, 4K-AB12, 4K-12345 - Bahamas: C6-ABC - Bahrain: A9C-AB, A9C-ABC - Bangladesh: S2-ABC - Barbados: 8P-ABC - Belarus: EW-123AB, EW-12345 - Belgium: OO-ABC - Belize: V3-ABC - Benin: TY-ABC - Bermuda: VP-BAB - Bhutan: A5-ABC - Bolivia: CP-1234 - Bosnia and Herzegovina: T9-ABC - Botswana: A2-ABC - Brazil: PP-ABC, PR-ABC, PT-ABC, PU-ABC - British Virgin Islands: VP-LAB - Brunei: V8-ABC, V8-AB1, V8-123 - Bulgaria: LZ-ABC - Burkina Faso: XT-ABC - Burundi: 9U-ABC - Cambodia: XU-123 - Cameroon: TJ-ABC - Canada: CF-ABC, C-FABC, C-GABC, C-IABC - Cape Verde: D4-ABC - Cayman Islands: VP-CAB - Central African Republic: TL-ABC - Chad: TT-ABC - Chile: CC-ABC - China: B-1234 - Taiwan: B-12345 - Hong Kong: B-HAB, B-KAB, B-LAB - Macau: B-MAB - Colombia: HJ-1234A, HK-1234A - Comoros: D6-ABC - Congo, Republic of: TN-ABC - Cook Islands: E5-ABC - Congo, Democratic Republic of: 9Q-ABC - Costa Rica: TI-ABC - Croatia: 9A-ABC - Cuba: CU-T1234 - Cyprus, Republic of: 5B-ABC - Czech Republic: OK-ABC, OK-ABC12, OK-1234, OK-A123 - Denmark: OY-ABC, OY-XAB, OY-BAB - Denmark, Greenland and the Faroe Islands: OY-HAB - Djibouti: J2-ABC - Dominica: J7-ABC - Dominican Republic: HI-123AB - Ecuador: HC-ABC - Egypt: SU-ABC - El Salvador: YS-ABC - Equatorial Guinea: 3C-ABC - Eritrea: E3-ABC - Estonia: ES-ABC - Ethiopia: ET-ABC - Falkland Islands (Malvinas): VP-FAB - Faroe Islands: OY-ABC - Fiji Islands: DQ-ABC - Finland: OH-ABC - France: F-ABCD - French West Indies: F-OGAB - French Guyana: F-OABC - Gabon: TR-ABC - Gambia: C5-ABC - Georgia: 4L-12345, 4L-ABC - Germany: D-ABCD - Ghana: 9G-ABC - Gibraltar: VP-GAB - Greece: SX-ABC - Greenland: OY-ABC - Grenada: J3-ABC - Guatemala: TG-ABC - Guinea: 3X-ABC - Guinea Bissau: J5-ABC - Guyana: 8R-ABC - Haiti: HH-ABC - Honduras: HR-ABC - Hungary: HA-ABC - Iceland: TF-ABC - India: VT-ABC - Indonesia: PK-ABC - Iran: EP-ABC - Iraq: YI-ABC - Ireland: EI-ABC - Isle of Man: M-ABCD - Israel: 4X-ABC - Italy: I-ABCD - Cote d'Ivoire: TU-ABC - Jamaica: 6Y-ABC - Japan: JA-1234, JA-123A, JA-12AB, JA-A123 - Jordan: JY-ABC - Kazakhstan: UN-12345 - Kenya: 5Y-ABC - Kiribati: T3-ABC - Korea, People's Democratic Rep.: P-123 - Korea, Republic of: HL-1234 - Kuwait: 9K-ABC - Kyrgyzstan: EX-12345, EX-123 - Laos: RDPL-12345 - Latvia: YL-ABC - Lebanon: OD-ABC - Lesotho: 7P-ABC - Liberia: A8-ABC - Libya: 5A-ABC - Lithuania: LY-ABC - Luxembourg: LX-ABC - North Macedonia: Z3-ABC - Madagascar: 5R-ABC - Malawi: 7Q-ABC - Malaysia: 9M-ABC - Maldives: 8Q-ABC - Mali: TZ-ABC - Malta: 9H-ABC - Marshall Islands: V7-1234 - Mauritania: 5T-ABC - Mauritius: 3B-ABC - Mexico: XA-ABC, XB-ABC, XC-ABC, XC-ABC12 - Micronesia: V6-ABC - Moldova: ER-ABC, ER-12345 - Monaco: 3A-ABC - Mongolia: JU-1234 - Montenegro: 4O-ABC - Montserrat: VP-MAB - Morocco: CN-ABC - Mozambique: C9-ABC - Myanmar: XY-ABC, XZ-ABC - Namibia: V5-ABC - Nauru: C2-ABC - Nepal: 9N-ABC - Netherlands: PH-ABC - Netherlands Antilles: PJ-ABC - New Zealand: ZK-ABC, ZL-ABC, ZM-ABC - Nicaragua: YN-ABC - Niger: 5U-ABC - Nigeria: 5N-ABC - Norway: LN-ABC - Oman: A4O-AB - Pakistan: AP-ABC - Panama: HP-1234ABC - Papua New Guinea: P2-ABC - Paraguay: ZP-ABC - Peru: OB-1234 - Philippines: RPC-1234 - Poland: SP-ABC - Portugal: CR-ABC, CS-ABC - Qatar: A7-ABC - Reunion Island: F-ODAB - Romania: YR-ABC - Russian Federation: RA-12345, RA-1234K - Rwanda: 9XR-AB - Saint Helena/Ascension: VQ-HAB - Saint Kitts and Nevis: V4-ABC - Saint Lucia: J6-ABC - Saint Vincent and the Grenadines: J8-ABC - Samoa: 5W-ABC - San Marino: T7-ABC - Sao Tome and Principe: S9-ABC - Saudi Arabia: HZ-ABC, HZ-AB1, HZ-AB12, HZ-ABC1 - Senegal: 6V-ABC, 6W-ABC - Serbia: YU-ABC - Seychelles: S7-ABC - Sierra Leone: 9L-ABC - Singapore: 9V-ABC - Slovakia: OM-ABC - Slovenia: S5-ABC - Solomon Islands: H4-ABC - Somalia: 6O-ABC - South Africa: ZS-ABC, ZT-ABC, ZU-ABC - South Sudan: Z8-ABC - Spain: EC-ABC - Sri Lanka: 4R-ABC - Sudan: ST-ABC - Surinam: PZ-ABC - Swaziland: 3D-ABC - Sweden: SE-ABC - Switzerland: HB-ABC - Syria: YK-ABC - Tahiti: F-OHAB - Tajikistan: EY-12345 - Tanzania: 5H-ABC - Thailand: HS-ABC - Togo: 5V-ABC - Tonga: A3-ABC - Trinidad and Tobago: 9Y-ABC - Tunisia: TS-ABC - Turkey: TC-ABC - Turkmenistan: EZ-A123 - Turks and Caicos: VQ-TAB - Tuvalu: T2-ABC - Uganda: 5X-ABC - Ukraine: UR-12345, UR-ABC - United Arab Emirates: A6-ABC - United Kingdom: G-ABCD - United Nations: 4U-ABC - United States of America: N1, N12, N123, N1234, N12345, N1A, N12A, N123A, N1234A, N1AB, N12AB, N123AB. Cannot contain I or O. See https://www.faa.gov/licenses_certificates/aircraft_certification/aircraft_registry/forming_nnumber/ - Uruguay: CX-ABC - Uzbekistan: UK12345 - Vanuatu: YJ-AB1, YJ-AB12 - Venezuela: YV-123A, YV-1234, YV-O123 - Vietnam: VN-1234, VN-A123 - Yemen: 7O-ABC - Zambia: 9J-ABC - Zimbabwe: Z-ABC Fixed letters before the variable part are literal (e.g. Anguilla "VP-AAB" = "VP-A" plus any 2 letters; Canada "C-GABC" = "C-G" plus any 3 letters). #### Delete Your Account Infinite Flight (in-app) account: deletes your account, stats and links to other accounts (the linked accounts themselves are not deleted). Not reversible. Your subscription is not cancelled; it becomes available under a new, anonymous account when you relaunch the app. 1. On the Home Screen, tap your user profile (top left). 2. The "Account" tab shows (or select it on the left). 3. Press "Delete" next to Delete Account. 4. Confirm, then type DELETE. Infinite Flight Community (forum) account: no self-service deletion. Message the moderators (the docs link prepares a private message to the moderators group titled "Account Deletion Request"), send it, and wait for confirmation. Accounts are anonymized: personal information is deleted, but past posts stay under an anonymous account. For Infinite Flight account help, contact support@infiniteflight.com. For a linked Discord account, follow Discord Support's deletion instructions. ### Subscriptions URL: https://infiniteflight.com/guide/getting-started-guide/home-user-interface/subscriptions #### What is a Pro subscription? Pro unlocks all in-app purchases, including new content added during the subscription. After it expires or is cancelled, only items purchased separately stay available. Subscriptions renew automatically; cancel in Google Play or the App Store. | Duration | Price (USD) | |---|---| | Monthly | $9.99 | | Semi Yearly | $49.99 | | Yearly | $79.99 | #### How do I get a Pro subscription? 1. On install, the app checks for previous subscriptions. 2. If none is active, tap "Get Pro" (top left of the Home Screen). 3. Tap the blue button for monthly, or "More Options" for other packages. 4. If you already have an account, tap "More Options > Sign in with Infinite Flight". 5. Log in with your Infinite Flight Community Forum details. The app searches for an active subscription (if expired, select a payment option). More help: https://infiniteflight.com/guide/get-help/subscriptions or support@infiniteflight.com. #### How to manage your subscription On a new device, the subscription transfers if you use the same Apple ID (iOS) or Google Play account (Android). If you change platform (iOS to Android or reverse) or use a different Apple ID/Google Play account, link your Community Forum Account first: 1. Tap "Get Pro" (top left of Home Screen). 2. Tap "I already have an account". 3. Tap "Sign In with Infinite Flight" and log in to your Community Forum Account. If it still fails, email support@infiniteflight.com with the steps you took plus: Display Name and Callsign; Device; complete purchase receipt with date, item and item number (beginning with GPA for Android). #### How to revert to Default Account On launch the app links to any active subscription it finds. To use your account on another device, use "Switch Account" in User Profile Account settings. When finished on that device: 1. Tap the User Profile (top left of Home Screen). 2. Tap the settings symbol (top left), then "Switch Account". 3. Tap "Revert to default account". 4. The device returns to its original account. If that has no active subscription, "Get Pro" shows. #### Redeeming A Custom Promo Code (Android) Links for custom codes are not possible on Google Play, so: 1. Tap "Get Pro" on the Home Screen. 2. Press the purchase button showing the regular monthly price (you are not charged immediately). 3. Tap the payment method field. 4. In Payment Methods, tap "Redeem Code" and enter the code. 5. The offer subscription starts. A trial renews at the regular monthly price at the end unless cancelled before the trial ends. Some trials are for new subscribers only. ### Settings URL: https://infiniteflight.com/guide/getting-started-guide/home-user-interface/settings Layout: 5 categories on the left. Each setting has a label and short description. Tap the box on the right to tick it, or tap a label to choose another value (a tick shows the selection). "Back" returns to the Home Screen. #### General | Setting | What it does | |---|---| | Language | App interface language | | Interface Timeout | How long UI controls stay on screen | | Hide Status Bar | Hides the status bar when the interface timeout occurs | | Control Sensitivity | Controls sensitivity | | Airport Names | Shows airport ICAO code and distance on the scenery while flying | | Landing Aid | Rectangles around the landing path for stabilized landings (turn OFF for more realism) | | Invert External Cameras Vertical Motion | Inverts vertical motion of external cameras (locked, external cameras on the aircraft) | | Invert Internal Cameras Vertical Motion | Inverts vertical motion of internal cameras (tower and cockpit) | | Automatically Set Start Airport | Start airport = where the last flight ended | | Auto-Coordination | Couples ailerons and rudder (on the ground only) | | Enable EFB Link | Sends position/altitude/traffic data to local EFB apps such as ForeFlight, Garmin Pilot | | Enable Infinite Flight Connect | Enables the Infinite Flight Connect API so third-party apps (e.g. InFlight Assistant, Fly-By-Wire) on the same network can bridge | | Show Touches | For recording videos/tutorials | | Enable Automatic Low Power | Low power on long flights to save battery | | Weight Units | Kgs or Lbs (fuel quantity and consumption shown in this unit) | | Show Performance Metrics | Shows metrics including frame rate | | Clear Scenery Cache | Clears locally cached scenery. Use "Clear Cache" if you fall through taxiways, aprons, ramps or runways, or have other scenery issues. If issues continue, post in #support: https://community.infiniteflight.com/c/support/17 | | Screenshot Resolution Scale | Resolution scale for screenshots | Tip: disable auto-coordination for more control during crosswind take-offs (https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/crosswind-tailwind-take-off-technique) and landings (https://infiniteflight.com/guide/flying-guide/descent-to-landing/crosswind-tailwind-landing). #### Graphics Not all devices can run all settings on high; use a mix of high, medium and low. Per-device guidance: Device Compatibility thread (https://community.infiniteflight.com/t/device-compatibility-thread-20-3-built-by-us-for-you/323610). | Setting | What it does | |---|---| | Rendering Quality | Rendering quality | | 3D Object Density | Density of objects at airports | | Rendering Resolution | Rendering resolution of aircraft and scenery | | Texture Quality | Texture quality | | Anti-Aliasing | Smooths jagged lines. Not supported on all devices and can be very slow; turn OFF if performance degrades | | Frame Rate Limit | Highest allowed frame rate | #### Online | Setting | What it does | |---|---| | Hide Airplane Names | Hides the tag above other aircraft (callsign, display name, speed, distance, altitude, grade color) in Infinite Flight Live | | Hide Airplane Dots | Hides the dot/white box of other players | | Automatic Airplane Downloads Over Cellular Data | Downloads airplanes on cellular networks | | Airplane Count | How many airplanes show in Live mode (lower it if performance drops) | | Show Username In-Flight | Shows your username; untick to stay anonymous | | Pilot Voice | Your voice for ATC communications | | Voice Pitch | Pitch of your voice | | Default Voice | Default voice for other pilots/ATC | Download more voices in device settings (usable for Pilot and Default Voice): - iOS: Settings > Accessibility > Spoken Content > Voices. - Android: General Management > Language & Input > Text-To-Speech Output > tap the setting right of Preferred Engine > Install Voice Data. #### Audio Two sliders: - SFX Volume: aircraft and environment sounds (engines, flaps, interior, exterior, wind, city, etc.). - ATC Volume: controller voice volume. Find a balance so you hear the aircraft and do not miss radio calls. Device volume sets overall volume. #### Controls Set sensitivity per axis and configure joysticks, keyboards and other devices. Accelerometer axes: - Roll: around the longitudinal axis (nose to tail); banking with the ailerons. - Pitch: around the lateral axis (wing tip to wing tip); nose up/down with the elevator. - Yaw: around the vertical axis; nose left/right with the rudder. Not accelerometer controlled; use the "Rud Brakes" slider (bottom right). Controls screen: 1. Motion: device accelerometer settings (if a joystick or other device is connected, its tab shows first). 2. Keyboard: settings for a connected keyboard. 3. List of commands that can be bound. 4. "Tap to Assign": bind a command to a yoke, joystick, keyboard or other device. 5. Config: sensitivity (left slider) and dead zone (right slider) for pitch and roll. 6. Defaults: reset to factory settings (recommended if you have sensitivity or control problems). 7. Filter: show only assigned commands. You can bind an axis to more than one device, but it is fed from one device at a time. Priority left to right: connected device > motion > keyboard. #### ForeFlight The EFB link lets you use ForeFlight with Infinite Flight: maps, approach plates, weather, performance data, traffic and synthetic vision. The page has a setup video. ## Pilot User Interface ### Fly Screen URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/fly-screen Shown after you calibrate your device: 1. Head Up Display (HUD): speed, altitude, attitude. 2. Mini Map: see surroundings and flight plan without leaving the screen. 3. Headset icon (live servers only): talk to ATC. 4. Map button: full map of the Earth for flight planning in more detail. 5. Status Bar (bottom): customizable information. 6. Camera symbol: change view. 7. Pause menu: settings, recalibrate, weight and balance, time/weather/position (depends on solo or online). On live servers your aircraft continues in real time while you are paused, so do not pause for long. 8. Ground Services: e.g. pushback, jet bridges. 9. Systems: doors, electrics, lights, signs, engine start. 10. Navigation (NAV): avionics; course and source for NAV 1 and 2, GPS, VOR/ADF, ILS. 11. Autopilot: Flight Control Unit (FCU); autopilot and navigation on/off, altitude and heading bugs, vertical speed (VS) and speed. 12. Flight Controls: device accelerometer, except rudder/brakes (bottom right). Parking Brake and Trim buttons on all aircraft; Landing Gear, Flaps and Spoilers if fitted. Calibrate and set sensitivity to suit you. ### Calibration Screen URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/calibration After you tap "Fly" and loading finishes, the calibration screen shows. Get into a comfortable position, then tap the screen. Recalibrate any time from the Pause Menu. ### Head Up Display (HUD) URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/hud 1. Outside Air Temperature (OAT) in Celsius. 2. Speed tape. On some aircraft, red = too slow/fast, green = correct speed. 3. Groundspeed (GS), Mach number (M), wind direction/speed. 4. Attitude Indicator, with Flight Path Vector (green circle, enabled in the Systems menu). 5. Altitude tape, vertical speed (bottom of tape), and a turquoise bug for the FCU selected altitude. 6. Power as a percentage, with equivalent N1 above it (if applicable). 7. Horizontal Situation Indicator (HSI) for navigation, with a turquoise bug for the FCU selected heading. 8. Bank angle pointer and scale at top. Pointer under center line = wings level (0 degrees). Lines mark 10, 20, 30, 40 and 50 degrees. ### Navigation URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/navigation GPS Navigation (airborne, with a flight plan): 1. When you tap LNAV, make sure "SOURCE" is GPS in the Avionics tab. 2. A magenta Course Select Pointer (radial to next waypoint) and Lateral Deviation Bar (deviation from track) show on the HSI. Keep them aligned. The flight plan cycles to the next waypoint automatically. 3. With Autopilot and LNAV engaged, the aircraft follows the flight plan. Tuning to an ILS: 1. Select the airport on the map (see "Getting more from your Map and Mini Map"). 2. Go to the Runway tab. 3. Tap a runway with an ILS. 4. Tap "Set NAV 1". "NAV 1" shows in green by the runway. Tip: tick "Auto tune ILS" next to "Add to FPL" when you add an ILS approach to auto-tune the ILS. Displaying an ILS: 1. Tap "NAV" to show the Avionics tab. 2. "NAV 1" shows the ILS frequency and ident; "CRS 1" shows the runway course. 3. Set "SOURCE" to "NAV 1". 4. The HSI shows the Localizer (lateral) deviation scale; the altitude tape shows the Glideslope (vertical) deviation scale. 5. Adjust "CRS 1" to change the lateral scale course (e.g. for a Back Course Localizer). Tuning to a VOR or ADF: 1. Select the VOR or NDB on the map. 2. VOR: tap "Set NAV 1" or "Set NAV 2" ("Tuned to NAV 1 (or 2)" shows). NDB: tap "Set ADF 1" ("Tuned to ADF 1" shows). Displaying a VOR: 1. Tap "NAV". 2. NAV 1 or 2 shows the VOR frequency and ident. Set BRG 1 or 2 to "NAV 1 (or 2)"; the needle shows on the HSI. 3. CRS 1 or 2 defaults to 360; any radial can be set. With "SOURCE" set to "NAV 1 (or 2)", the HSI shows the lateral deviation scale for intercepting radials to/from the VOR. Displaying an ADF: 1. Tap "NAV". 2. ADF 1 shows the NDB frequency and ident. Set BRG 1 or 2 to "ADF"; the needle shows on the HSI. Clearing a frequency: tap "NAV", tap the frequency (NAV 1 / NAV 2 / ADF 1), tap "Clear Frequency". #### Traffic Collision Avoidance System (TCAS) - Your aircraft: white symbol (size/shape varies by aircraft). Other traffic: blue. - Amber = Traffic Advisory (TA): both aircraft airborne above 40kts, altitude difference less than 2000ft, other aircraft within 40 seconds at current speed. - Red = Resolution Advisory (RA): all TA conditions, plus altitude difference less than 600ft. Manual pilot action is required. | Example | Pilot action | |---|---| | Aircraft 3000ft above | None | | Aircraft 1000ft above | None. ATC keeps 3 miles lateral or 1000ft vertical separation | | Aircraft 800ft below | Separation close to being broken. Under ATC, request deviation if no instructions given | | Aircraft 100ft below | With or without ATC, smoothly change flight path. Climb if they are below, descend if they are above | Minimum separation at all times: 3nm lateral or 1000ft vertical. ATC maintains this when active. Many amber symbols are normal in busy airspace; watch your mini map. ### Communication URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/communication Communication box: 1. Top left: current frequency, controller details (if active), METAR. 2. Top right: last altitude, heading, speed and runway assigned by a radar frequency. Follow them. 3. Frequency boxes populate as you come into range: active (green text) or Unicom (uncontrolled). Tap to tune; you can also tune out. Get permission before leaving an active frequency. 4. Log of all communication. Double tap to show only your messages and controller messages to you. 5. Messages also show briefly at the top of the screen. Messages to you are orange, and the communication symbol (bottom left) flashes to prompt a reply. Tune using the Map/Mini Map: 1. Select the airport on the map. 2. The info tab lists active frequencies. Your current one is green and labelled "COM 1". 3. Tap "TUNE" to make a frequency COM 1. You must be in range of the airport, and you can tune radar frequencies only when airborne. Away Mode: controllers see a green ("active") or amber ("away") circle on your flight strip. After 2 minutes with no device input you show as "away". In cruise this tells controllers you may not respond and conflicts are assumed unintentional. Stay at your device in critical phases and busy airspace. ### Flight Planning URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/flight-planning Flight Plan screen: 1. FPL section: waypoint (WPT), desired track (DTK), distance (DIST), estimated time en-route (ETE), altitude (ALT). DIST and ETE can be cumulative. Active waypoint is magenta. Orange or red altitude = descent rate to that waypoint may be too high. 2. FPL buttons: - "-": delete a waypoint. - "Act. Leg": select a waypoint, tap to make it the active leg. - "Clear": clear the whole flight plan. - "PROC": shortcut to procedures of airports in your flight plan. - "OPT.": select a waypoint, then set/edit/delete an altitude target for VNAV. "Set Autopilot ALT" sets the autopilot altitude to that waypoint's altitude. - Double Arrow: open a flight plan, share your flight plan, or load from SimBrief. 3. Search: any airport or waypoint. Paste a full route (can include latitude/longitude coordinates) to fill the flight plan. 4. Tap a fix/airport/navaid, then "+" to add it. The symbol next to "+" is "direct to": it wipes the flight plan and goes directly to that waypoint. 5. Bottom right: settings, center, zoom. Cycle display: Map, Flight Plan, or both. Map display settings: Fixes (GPS waypoints), Navaids (VOR/NDB), Airspaces, Taxiways, Approaches, Uncontrolled Airports (magenta dots). On older devices or with crashes, hide airspaces to improve performance. Adding items: (1) tap the item on the map, then "+" (choose from a list if several are near), or (2) drag a section of the flight plan line onto the item and select from the list. Rearranging: in the waypoint list on the left, hold and drag an item. A purple line shows the new position. Coordinates: format ddmmx/ddmmy (d = degrees, m = minutes, x = N or S, y = E or W). You must add at least one other waypoint or coordinate at the same time; one coordinate alone cannot be added. Example: 55N050W = 5500N/05000W, entered with others such as "5500N/05000W 5500N/04000W 5500N/03000W". Seconds are not supported; round to the nearest minute. User waypoints: tap a blank area of the map, then "+". Share Flight Plan ("Open/Share" button): - Export: create a flight plan, open the FPL, tap the arrow icon, select "Share", choose a method (AirDrop, email, notes, etc.), share or save. - Import: save the flight plan to the Files app, open the Flight Plan page in a flight, tap the arrow icon, select "Open Flight Plan", open the file. Map: 1. Airports: blue or magenta dots; online, a colored center dot shows weather. 2. VOR (VHF Omnidirectional Range): tune to NAV 1 or 2 if fitted. 3. NDB (Non Directional Beacon): tune to ADF 1 (Automatic Direction Finder) if fitted. 4. GPS fix symbol. 5. Settings, center, zoom; cycle Map / Flight Plan / both. 6. Tap anywhere: a list of nearby items shows. Fix/navaid: "+" adds it, the next symbol does "direct to". 7. Tap a list item: "more info" tab. Airports also have weather, runways and procedures tabs. 8. Tap an aircraft: "Copy FPL" copies its flight plan. Mini Map: shows other aircraft, your flight plan and surroundings; scroll to explore. Tap it for settings, zoom and center. Getting more from your Map and Mini Map: 1. Tap anywhere on the map; a list of nearby items shows. 2. Select an item. Fix/navaid: "+" to add, or "direct to". 3. The information tab shows first. Airports also have weather, runways and procedures tabs. Winds Aloft: wind data from surface to FL430. Tap the settings cog on the map, then "Winds Aloft". A wind barb points in the direction the wind is blowing. Short barb (half line) = 5kts, long barb (full line) = 10kts, pennant (triangle) = 50kts. Hold and drag the altitude control to choose the altitude; "Auto" uses your current altitude. Examples: 2 pennants + 3 long + 1 short = 135kts from the west; 1 pennant + 4 long + 1 short = 95kts from west-northwest; 4 long + 1 short = 45kts from the southwest. Selecting Departure, Arrival and Approach procedures: 1. Open the procedures tab for the airport. 2. Choose Departure (SID), Arrival (STAR) or Approach. 3. Approach lists approaches per runway, previewed on the map. The list is sorted by wind. Tap "select". Use the approach in use on the ATIS (if ATC is present), or if uncontrolled, the one that suits weather and traffic. 4. Some approaches offer a Transition (often from a VOR). Or select "Vectors to Final" to skip it. 5. Tap "Add to Flight Plan" ("Back" to cancel). 6. Add arrival and departure the same way. Approach prefixes: D = VOR/DME; H = RNAV (RNP); I = ILS; J = GLS; L = LOC only; N = NDB; Q = combination of two or more of ILS/DME/VOR/NDB; R = RNAV (GPS); S = VOR only; X = LDA (Localizer Type Directional Aid). After the prefix comes the runway designator (e.g. 27), then suffixes: L = Left; R = Right; Y or Z = runways using the same guidance; 1, 2 etc. = same guidance with different approach paths (common on VOR/DME/NDB approaches). Example: H35LZ = RNAV (RNP) approach, Runway 35L, Zulu procedure. ### Flight Resume URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/flight-resume The page states: "Feature Removed". Use AutoPilot+ instead: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/autopilot-plus. The old content follows for reference. Flight Resume let you continue a flight after an interruption. Requirements: - Solo: altitude 5,000ft AMSL or more; level flight. - Multiplayer: altitude 28,000ft AMSL or more; level flight; LNAV active; ETE to destination 30 minutes or more; on flight plan track. Use: tap the icon (bottom right). The "Flight Resume" tab shows "ON" or "OFF"; expand it to see unmet requirements (grey ticks). When "ON" (green), you can leave the flight. A "Resume Last Flight" tab then lets you return. ### Status Bar URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/status-bar Shows 10 selectable displays at a time. 1. Press and hold the display to change. 2. An option box shows; the current selection has a solid orange box. 3. There are 8 categories with multiple options. Keep holding, slide between categories and options (a hollow orange box moves), release on the option you want. ### Cameras URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/cameras 1. Tap the camera symbol to change camera, or press and hold for more options. 2. When held, an option box shows; current selection has a solid orange box. 3. There are 7 categories with multiple options. Slide while holding (hollow orange box moves), release on your choice. Move the camera with your finger; pinch with two fingers to zoom. Free Cams (Free and Exterior/Interior Drone 1/2): left side of the screen moves left/right or zooms; right side changes the camera direction. "Operating the Drone Camera" is a video. ### Ground Services URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/ground-services Services vary by aircraft variant. 1. Tap "Ground Services". 2. Select options; selected services are orange. 3. For other menus, press and hold "Ground Services"; an option box shows with the current menu in a solid orange box. 4. Up to 2 menus, depending on variant. Slide while holding, release on your choice. Requirements: parked at a stand large enough for the aircraft type, parking brake set, engines and beacon off. Pushback works only when all other ground services are deselected (and the aircraft can push back). ### Systems URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/systems Systems vary by aircraft variant. 1. Tap "Systems" to open the selected system's menu. 2. Press and hold "Systems" to change system; the current one has a solid orange box. 3. Up to 7 systems, depending on variant. Slide while holding, release on your choice. 4. The menu changes to that system's options. ### Autopilot URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/autopilot Tap the AP symbol to show the Flight Control Unit (FCU). 1. Tap "AP OFF" to engage (must be airborne). It shows a hollow orange box and changes to "AP ON". 2. Basic modes engage automatically: current heading and vertical speed (VS). 3. Tap to engage/disengage: ALT, VS, ALT PRESETS, SPD, HDG, VNAV, LNAV GPS, APPR. Press and hold and move up/down to change values (not for AP, ALT PRESETS, VNAV, LNAV, APPR). ALT PRESETS shows a list of altitudes; a selection overrides the ALT window. 4. Altitude and heading have turquoise bugs on the HUD. Values can be set before engaging AP. Approach Mode (APPR): if fitted, intercepts an ILS and lands automatically if kept engaged to touchdown. Tune and display the ILS first. APPR cannot be activated above 250 knots or above maximum landing weight. | Display | Meaning | |---|---| | "LOC ALT" (flashing amber) | APPR armed | | "LOC" (solid green), "ALT" (flashing amber) | Capturing or on LOC; G/S armed and captures if you are below the G/S | | "LOC GS" (solid green) | Capturing or on both LOC and G/S | Engage APPR only on an intercept heading for the ILS (recommended no more than 30 degrees). You can change heading after engaging, but not once LOC capture is in progress. If LNAV and VNAV are engaged when you tap APPR, the last heading and VS are held, which can cause abnormal autopilot behaviour. ### Flight Controls URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/flight-controls On your first flight you select a control mode: Tilt or Touch. Change it any time in settings. - Tilt: accelerometer controls pitch and roll; rudder and throttle on screen. - Touch: 2 on-screen joysticks, one for roll/pitch, one for rudder/throttle. Tilt: 1. All aircraft have parking brake and trim; some have retractable gear, flaps and spoilers. Tap gear (up/down) and park brake (on/off). Gear retracts only when airborne. Press, hold and slide for Spoilers, Trim and Flaps. A magenta line in the trim button means the device differs from the calibrated neutral; keep a comfortable position, recalibrate often, and use trim to set new datums. 2. "RUD BRAKES" (bottom right): hold and move left/right for rudder. Drag toward the bottom of the screen for differential braking; a percentage shows braking level. Touch: 1. Throttle: drag up/down. Rudder: drag left/right. Brakes: keep dragging down. 2. Roll: drag left/right. Pitch: drag up/down. ### Pause Menu URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/pause-menu Change weather, time, and weight and balance, or move the aircraft to the runway or short final. Online, the server controls some features (such as weather), and runway spawning is not available. 1. Settings (some cannot change in flight). 2. User profile. 3. Current server online, or "Solo". 4. Departure and arrival airports (from departure airport and flight plan). 5. Weight and Balance overview; tap for the screen. 6. Time overview; slider or skip arrows, or tap for the screen. 7. Weather overview; tap for the screen. 8. Resume flight. 9. Skip back 20 seconds (solo only). 10. Move to nearest runway for takeoff (solo only). 11. Move to short final for nearest runway (solo only). 12. Calibrate device. 13. End flight and return to main menu. 14. Autopilot+ menu (https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/autopilot-plus). Weather. Solo only: (1) wind direction, (2) wind speed, (3) wind gust speed, (4) turbulence level, (5) visibility, (6) temperature. Multiplayer weather is real time for the location; only these can change (also in solo): (7) cloud layer coverage (Clear/Few/Scattered/Broken/Overcast), (8) cloud layer altitude (20,000ft to 50,000ft). Time (all modes and servers): (1) current simulator time; (2) skip back to previous day period; (3) current period icon; (4) skip forward. Periods: Night/Sunrise/Midday/Sunset. (5) Slider for a specific time (orange = daylight, grey = night). (6) Reset to current real-world UTC. Weight & Balance: 1. Estimated flight time from cruise fuel flow. Always take extra fuel; busy ATC can cause long delays. 2. Total weight. 3. Maximum Take-Off Weight (MTOW) and Maximum Landing Weight (MLW). MTOW turns red and MLW orange if exceeded (same as "Aircraft Load" in the status bar). 4. Presets: "Light", "Normal", "Heavy". 5. Kg or Lbs (also in settings). 6. Fuel tank sliders (number of tanks varies). Keep left and right tanks balanced. 7. Passenger sliders (not on some aircraft, e.g. fighters). 8. Cargo sliders (number and capacity vary). 9. Sync button: sliders in a category move together by default. Tap to unlink (icon becomes a broken chain); tap again to resync. ### Violations URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/violations Violations moderate pilot behavior on the Training and Expert servers. Level 1 is automatic and can happen on both. Level 2 and 3 are issued by ATC on Expert only. Level 1 automatic rules: | Rule | Condition | |---|---| | Ground Overspeed | Above 35kts GS on the ground, excluding runways | | Flight Overspeed | Above 250kts IAS below 10,000ft, or exceeding max speed warning (VMO/MMO). Not for military aircraft | | Aerobatics within Airspace | Aerobatics below 5,000ft and within 5nm of an airport | | Runway Idle | Idle on a runway more than 60 seconds without ATC clearance | Flight Overspeed is the most common. Slow below 250kts IAS well before 10,000ft. Do not cruise at or near 10,000ft above 250kts IAS, because altitude can fluctuate on autopilot. Consequences: - Level 1: 3 or more in one flight = automatic removal from the server; start a new flight. - Level 2 (amber): disconnected; can continue offline. Can return to Expert immediately with a new flight if Level 2 and 3 totals are within limits. - Level 3 (red): disconnected; can continue offline. After ending the flight, Expert access is restricted for 7 days. - Repeated Level 2/3 Violations restrict Expert access longer. No more than five Level 2 and/or 3 Violations in a rolling 365 days for access. Level 2 violation dialog: (1) brief reason (full list in Violation Reasons); (2) "User Guide": ends flight and opens the guides; (3) "End Flight": ends flight, shows summary, returns to Fly Online screen; (4) "Continue Offline": you are invisible to others and cannot see ATC or traffic. Prevention: read the official tutorials and guides; ask questions at https://community.infiniteflight.com; on Expert, take it slow, follow ATC and be courteous. Controllers may not warn before a violation, especially when busy or for obvious infractions. Appeals (Level 2 or 3; only Level 3 recommended, since Level 2 allows a new flight). Appeal within 7 days: 1. Open your Logbook. 2. In Live Flights, Notes column, tap the note on the reported flight, then "View Flight Details" to see the reporting controller's IFC username. 3. Send a private message on the community forum to the controller with your callsign, violation date and details. If you cannot find the controller or are a new user, message the @appeals group instead (template asks for: current callsign and callsign at the time, date, controller name, replay link uploaded to https://sharemyinfiniteflight.com, extra details). Level 1 Violations cannot be appealed. 4. You will likely be asked for your pilot replay. 5. Be patient. ### Violation Reasons URL: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/violation-reasons All reasons controllers can use. Reasons can be generic; contact the controller on the forum if unsure. (Level summaries are as on the Violations page.) | Reason | Issued by | Level | Group | |---|---|---|---| | Aligned with the Wrong Runway | Radar | 2 | A | | Blocking an Active Taxiway | Ground | 2 | B | | Crossing the Hold Line without Permission | Ground/Tower | 2 | B | | Entered a Runway without Permission | Ground/Tower | 3 | B | | Excessive Speed in the Airport Environment | Tower/Radar | 3 | A | | Failure to Complete Instrument Approach | Radar | 2 | C | | Failure to Divert | Tower/Radar | 3 | C | | Failure to Execute Missed Approach | Radar | 3 | C | | Failure to Exit the Runway | Tower | 2 | D | | Failure to follow ATIS | Ground/Tower/Radar | 2 | C | | Failure to Follow Sequence | Tower | 2 | A | | Failure to follow TFR | Ground/Tower/Radar | 3 | C | | Failure to Give Way | Ground | 2 | B | | Failure to Go-Around | Tower | 2 | C | | Failure to Maintain Appropriate Aircraft Separation | Tower/Radar | 2 | A | | Flying through Other Aircraft | Tower | 3 | E | | Following Flight Plan instead of ATC Instruction | Radar | 2 | C | | Inappropriate Callsign | Ground/Tower/Radar | 3 | E | | Incorrect Arrival Procedures - Inappropriate Altitude, Speed, Position | Tower/Radar | 3 | A | | Landing/Departing on the Wrong Runway | Tower | 3 | A | | Not Following ATC Assigned Heading, Altitude, or Speed | Radar | 3 | C | | Not Following Instructions | Ground/Tower/Radar | 2 | C | | Spamming Frequency - Unnecessary Duplicate Requests | Ground/Tower/Radar | 2 | F | | Take-Off/Land without Permission | Tower | 3 | C | | Take-Off/Landing from Grass, Ramp, or Taxiway | Tower | 3 | E | | Taxi without Permission | Ground | 2 | B | | Taxiing through Grass or Terminal Area | Ground | 2 | B | | Taxiing through Others | Ground | 2 | B | | Too Close to the Aircraft Ahead | Ground | 2 | B | | Unable to Communicate | Ground/Tower/Radar | N/A | G | | Unresponsive while Climbing, Descending, or Maneuvering | Ground/Tower/Radar | 2 | C | Group explanations: - A (situational awareness): poor separation, not following sequencing, excessive speed, incorrect arrival procedures, or aligning with/landing on/departing from the wrong runway can remove you from Expert. - B (ground awareness): have clearance to taxi and to cross or enter runways (if ATC is active), and always check it is clear. Do not taxi through grass or terminal areas, block active taxiways, or get too close to other aircraft. - C (follow ATC instructions): follow the ATIS, TFRs, assigned headings/altitudes/speeds, diversions, go-arounds and approach clearances. Taking off/landing without permission, following the flight plan instead of ATC, or being unresponsive while climbing, descending or maneuvering can remove you. - D (runway exit): exit the runway quickly. Not exiting can cause loss of separation, a go-around or degraded service. - E (inappropriate behavior): flying through other aircraft; callsigns with profanity, discriminatory or racist terms; taking off/landing on grass, ramps or taxiways. Not tolerated on Expert. - F (spamming): Expert can be very busy, especially in events, peak times and popular airports. Do not send duplicate requests. - G: the controller could not communicate with you and removed you. Not counted as a violation; you can return any time. Fighter aircraft etiquette (Excessive Speed): no automated speed limit for fighters, but keep a reasonable speed in controlled airspace (tower or approach). - Enforced: do not exceed 350KIAS below 10,000ft under ATC control. - Recommended: do not exceed M1.0 in normal flight; do not exceed 250KIAS in congested commercial traffic; adjust speed to nearby traffic. - Military cargo aircraft follow commercial limits (maximum 250KIAS below 10,000ft under ATC control). Instructions, sequence and traffic volume should always set your speed. Related guides: Taxi https://infiniteflight.com/guide/flying-guide/on-the-ground/taxi ; Hold lines https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/before-take-off ; Diversion https://infiniteflight.com/guide/flying-guide/descent-to-landing/diversion ; Runway exit https://infiniteflight.com/guide/flying-guide/descent-to-landing/landing ; ATIS https://infiniteflight.com/guide/atc-manual/4.-atis/4.2-remarks-and-notams ; Sequencing https://infiniteflight.com/guide/flying-guide/descent-to-landing/pattern-entries ; TFRs https://infiniteflight.com/guide/flying-guide/on-the-ground/tfrs-and-notams ; Go-around https://infiniteflight.com/guide/flying-guide/descent-to-landing/go-around-baulked-landing ; Separation https://infiniteflight.com/guide/atc-manual/6.-radar/6.2-separation ## ATC User Interface ### Status URL: https://infiniteflight.com/guide/getting-started-guide/atc-user-interface/status Select the Status tab on the left. 1. "Airspace Status": controlled airports, inbound arrivals, and open frequencies at each airport (green person symbol). 2. "Incoming Airplanes": details of arrivals to your airport. ### ATIS URL: https://infiniteflight.com/guide/getting-started-guide/atc-user-interface/atis ATIS (Automatic Terminal Information Service) broadcasts the latest airport information on a dedicated frequency when ATC is present and you are in range. ATIS page: 1. METAR: date/time, wind direction and strength, visibility, weather and cloud, temperature and dew point, pressure. 2. Runway selection, with color code: green = headwind above 3kts (or any wind under 3kts), recommended; orange = crosswind above 3kts; red = tailwind above 3kts, not recommended. 3. REMARKS (e.g. "No Pattern Work allowed"). 4. NOTAMS: extra information, used like REMARKS. 5. With multiple frequencies, tell pilots which frequency to contact from which direction. 6. Preview the final message. 7. Select the ATIS letter (Alpha, Bravo, Charlie, etc.) and tap PUBLISH. When weather, runways/frequencies, REMARKS or NOTAMS change, update and publish with the next phonetic letter. D-ATIS (Digital ATIS, text format): 1. Tap near an airport on the map. 2. Tap the "wx" (weather) tab. 3. If ATC is present and using the ATIS frequency, the D-ATIS shows. D-ATIS range is unlimited; use it for planning. ATIS terms: https://infiniteflight.com/guide/atc-manual/4.-atis/4.2-remarks-and-notams ### Ground, Tower & Radar URL: https://infiniteflight.com/guide/getting-started-guide/atc-user-interface/ground-tower-radar Ground, Tower and Radar share one interface; commands depend on the aircraft's phase of flight and requests. Aircraft not on frequency: 1. Tabs on the left: Status page, tower view, and each frequency you have open. 2. Current weather. 3. UTC time, battery, and elapsed control time. Tap elapsed time to set multiple resettable timers. 4. Aircraft not on frequency are grey; tap for options. Aircraft on frequency: 1. Shown in blue; tap for options. 2. Each has a flight strip with basic information. 3. Tap "other message" or the strip to open the message menu. Message menu: 1. Select the message to send. 2. Sent and received messages are logged beneath the menu. 3. When an aircraft messages you, its strip and aircraft flash amber (if that frequency is displayed). 4. The message box (bottom right) shows all messages between all aircraft. 5. Settings, zoom and center buttons are always available. 6. The menu shows earlier messages to that aircraft and on which frequency. Messages on other frequencies: the frequency tab and aircraft flash amber. Aircraft tag: cycles between callsign and aircraft type, with altitude and groundspeed beneath. If the aircraft is receiving an ATC service, the service, airport code and runway (if applicable) show. Drag & Vector tool (radar frequencies, e.g. approach and departure): press, hold and drag from the aircraft toward the vector direction. It shows heading, distance, time to reach that point at current speed, and surrounding terrain. Release to see options to send the message. --- # Infinite Flight: Flying Guide > How to fly in Infinite Flight from gate to gate: ATC communication, Expert Server pilot rules, ground operations, departure, en-route and oceanic navigation, descent, approaches, landing and shutdown. For pilots of all levels, from novices to professional pilots, who want to improve their skills and prepare for the Expert Server. Source: https://infiniteflight.com/guide/flying-guide (infiniteflight-docs 6b73625). Generated by a model on 2026-10-20. If this file and the website disagree, the website is correct. ## Introduction URL: https://infiniteflight.com/guide/flying-guide Guide version: 26.1.0. The Flying Guide covers all aspects of flying in Infinite Flight, for pilots from novice to professional. New users should first read the Getting Started Guide (https://infiniteflight.com/guide/getting-started-guide). ## ATC Communication This section covers communication with ATC from pushback to parking. For help with the communication user interface, see https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/communication. ### Overview URL: https://infiniteflight.com/guide/flying-guide/atc-communication/overview When to contact ATC on departure: | Facility | When | | --- | --- | | Ground | When ready to push back or taxi. Make the request to Ground. | | Tower | When handed off from Ground, or when ready for departure (after "taxi to RWY XX, contact Tower when ready"). Then make your request. | | Radar (Departure/Center/Approach) | When handed off by Tower after take-off, or when entering the Controller's airspace after departure from a non-controlled field. Send "Check In [IFR]" or "Flight Following [VFR]". | When to contact ATC on arrival: | Facility | When | | --- | --- | | Radar | When handed off from another Radar Controller, or when entering the Controller's airspace. Send "Check In [IFR]", "Flight Following [VFR]" or a specific approach request. | | Tower | When handed off from Radar, or inbound with no radar service (within 25nm and below 10,000 AAL). Call "inbound on the [ILS/GPS/Visual], RWY XX", or "inbound for [landing/touch & go]" if no approach service was provided. | | Ground | When handed off by Tower (this can be an exit instruction), or when exiting the runway without an exit instruction or handoff. Then make your request. | Common mistakes: - Calling "inbound on the [ILS/GPS/Visual]" without an approach clearance. Without a clearance from a Radar Controller, announce "inbound for [landing/touch & go]". - Sending "Check In [IFR]" on initial contact with Approach. With Approach, only make the approach request. - Sending "requesting descent via [STAR] arrival" to Approach. With Approach, only make the approach request. - Requesting "Flight Following [VFR]" after "Check In [IFR]". Send only one request; these are two different services. - Announcing "remaining in the pattern" when departing. If you will not fly patterns, announce the direction of your departure from Tower's airspace. Special circumstances: | Scenario | Description | | --- | --- | | Center as Approach | Send "Check In [IFR]" to Center when you enter their airspace, and "requesting descent via [STAR] arrival" when you approach your TOD. At FL180, make your approach request for the destination. Center acknowledges (workload permitting) and issues vectors (if required) and a clearance. | | Tower with no Ground | If no Ground frequency is active, push back and taxi to a runway at your discretion (if clear). No communication with Tower is necessary until you are ready for take-off. | | Controller change in progress | For a short time no Controller is present. Fly as normal and treat previous clearances as valid. Make no new requests when the new Controller switches in; they can see all previous communication in the message log. | ### ATIS, Pushback and Taxi URL: https://infiniteflight.com/guide/flying-guide/atc-communication/atis-pushback-and-taxi #### ATIS communication After you spawn, you are automatically tuned to the ATIS frequency if a Controller staffs it. The ATIS broadcasts until you tune out. - The ATIS text shows at the top of the screen. - An on-screen notification tells you that you were automatically tuned to an active frequency. Tap it to dismiss it. - The Communication button (headset icon) changes frequencies, transmits and replies to ATC, and shows the message log. The communication box shows: 1. Top left: the airport of the Controller, the elevation and the frequency. Line 2: the Controller's facility and display name. Line 3: the airport METAR. 2. Back button: select other frequencies or tune out. 3. The last altitude, heading, speed and runway assignment from ATC, as a reminder (blank until ATC sends instructions). 4. Message log: all communication history. Double-tap it to show only your communication with ATC. Tip: while you listen to the ATIS, plan a taxi route to the most likely runway, based on your position and the departure runways in use. #### ATIS remarks | Remark | ATC intention | Pilot action | | --- | --- | --- | | No Intersection Departures | Use the full runway length. | Hold short at the end of the runway. | | No Pattern Work | No pattern work accepted. | Do not fly patterns. An inbound touch & go is permitted if you then depart the airspace. | | Gate Hold | All outbound ground movement is frozen. | Hold at the gate until the hold is lifted. Do not send duplicate pushback requests. | | No Light Aircraft | Light aircraft (XCub, C172, P38, SR22, PA28, Spitfire) not allowed in the airspace or at the airport. | Divert to, or respawn at, a different airport. | | Rolling Departures | Expedite departures. | When cleared for take-off, enter the runway and start the take-off roll immediately. | | Flight Plan Required | File a flight plan before pushback or taxi. | File a flight plan before you request pushback. | | Straight Out Departures | Keep runway heading until at the altitude given with the take-off clearance AND clear of traffic. | Fly straight until both conditions are true, then turn. | | Multiple Frequencies in Use | Controllers use more than one frequency. | Check the ATIS for the frequency for your position. Be ready to change frequency at any time. | | Check Forum for Event Information | Special instructions are on the IFC (for example FNF, VARB Summit). | Check the forum before flying. | | SID/STAR Use Recommended | Not essential for traffic, but recommended. | Add a SID/STAR to the flight plan. | | SID/STAR Use Required | Essential for traffic management or events. | Add an ATC preferred SID/STAR to the flight plan. | #### ATIS NOTAMs | NOTAM | ATC intention | Pilot action | | --- | --- | --- | | Event in Progress | An event is in progress. | Expect delays; depending on the event, you may not be allowed to participate. | | Size Restrictions in Place | The airport cannot handle some aircraft sizes. | Consider your aircraft size relative to the airport. | | Low Visibility | Low visibility reported. | Expect low visibility. | #### Pushback communication 1. Select the active Ground frequency. 2. Tap "Request Pushback". (If your stand needs no pushback, or your aircraft cannot push back, request taxi instead.) 3. Tap "Send" or "Request Specific Runway". For a specific runway, tap the runway in the list to send. Make sure the ATIS lists that runway as in use. 4. When ATC replies, the Communication button flashes amber and the message shows at the top of the screen. Tap the Communication button and "Reply". If ATC says to expect a specific runway, push back in a direction that lets you taxi to it. #### Taxi communication 1. Tap "Request Taxi". 2. Tap "Active Runway" to send, or "Request Specific Runway" and tap a runway (it must be in use for departure in the ATIS). 3. When the clearance comes, the Communication button flashes amber. Tap it and "Reply". #### Pilot to Ground Controller | Request | When to send | When not to send | | --- | --- | --- | | Request Taxi to an Active Runway | No runway preference. | While actively pushing back. | | Request Taxi to a Specific Runway | You have a runway preference. | For a runway that is inactive in the current ATIS. | | Request Pushback | You want to push back. | In an aircraft without pushback capability (C172, C208, TBM-930, SR22, XCub, F18, F22, F16, F14, A-10, Spitfire, P-38), or at a parking space that needs no pushback. | | Request Runway Crossing | Your taxi route crosses a runway. Request the runway in use. | Any other time. | | Request Frequency Change | You want to change frequency and have no clearance to do so. | When taxiing to a runway; the taxi instruction ("contact Tower when ready") includes the frequency change. | #### Ground Controller to pilot | Instruction | ATC intention | Pilot action | | --- | --- | --- | | Taxi to Runway, Contact Tower when Ready | Cleared to taxi to Runway XX. | Taxi to the assigned runway. | | Pushback Approved | Cleared to push back. | Push back onto the taxiway. | | Hold Position | Stop immediately. | At the gate: wait for pushback clearance. Taxiing: stop fully and wait for "Continue Taxi". | | Continue Taxi | "Hold Position" lifted. | Continue taxi. | | Hold Short of Runway | Hold short of the runway. | Keep the entire aircraft behind the hold short line. | | Cross Runway | Cleared to cross. | Cross. If "Please Expedite" is included, expedite. | | Give Way to Aircraft | Give way to another aircraft. | Yield to that aircraft. | | Expect Progressive Taxi Instructions | ATC will give progressive taxi. | Continue as normal until further instructions. | | Turn Left/Right Next Taxiway | Turn at the next taxiway. | Turn, then continue until further instructions. | | Continue Straight Ahead | Stay on the current taxiway. | Stay on it until further instructions. | | Make a 180 | Make a 180 degree turn. | Turn around and wait for instructions. | | Follow Aircraft Ahead | Follow the aircraft ahead. | Follow it until further instructions. | | Continue Taxi at your Discretion | Progressive taxi ended. | Taxi at your discretion; follow any other taxi instructions given. | ### Take-Off and Departure URL: https://infiniteflight.com/guide/flying-guide/atc-communication/take-off-and-departure #### Take-off communication 1. Select the active Tower frequency. 2. Tap "Request Departure". 3. Select the runway you hold short of, then tap "Departing" or "Remaining in the Pattern". When departing, select the direction in which you leave Tower's airspace (for example "South" if your SID goes south). If you are not first in line, add "In Sequence". The Controller may give sequencing at any time while you are in the queue. 4. When the clearance comes, the Communication button flashes amber. Tap it and "Reply". #### Pilot to Tower Controller (on the ground) | Request | When to send | | --- | --- | | Request Departure - Departing | Ready to take off from the active runway. The direction must match the direction you leave Tower's airspace. Add "In Sequence" if not first in line. | | Request Departure - Remaining in the Pattern | You will fly patterns (take off and land at the same airport). Add "In Sequence" if not first in line. | | Request Runway Crossing | With Tower and you want to cross a runway; request to cross the active end. | | Request Frequency Change | You want to change frequency and have no clearance to do so. | Do not send any of these in other circumstances. #### Pilot to Tower Controller (in the air) | Request | When to send | | --- | --- | | Inbound for Landing | No approach clearance, or you had radar vectors or flight following. | | Inbound on the ILS | Cleared for an ILS approach. | | Inbound on the GPS | Cleared for a GPS approach. | | Inbound on the Visual | Cleared for a visual approach. | | Announce Go Around | Unstable approach, runway blocked by an aircraft, or loss of separation with the aircraft ahead. | | Request Departure | Leaving Tower's airspace after flying in the pattern. | | Report Position | Not yet cleared and landing momentarily. | | Report Position - Full Stop | To tell ATC you will land (full stop) after flying in the pattern. | | Request Runway Change | To change runway while in the pattern or after calling inbound. | | Request Transition | Flying through Tower's airspace. | | Request Frequency Change | You want to change frequency and have no clearance to do so. | | Announce Missed Approach | The approach is not right for any reason. | Do not send any of these in other circumstances. #### Tower Controller to pilot | Instruction | ATC intention | Pilot action | | --- | --- | --- | | Cleared for Take-Off | Take-off clearance. | Start the take-off roll. | | Cancel Take-Off Clearance, Hold Position | Clearance cancelled. | Abort the take-off and hold on the runway. | | Hold Short | Hold off the runway. | Go to the hold short line and stop (ATC may give sequencing). | | Line Up and Wait | Line up and hold. | Enter the runway, stop, be ready to take off. | | Back Taxi | Enter the runway and taxi to the given end. | Taxi on the runway, then exit and contact Ground, or line up and wait, as instructed. | | Exit Runway | Exit the runway after landing. | Roll off the runway and contact Ground. | | Exit Runway, Cross Runway XX and Contact Ground | Exit at a controlled speed, cross Runway XX, contact Ground. | Slow to a safe speed, cross, contact Ground. No more communication with Tower is needed. | | Exit Runway, Hold Short of Runway XX | Exit at a controlled speed and hold short of Runway XX. | Hold short. Stay with Tower; runway crossing requests are not necessary. | | Speed at your Discretion | Manage your own speed. | Fly any safe speed; obey speed restrictions. | | Maintain Present Speed | Keep current speed. | Keep that speed until told otherwise. | | Maintain Slowest Practical Speed | Fly as slow as is safe. | Decrease speed as much as possible. | | Maintain Best Forward Speed | Fly as fast as is safe. | Increase speed as much as possible. | | Adjust Speed to Follow Aircraft Ahead | Slow down for separation. | Fly at or below the speed of the aircraft ahead. | #### Departure communication 1. Once airborne, wait for Tower to send "Frequency change approved, good day" or to hand you off to another active frequency. 2. The Communication button flashes amber. Tap it and "Reply to Handoff". 3. If you got "Frequency change approved, good day", no Controller is active in your area: tap "Tune out of [airport ICAO code] Tower" and continue. If handed off to an active frequency, choose "Send & Switch" (reply and tune automatically) or "Send" (reply; tune manually). 4. On the Radar frequency, you can send: | Departure type | Check In [IFR] | Flight Following [VFR] | | --- | --- | --- | | With flight plan | Yes | Yes | | Without flight plan | No | Yes | Make only ONE request. Multiple transmissions increase Controller workload and can give a violation (spamming frequency). #### Pilot to Radar Controller | Request | When to send | When not to send | | --- | --- | --- | | Request Approach | You want an ILS, GPS or visual approach. | Other times. | | Request Flight Following | You want to fly to your destination without an approach. If approved, follow your flight plan with altitude at your discretion. | After Checking In. | | Request Radar Vectors | You want no ILS, GPS or visual approach and requested no other service. ATC vectors you onto a VFR pattern leg and hands you to Tower/Unicom at pattern altitude. | Other times. | | Request Altitude Change | Within 1,000ft of terrain, or within 3NM/1,000ft of another aircraft; ATC checks and acts if necessary. Also to climb above your initial cruise altitude. | On departure; Check In gives altitude discretion. | | Executing Missed Approach | You cannot continue the approach. After a go-around, send this to Radar on contact. | Other times. | | Check In | Mainly with Center and Departure. Approval lets you follow your own lateral and vertical guidance filed in the FPL. | With Approach; request an approach instead. | | Request Descent via STAR | 1 minute before your top of descent (TOD) with a STAR filed. | If Radar tells you to state your approach request. | | Request Frequency Change | You want to change frequency and have no clearance to do so. | Impatiently; changes are not always given at once. | | Airport In Sight | You can see the airport on a visual approach. | Other times. | #### Radar Controller to pilot | Instruction | ATC intention | Pilot action | | --- | --- | --- | | Continue As Filed | Fly at your discretion. | Continue as filed; altitude and direction changes need no clearance. | | Resume Own Navigation | Navigate on your own. | Direction changes need no clearance. Altitude changes do. | | Speed at Your Discretion | Manage your own speed. | Fly any safe speed; obey speed restrictions. | | Maintain Present Speed | Keep current speed. | Keep it until told otherwise. | | Maintain Slowest Practical Speed | Fly as slow as is safe. | Decrease speed as much as possible. | | Maintain Best Forward Speed | Fly as fast as is safe. | Increase speed as much as possible. | | Adjust Speed to Follow Aircraft Ahead | Slow down for separation. | Fly at or below the speed of the aircraft ahead. | | Please Expedite Altitude Change | Expedite the altitude change. | Increase vertical speed. | | Amend Flight Plan to Include ATC Preferred STAR | Regulate traffic flow. | Add an ATC preferred STAR to the flight plan. | ### Remaining in the Pattern (ATC) URL: https://infiniteflight.com/guide/flying-guide/atc-communication/remaining-in-the-pattern 1. Select the active Tower frequency. 2. Tap "Request Departure". 3. Select the runway you hold short of, then tap "Remaining in the Pattern". 4. When the clearance comes, the Communication button flashes amber. Tap it and reply. 5. Once airborne you receive at minimum a sequence and a clearance. You may also get a pattern entry if required (for example after a runway change). Pattern altitude: 1000ft AAL (above aerodrome level) for props, 1500ft AAL for jets (ATC Manual 3.4.1: https://infiniteflight.com/guide/atc-manual/3.-tower/3.4-pattern-work-transitions-flight-of-xx#3.4.1). The communication tables on this page are the same as the Tower tables in Take-Off and Departure above (pilot to Tower on the ground, pilot to Tower in the air, Tower to pilot). ### En-Route (ATC) URL: https://infiniteflight.com/guide/flying-guide/atc-communication/en-route 1. If you got "Frequency change approved, good day", no Controller is active: tap "Tune out of [airport ICAO code] [facility]" and continue. If handed off, choose "Send & Switch" or "Send" (then tune manually). 2. On the Radar frequency: with a flight plan you may send Check In [IFR] or Flight Following [VFR]; without a flight plan, only Flight Following [VFR]. Make only ONE request (else risk a violation). 3. Monitor the airspace. If you are about to enter an active area, or you receive an "On-Guard" message, tune in to that frequency. | Facility | Vertical jurisdiction | Lateral boundary | | --- | --- | --- | | Tower | SFC - 5000ft AAL | Innermost ring/boundary around the airport | | Departure/Approach | SFC - 18,000ft/FL180 | 50nm | | Center | SFC - 60,000ft/FL600 | White boundaries | NOTAMs and TFRs can change airspace and ATC jurisdiction during special events. The communication tables are the same as the Radar tables in Take-Off and Departure above. ### Descent and Approach (ATC) URL: https://infiniteflight.com/guide/flying-guide/atc-communication/descent-and-approach #### Descent communication 1. If the destination ATIS is active: tap the airport on the Map or Mini Map, select the airport in the list, tap "ATIS", then "TUNE". 2. Make sure you have an "ATC Preferred" arrival (if listed) and an approach to a runway in use for landing. 3. Tap the Communication button and select the Radar frequency for initial contact: | Facility | Initial transmission | When | | --- | --- | --- | | Center | "Check In" | Just before you enter the white boundary on the map | | Approach | "Approach Request" (then select airport, approach type and runway) | At or below FL180 and within 50nm of destination | If you are with an active ATC facility, DO NOT change frequency without permission. 4. In cruise, 1 minute before your Top of Descent, send "request descent via [STAR]" to Radar (only with a STAR in your flight plan). 5. When cleared, start the descent. Check that the area is clear; use the Cameras and Mini Map. #### Approach communication 1. If Approach is active, Center hands you over at a set point (usually FL180 or 50nm from destination). Do not change frequency without permission. 2. When the frequency change comes, the Communication button flashes amber; tap it and "Reply". If you got "Frequency change approved, good day", no Controller is active: tap "Tune out of [airport ICAO code] [facility]". If handed off, choose "Send & Switch" or "Send". 3. Once tuned in, tap "Request Approach". 4. Select the airport. Tip: make the destination airport the last fix in your flight plan so its frequencies are at the top of the list. 5. Tap an approach type for "any runway", or select a runway and approach type. 6. Radar replies "continue as filed" (continue descent and own navigation) or "expect vectors" (be ready for vectors). 7. Be ready for vectors and/or altitude assignments at any time. Tap "reply" and fly them promptly. 8. When you are established and separation is satisfied, Radar (at their discretion) hands you to Tower (if present). The communication tables are the same as the Radar tables in Take-Off and Departure above. ### Landing and Taxi to Parking (ATC) URL: https://infiniteflight.com/guide/flying-guide/atc-communication/landing-and-taxi-to-parking #### Landing communication 1. Select the active Tower frequency. 2. Tap "Call Inbound". 3. Select your intention: "Landing" or "Touch and Go". 4. Choose one of: | Option | When to send | | --- | --- | | Send | Not cleared for an approach by Radar | | Request Specific Runway | Not cleared for an approach by Radar | | On the ILS | Cleared for the ILS by Radar, or flying a charted ILS approach | | On the GPS | Cleared for the GPS by Radar, or flying a charted GPS approach | | On the Visual | Cleared for the Visual by Radar, or flying a charted Visual approach | 5. For any option except "Send", select the runway. Send the runway Radar assigned, or (with no Radar) the runway in use for landing and/or most suitable for your position. 6. Tower response: | Sent | Tower response | | --- | --- | | Send / Request Specific Runway | Pattern entry, sequence (if required), Number [sequence] Cleared to [Land/For the Option] | | On the ILS / On the GPS | Number [sequence] Cleared to [Land/For the Option] | | On the Visual | Sequence (if required), Number [sequence] Cleared to [Land/For the Option] | 7. When the clearance comes, the Communication button flashes amber. Tap it and "Reply". The landing communication tables are the same as the Tower tables (in the air, and Tower to pilot) in Take-Off and Departure above. #### Taxi to parking communication 1. After landing, exit the runway quickly but under control. The exit transmission can include the exit direction and hold short or crossing instructions for other runways. 2. When able, tap the Communication button and reply to Tower (this can include "Contact Ground"). 3. If you have permission to change frequency, tap the back arrow in the Communication tab and select the Ground frequency. Clear the runway fully before you contact Ground. You do not need to stop; keep moving. 4. Tap "Request Taxi", then "Parking". 5. When taxi instructions come, the Communication button flashes amber. Tap it and "Reply". The taxi communication tables are the same as the Ground tables in ATIS, Pushback and Taxi above. ## Expert Server ### Pilot Rulebook URL: https://infiniteflight.com/guide/flying-guide/expert-server/pilot-rulebook Violations (details: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/violations): - Level 1: 3 or more Level 1 violations in one flight remove the pilot from the server automatically. The pilot must start a new flight. - Level 2 (Amber): the pilot is disconnected but can continue the flight offline. The pilot can return to the Expert Server at once with a new flight, if the number of Level 2 and 3 violations stays under the server limits. - Level 3 (Red): the pilot is disconnected but can continue the flight offline. After the flight ends, the pilot cannot return to the Expert Server; access is restricted for 7 days. Violation reasons can be generic. If you are not sure why you got one, contact the controller on the Community Forum (see "Appealing a Level 2 or 3 Violation" on the violations page). Complete list of reasons Controllers can use for a violation: - Not following procedures broadcast on ATIS or in a published TFR/NOTAM - Pushback/taxiing without clearance - Crashing/taxiing into other aircraft/buildings/objects (1) - Taking off/landing from a taxiway or grass - Entering the runway without clearance - Taking off/landing without clearance - Not following the issued sequence - Not following the cleared altitude/heading/speed - Not responding to an instruction after 2-3 attempts (2) - Sending duplicate messages or unnecessary requests - Spamming a frequency - Repeated disruption - Insulting or inappropriate call-signs/usernames or flight paths/plans - Call-signs/usernames with profanity or discriminating/racist terms - Excessive speed in the airport environment (3) Notes: 1. Rendering issues can mean pilots did not see other aircraft/buildings/objects. Controllers only issue violations to pilots who blatantly did it on purpose. 2. Pilots descending via VNAV only get a violation after a warning if they are unresponsive AND conflict with others. 3. Speed that causes rapid closure with other aircraft, loss of separation, or airspace disruption can be "excessive". Fighter aircraft must not exceed 350 KIAS below 10,000ft under ATC control. Pilots must keep a reasonable speed near other aircraft or when Controllers tell them to slow down; a report for excessive speed can be issued for a lack of etiquette. Standard commercial speed restrictions also apply to military cargo aircraft (maximum 250 KIAS below 10,000ft under ATC control). ## On the Ground URL: https://infiniteflight.com/guide/flying-guide/on-the-ground/overview This section covers flight planning, pushback and engine start, and taxi. ### Flight Planning URL: https://infiniteflight.com/guide/flying-guide/on-the-ground/flight-planning Weight & Balance: after you spawn at the gate, tap the Pause Screen button to open the Weight & Balance page. Adjust fuel, passenger load and cargo load. Carry enough fuel for exceptional conditions such as stronger headwinds and traffic delays. ATIS (Automatic Terminal Information Service): sends the latest airport information (if ATC is present) on a dedicated frequency when you are in range. It normally includes: - The latest METAR (Meteorological Terminal Air Report: current airport weather, usually date/time recorded, wind direction and strength, visibility, weather and cloud, temperature and dew point, and pressure) - Runway(s) in use - REMARKS and/or NOTAMS (for example "No Pattern Work Allowed") - Which frequency to contact, if multiple frequencies are open Digital ATIS (D-ATIS) shows the same information as text: 1. Tap near the airport on the map and select it from the drop-down list. 2. The information tab shows first. Tap the "wx" (weather) tab. 3. If ATC is present at the airport (and using the ATIS frequency), the D-ATIS shows. D-ATIS range is unlimited; use it for planning before you tune to an active frequency. ATIS meanings: https://infiniteflight.com/guide/atc-manual/4.-atis/4.1-overview Autopilot (AP) setup before departure (initial targets): 1. Open the Autopilot FCU (Flight Control Unit): tap "AP OFF" on the right of the screen. 2. Set "SPD" to the target climb speed after take-off (should be V2). 3. Set "ALT" to the target stop altitude after departure (usually the stop altitude of your SID). 4. The targets show on the PFD and HUD. Flight plan: after you spawn at the gate, tap the Globe button to open the Flight Planning page and build your flight plan. You can also adjust it with the Mini Map. See SIDs and STARs below. Airspace colors on the Map and Mini Map: | Airspace type | Color | | --- | --- | | Class B | Blue | | Class C | Magenta | | Class D | Light Blue | | Terminal Control Area | Light Green | | Flight Information Region (FIR) | White | Pilots can follow real-world procedures for realism, but ATC use of airspace in Infinite Flight is simplified. See the ATC Manual: https://infiniteflight.com/guide/atc-manual/5.-airspace/5.1-airspace ### TFRs and NOTAMs URL: https://infiniteflight.com/guide/flying-guide/on-the-ground/tfrs-and-notams A TFR (Temporary Flight Restriction) is a block of airspace with restrictions. In real life the cause can be movement of government officials, natural disasters or other special events. A NOTAM (Notice to Airmen) tells pilots about potential hazards on their route, including departure, destination and/or alternate(s). In Infinite Flight, TFRs/NOTAMs are on the Expert Server, shown as red/orange circles of different sizes. They are used for airports with permanent restrictions, or temporarily for special events. Red = active. Orange = inactive. Permanent NOTAMs (all: Type NOTAM, Status ACTIVE, Floor SFC, Ceiling 10,000ft). Temporary TFRs/NOTAMs may not be listed, but you must comply with any TFR/NOTAM shown as active (red circle). | Airport | Restriction | | --- | --- | | CYTZ (Toronto City Billy Bishop) | Aircraft larger than Dash-8 Q400 not authorized. Jet traffic not authorized. Larger aircraft MUST divert. | | EGKK (London Gatwick) | RWY 08L/26R CLOSED; taxiway use ONLY. | | EGLC (London City) | Aircraft larger than A318 not authorized (A223, E-Jets and C130s allowed). Larger aircraft MUST divert. | | HAAB (Bole Intl, Addis Ababa) | RWY 07L/25R CLOSED; taxiway use ONLY. | | KASE (Aspen-Pitkin Co Sardy) | Aircraft larger than CRJ-900 not authorized (including A320/B737 series). Larger aircraft MUST divert. Special procedures due to terrain: RWY33 for departure ONLY; after departure, immediately turn right 10 degrees. RWY15 for arrivals ONLY. | | KEGE (Eagle County Regional) | Aircraft larger than A321/B757 not authorized. Larger aircraft MUST divert. | | KLGA (La Guardia) | Aircraft larger than A321/B757 not authorized. Larger aircraft MUST divert. | | LIRP (Pisa-San Giusto "Galileo Galilei") | RWY 04L/22R CLOSED; taxiway use ONLY. | | LTBJ (Izmir Adnan Menderes Intl) | RWY 16R/34L CLOSED; taxiway use ONLY. | | MHTG (Toncontin Intl) | Aircraft larger than A321/B757 not authorized. Larger aircraft MUST divert. | | NZQN (Queenstown) | Aircraft larger than A321/B757 not authorized. Larger aircraft MUST divert. | | OBBI (Bahrain Intl) | RWY 12R/30L CLOSED; taxiway use ONLY. | | OOMS (Muscat Intl) | RWY 08R/26L CLOSED; taxiway use ONLY. | | OPIS (Islamabad) | RWY 10L/28R CLOSED; taxiway use ONLY. | | SBRJ (Santos Dumont) | Aircraft larger than A320/B737 not authorized. Larger aircraft MUST divert. | | SBRJ (Santos Dumont) | RWY 02L/20R CLOSED; taxiway use ONLY. | | UAAA (Almaty Intl) | RWY 05L/23R CLOSED; taxiway use ONLY. | | VHHX (Kai Tak) | Special procedures due to terrain. Straight-in approach RWY13 not authorized. For the RWY13 approach: CC NDB at 4500ft; track 040 degrees from CC NDB to SC NDB; do not descend below 2000ft until crossing RW NDB 7NM; visual right turn abeam the checkerboard to RWY13. Published approach procedures (found online) recommended. | | VNLK (Tenzing-Hillary/Lukla) | General Aviation aircraft ONLY. All other aircraft MUST divert. No pattern work allowed. | | VOHS (Rajiv Gandhi Intl) | RWY 09L/27R CLOSED; taxiway use ONLY. | How to comply (to avoid violations): 1. After you file your flight plan (if applicable), check the route on the map or mini map for red/orange circles. 2. If you pass through or near a TFR/NOTAM, or your destination(s) have one, tap on (or near) the circle. 3. Select the TFR/NOTAM from the drop-down list. 4. Read its information. Check if it is active, or will be active when you fly near it. Once active, all aircraft must comply, no matter when the flight started. 5. If it is or will be active and you will fly through it (within the floor to ceiling range), comply fully before departure. Outside its radius or altitude it does not apply (for example, above a 10,000ft ceiling). 6. If you cannot comply, change your routing, altitude and/or destination to avoid a violation ("Failure to follow TFR"). 7. Check the IFC (https://community.infiniteflight.com) for upcoming events with temporary TFRs/NOTAMs that may not show on the map yet. ### Pushback and Engine Start URL: https://infiniteflight.com/guide/flying-guide/on-the-ground/pushback-and-engine-start #### Preliminary cockpit preparation After you spawn: 1. Ground Services menu: GND POWER - TAP (if available for the aircraft type). 2. Systems menu: Electrical: Master Batt ON; APU START (if fitted; not all aircraft have an APU). 3. Lights: Nav ON. 4. Passengers: Seat Belts ON (when refuelling is finished); No Smoking ON. 5. Ground Services menu: PAX, CATERING, CARGO - TAP. To use ground services, the aircraft must be parked at a stand large enough for the type, with the parking brake set and the engines and beacon off. #### Pushback 1. Check that the area is clear (Cameras and Mini Map). Deselect any ground services before pushback. Have the APU running (if fitted) before you disconnect ground power. 2. Ground Services menu: deselect PAX, CATERING, CARGO, GND POWER if selected (selected services are highlighted orange). They can be disconnected in any order, usually when the pilot decides each service has finished. Then Pushback: Attach Tug - TAP. 3. Tune to the active frequency and request pushback. With no active ATC, tune to Unicom and listen for traffic before you push. 4. Systems menu: Lights: Beacon ON. 5. Ground Services menu: Pushback: Push - TAP. The parking brake must be OFF before you can push. 6. Have a plan for where to push. ATC may tell you which runway to expect. Use the Cameras and Mini Map during the push, and the Rudder for directional control. 7. To stop: Ground Services menu: Push - TAP, then Detach Tug - TAP. Set the parking brake ON after the push and before you detach the tug. Tip: when you align with the taxiway centerline, anticipate. The larger the aircraft, the sooner you must start the turn. #### Auto Pushback Auto Pushback moves the aircraft to the point on the taxiway that you or ATC defined, so you can do other tasks such as engine start. Pinch to zoom in/out. Controls: 1. Compass: use it for ATC "Tail to the (Direction)" instructions. 2. The point the aircraft is pushed back to. 3. The point the aircraft is pulled forward to (optional). 4. Start/End button: starts the sequence (changes to End once started). 5. Pause/Resume button. 6. "Detach Tug" or "Auto Pushback" exits the Auto Pushback mode/camera. #### Engine start Engine start can begin during or after the pushback. 1. Check that the area is clear (Cameras and Mini Map). 2. Systems menu: Engines: Eng 'X' 0% N1 - TAP. The start sequence for that engine begins. For realism, start one engine at a time; wait for the % N1 to be green before the next. Or use Misc: Auto Start - TAP. 3. When at least one engine runs: Systems menu: Electrical: APU OFF (if fitted). ### Stand Guidance URL: https://infiniteflight.com/guide/flying-guide/on-the-ground/stand-guidance Not all stands have stand guidance. When you approach, it shows "OK", the gate number, aircraft type and airport name. If it shows "Too Large" or "Too Small", you cannot park at that gate. When you are aligned on the centerline, it shows the distance to the stopping point and lateral guidance to stay on the centerline. When parked, it shows "OK", the gate number, aircraft type and airport name. ### Taxi URL: https://infiniteflight.com/guide/flying-guide/on-the-ground/taxi After start checks (before taxi): 1. Spoilers: ARMED. 2. Trim and Flaps: set for take-off. 3. Autobrake: MAX (if fitted). Systems menu: Misc: Autobrakes MAX. Taxi: 1. Check that the area is clear (Cameras and Mini Map). 2. Request taxi from active ATC. With no ATC, announce taxi on Unicom and listen for traffic while moving. 3. Release the Park Brake and increase power. Do not exceed 40% N1 while taxiing; once moving, idle power is usually enough. 4. Use the Rudder to stay on the centerline and the Rud Brakes or Park Brake to control speed. Do not exceed 35kts groundspeed (in-game violations). Recommended: below 25kts in a straight line and 10kts or less in 90 degree turns. 5. To cross a runway, request runway crossing from active ATC, or announce it on Unicom with no ATC. Always check it is clear before you enter. Systems menu: Lights: Strobes ON, Land ON. Set them OFF when clear of the runway. ### Autobrake URL: https://infiniteflight.com/guide/flying-guide/on-the-ground/autobrake The autobrake system: - Reduces braking distance in an aborted take-off. - Sets and holds a selected deceleration rate on landing, for passenger comfort and lower crew workload. When you select an autobrake setting, the spoilers ARM automatically for take-off or landing. Take-off: always set autobrake to MAX (if fitted) before departure, for a rejected take-off (RTO). Systems menu: Misc: Autobrakes MAX. Landing: use manual braking or an autobrake setting (LOW or MED). Autobrake (if fitted) is recommended; you can disconnect it during the landing roll. Systems menu: Misc: Autobrakes LOW or MED. MAX is not available for landing; if selected when not on the ground it defaults to MED. ## Take-Off to Cruise URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/overview This section covers take-off to cruise: back-taxi, crosswind take-off technique, and navigation after take-off. ### Before Take-Off URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/before-take-off At the holding point: 1. Check that the area is clear (Cameras and Mini Map). 2. Tune to the active Tower frequency and report ready for departure. With no active ATC, tune to Unicom. 3. When you have clearance (if applicable) and the approach is clear: Systems menu: Lights: Strobes ON, Land ON. 4. If ATC cleared you to Line Up and Wait (LUAW), taxi onto the runway centerline and stop. If cleared for take-off, or on Unicom, start the take-off roll at once if the runway is completely clear. If you are performance limited (aircraft weight, environmental factors or runway length), use the oversteer technique to save as much runway as possible. ### Back-Taxi URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/back-taxi Back-taxi: using any part of a runway as a taxiway, in the direction opposite to the take-off or landing direction. It is needed when holding points are not at the runway ends (to get the full or required length), or after landing when exits are not in a convenient place. ATC may tell you to back-taxi. 1. Check that the area is clear (Cameras and Mini Map). 2. Tune to the active Tower frequency and report ready for departure, or tune to Unicom if no ATC. 3. When cleared (if applicable) and the approach is clear: Systems menu: Lights: Strobes ON, Land ON. 4. If cleared to Back-Taxi and Line Up and Wait (LUAW), taxi on the runway opposite to your take-off direction until you have enough runway behind you. Then make a 180 degree turn and align with the centerline. You do not need to go to the runway end if you do not need it. There is no groundspeed limit on the runway, but do not exceed 35kts in a straight line, and stay below 10kts in turns. 5. After landing, if you pass the last usable exit, ATC clears you to back-taxi and contact Ground when off the runway. Slow to a sensible speed before the 180 degree turn. Tip: learn the airport ground layout before landing to plan your exit. Touching down in the touchdown zone with correct braking often prevents a back-taxi. ### Take-Off and Initial Climb URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/take-off-and-initial-climb You rarely need full power; weight, altitude, temperature and runway length set the thrust needed. When cleared for take-off (or on Unicom) and the runway is completely clear: 1. Set 50% N1 so the engines stabilize and to prevent asymmetric thrust. 2. When 50% N1 is stable, release the brakes (if not yet released) and progressively increase to take-off power. 3. At VR (rotate speed), pitch to 15 degrees nose up. Keep back pressure; rotate at about 3 degrees per second (about 5 seconds to 15 degrees). 4. When stable at 15 degrees, adjust pitch to hold V2+10 to V2+20kts (example: V2 145kts gives 155-165kts). 5. Positive climb: gear up. 6. At 1000ft AAL, lower the nose to 10 degrees, reduce to climb power, and let the aircraft accelerate. 7. Retract flaps as you approach the flap retraction speeds for your aircraft. 8. Accelerate to the lowest of: 250kts, the SID speed restrictions, or your aircraft climb speed. Adjust pitch to hold it. 9. Within 2000ft of a level-off altitude, reduce the climb rate to 1500fpm or less so you do not bust the cleared altitude. 10. When you resume the climb, reset climb power and adjust pitch to hold the required speed. ### Crosswind/Tailwind Take-Off Technique URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/crosswind-tailwind-take-off-technique Crosswind take-off: 1. Use the ATIS and other weather data to find the wind direction and crosswind component before the take-off roll. 2. Deflect the Aileron into wind (wind from the right: tilt the device right, so the right aileron is up and the left aileron down). Use the Rudder to hold the centerline. Without input, the aircraft turns into wind as speed increases (weather cocking) and you can lose control. For independent aileron and rudder control, set auto-coordination OFF in Settings. 3. As speed increases, reduce aileron deflection so the wings do not tip. 4. At VR, rotate as normal and gradually remove remaining rudder and aileron inputs. To hold the extended centerline, fly slightly into wind. Tailwind take-off: always try to take off into wind (pick the runway with the best headwind component). A busy airport or the weather can make a tailwind take-off necessary. Fly it like a normal or crosswind take-off, plus: - Increase thrust more gradually; the risk of asymmetric thrust is higher with a tailwind. - Do not take off if the tailwind component exceeds 10kts. - Rotate more carefully; a tail strike is more likely. ### Standard Instrument Departure (SID) Navigation URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/standard-instrument-departure-(sid)-navigation A SID is a published procedure that IFR aircraft follow immediately after departure. It gives a pre-defined route (sometimes with altitude/speed restrictions) to leave the airspace clear of adjacent airspace, terrain and arriving traffic. A transition (in SID/STAR context) is a branch of the procedure that turns you toward your destination. Not all procedures have one; use them for a more direct route. Put a SID in your flight plan: 1. After you spawn, check the ATIS/D-ATIS for runways and ATC preferred SIDs in use. Pick an ATC preferred SID and a transition toward your destination. Watch for "Straight Out Departures" in the ATIS, or an instruction to maintain runway heading with the take-off clearance. ATC instructions supersede your flight plan. 2. Load the SID (guide: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/navigation#selecting-departure%2C-arrival-and-approach-procedures). 3. You may get a different runway than expected and need a different SID. Have a few options ready. Separation: IFR aircraft must always keep a minimum of 3nm laterally or 1000ft vertically from other aircraft. Fly a SID: 1. Use GPS Navigation to fly the SID. 2. Study the flight plan and/or charts. You can also tune navaids on the SID. Obey all altitude/speed restrictions (airspace, terrain clearance, separation). 3. Once airborne, keep the magenta Radial Deviation Bar in line with the magenta Course Select Pointer on the HSI. Check that the area is clear before turns. 4. Near each waypoint, the flight plan cycles automatically to the next waypoint and the HSI resets to the new radial. 5. To reduce workload, engage the Autopilot and LNAV. Caution: with the autopilot engaged, arming LNAV makes the aircraft follow the flight plan immediately; make sure it is clear. 6. With active ATC you are told to contact Departure, or given "Frequency Change Approved". When handed to Radar and you want to follow your flight plan, use "Check In". The controller replies "Radar Contact" and you continue as filed. The Controller may issue vectors and/or altitudes; these supersede your flight plan until you are told "Continue as Filed". ### Visual Flight Rules (VFR) Departure Navigation URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/visual-flight-rules-(vfr)-departure-navigation VFR: regulations for flying an aircraft visually, in Visual Meteorological Conditions (VMC). The pilot must be able to navigate visually and "see & avoid" terrain and other aircraft, keeping a MINIMUM of 500ft vertical separation from other aircraft. VMC: weather minima for VFR flight. Real minima vary by country and airspace. In Infinite Flight, VMC exists when visibility is 3 statute miles (about 5000 meters) or more; then ATC allows VFR flight and pattern work (terrain and traffic permitting). Only visibility is used to determine VMC in Infinite Flight. IFR aircraft can fly in IMC or VMC; VFR aircraft only in VMC. Pre-flight: 1. Check that the weather is VMC (minimum 3 statute miles visibility) in the "wx" tab of the map or mini map. 2. Filing a flight plan is recommended but not required for VFR. ForeFlight is a useful planning tool. 3. Research the route and choose a cruising altitude with terrain clearance that satisfies the VFR semi-circular rules (see Step Climbs and Cruising Altitudes). Departure: 1. At the holding point, tune to the active frequency, or Unicom if no ATC. You can depart the airspace or remain in the pattern. 2. Report ready for departure (or announce take-off on Unicom) and select the departure type. 3. To depart the airspace, select the direction you leave the airspace in (straight out, north, east, south or west). This is the direction you leave the airspace, not the overall direction of the flight plan. 4. After departure (if not in the pattern), Tower hands you to Radar (if present). With no ATC coverage, switch to an appropriate frequency. With active ATC, do not change frequency without permission. 5. With Radar, either Check In or request VFR Flight Following. Flight Following is recommended for VFR (with a flight plan, a Check In can look like an IFR request). Both mean the same, so send only one. 6. Continue VFR. You are responsible for terrain and traffic avoidance. ATC may vector you away from IFR traffic; follow vectors until told "resume own navigation". ### Remaining in the Pattern URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/remaining-in-the-pattern The traffic pattern is a standard flight path for take-off and landing while in visual contact with the airport. It is good practice and adds landings to your logbook (in Settings). Pattern altitude: 1000ft AAL for props, 1500ft AAL for jets. Legs are joined by 90 degree turns. 1. Take off as in Before Take-Off and Take-Off and Initial Climb. Before take-off, set the heading bug to runway heading (a reference for the 90 degree turns) and bug the pattern altitude. 2. Passing 400ft AAL, start the first 90 degree turn onto the left or right crosswind leg. Check whether ATC told you to make left or right traffic; on Unicom, listen to other traffic. Left traffic: all turns are left and the airport is on your left on downwind (right traffic: the opposite). 3. The crosswind leg sets the pattern width. Small aircraft can stay close; large jets need a wider pattern for a safe turn to final. 4. After the second 90 degree turn onto downwind: on Unicom, report your position on this and all legs. With ATC, you do not need to if cleared for the option. Listen for ATC separation instructions and watch the Mini Map; you are also responsible for avoiding conflicts. 5. Abeam the touchdown zone, prepare for final approach; aircraft configure at different points. 6. When the runway threshold is at 45 degrees from you, turn 90 degrees onto base. Start descent if not yet started (aircraft dependent). 7. The final turn needs anticipation, especially with a strong tailwind on base. 8. Control the descent to roll out on final on profile. If high or low, adjust pitch and power. To expedite patterns, you can do a Touch & Go (see Landing below). ### Instrument Flight Rules (IFR) En-Route Navigation URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/instrument-flight-rules-(ifr)-en-route-navigation IFR: regulations for flying in Instrument Meteorological Conditions (IMC) or in particular airspace. In Infinite Flight, IMC exists when visibility is less than 3 statute miles (about 5000 meters); ATC then does not allow VFR flight or pattern work. IFR aircraft can fly in IMC or VMC; VFR aircraft only in VMC. Controller airspace is defined by vertical jurisdiction, lateral boundary and frequency range. In Infinite Flight: | Position | Vertical jurisdiction | Lateral boundary | | --- | --- | --- | | Tower | SFC - 5000ft AAL | Innermost ring/boundary around the airport | | Departure/Approach | SFC - 18,000ft/FL180 | 50nm | | Center | SFC - 60,000ft/FL600 | White boundaries | NOTAMs and TFRs can change these during special events. The map airspace colors (Class B blue, Class C magenta, Class D light blue, Terminal Control Area light green, FIR white) are for information only. Separation: IFR aircraft must always keep a minimum of 3nm laterally or 1000ft vertically. En-route procedure: 1. A flight plan is always required for IFR. Follow it with your instruments or the autopilot navigation. ForeFlight is a useful planning tool. 2. Set a cruising altitude for terrain clearance and the IFR semi-circular rules. 3. When approaching controlled airspace, tune in and listen for traffic. 4. Radar Controller: Check In. Tower Controller: request a transition through their airspace. In uncontrolled airspace, tune to the nearest Unicom to listen for traffic; you can send or request traffic advisories. 5. You can request Radar Vectors or other ATC services; IFR separation rules (aircraft and terrain) then apply. ### VOR (VHF Omni-Directional Range) Navigation URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/vor-(vhf-omni-directional-range)-navigation A VOR is a ground-based transmitter identified by its frequency and three-letter code. Aircraft with VHF Navigation Receivers use its signals to navigate. Tune the frequency, then display it in the cockpit. | Term | Definition | | --- | --- | | Radial | Always the bearing FROM the beacon | | To | Magnetic bearing TO the beacon | | From | Magnetic bearing FROM the beacon | The HSI (Horizontal Situation Indicator) is the primary navigation instrument. Elements: - Compass rose oriented to the current heading. - Blue heading bug: the Autopilot FCU bugged heading. - Single blue pointer: BRG (bearing) 1. When tuned to a source (ILS, VOR or NDB) it points to the navaid. - Double blue pointer: BRG 2, same function. - Course Deviation Indicator (CDI): Course Pointer and Lateral Deviation Bar. Magenta for GPS; light green for NAV 1 and NAV 2. HSI setup: 1. Tune the VOR: tap it on the Map or Mini Map, select it from the list, tap "Set NAV 1 (or 2)". 2. Display it: tap "NAV" on the Fly Screen to open the Avionics tab. Make sure BRG 1 (or 2) shows NAV 1 (or 2). 3. In the Avionics tab, set "SOURCE" to NAV 1 (or 2) and set the course (CRS 1 or 2) to the magnetic bearing you want to fly. Navigate with a VOR: 1. Plan the direction of travel and the navaids (such as VORs) you can use. 2. Before flight, tune and display the VOR(s), set the CRS to the bearing(s) to intercept, and set SOURCE to NAV 1 (or 2). The CDI shows only NAV 1 or NAV 2, but you can set up both NAV 1 and NAV 2 with the same or different VORs and courses to reduce workload. 3. Find your position relative to the VOR with the blue bearing pointer, Map and Mini Map. 4. Plan the intercept and the expected indications. Use a closing angle of no more than 45 degrees, less when close to the VOR, to avoid overshooting. 5. Near the intercept, the CDI Lateral Deviation Bar comes "alive". Use it to judge the turn. It can move quickly near the VOR; the blue bearing pointer always shows the current magnetic bearing to the beacon and gives early warning. Example: depart Athens (LGAV) runway 03R with a right downwind departure, to intercept the 090 radial of ATV VOR and fly 270 to the beacon. Before departure, tune and display ATV on NAV 1, set CRS 270, SOURCE NAV 1. Downwind heading 210 is a 60 degree intercept, so fly heading 240 for a shallower intercept (close to the VOR). As the bearing pointer moves toward 270, anticipate the turn. When the Lateral Deviation Bar comes alive, turn to 270. Then correct the heading for wind drift to track the 090 radial inbound. Use the dashed green line on the HSI to see the wind drift effect when you choose a heading. ### NDB (Non-Directional Beacon) Navigation URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/ndb-(non-directional-beacon)-navigation NDB navigation works much like VOR navigation. An NDB is a ground-based transmitter identified by its frequency and a code (normally two or three letters). Aircraft with an Automatic Direction Finder (ADF) use its signals. The HSI is as described in VOR Navigation. HSI setup: 1. Tune the NDB: tap it on the Map or Mini Map, select it, tap "Set ADF 1". 2. Display it: tap "NAV" on the Fly Screen (Avionics tab) and make sure BRG 1 (or 2) shows ADF. Navigate with an NDB: 1. Plan the direction of travel and the navaids (such as NDBs) you can use. 2. Tune and display the NDB. The CDI is available only for NAV 1 (or 2) and GPS, not for ADF. 3. Find your position relative to the NDB with the blue bearing pointer, Map and Mini Map. 4. Plan the intercept. Rule of thumb: find the difference between current and desired bearings to/from the beacon, and turn twice that difference. 5. Imagine the NDB at the head of the blue bearing pointer and the aircraft at the tail. - To the beacon: turn toward the tail ("pull" the tail). The head "falls" round to the desired bearing; when near it, turn back to that bearing. - From the beacon: turn away from the tail ("push" the head). The tail "pulls" round to the desired bearing; when near it, turn back. Example: south of PHNY, heading 360 toward Lanai (LLD) NDB, tuned to ADF 1 and shown on BRG 1. Planned: bearing 360 to the beacon (180 radial). Actual bearing is 350 (170 radial). Turning to 350 would only hold the 170 radial. The difference is 10 degrees, so turn 20 degrees: heading 340 (toward the tail). The pointer head falls away; as it nears 360 to the beacon, turn right back to 360. Then monitor the pointer and correct for wind to track the radial. Use the dashed green line on the HSI to see wind drift. ### Oceanic Flying URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/oceanic-flying Oceanic flying crosses large stretches of ocean between continents, often for long periods with limited radar coverage and limited diversion options. An Organized Track System (OTS) is a set of predetermined routes, updated regularly, to optimize traffic flow and meet separation requirements. This guide covers only the North Atlantic Tracks (NAT-OTS); other OTSs work the same way. NAT Tracks span multiple Control Areas (CTAs) from northeast North America to western Europe, and vertically FL285 to FL420. FL290 and FL410 are the last usable flight levels that can be assigned in this band. How they work: horizontal separation is large and the height band is limited, so the airspace can be congested. The OTS has two alternating flows: westbound departing Europe in the morning, and eastbound departing North America in the evening. Tracks are aligned to minimize headwinds and maximize tailwinds (jet streams), which reduces fuel burn and flight time. They are updated twice daily for shifting winds and the main traffic flow. Labels: in the westbound daytime system, the most northerly track at its origin is Track A (Alpha), the next is B (Bravo), and so on southward. In the eastbound nighttime system, the most southerly track at its origin is Track Z (Zulu), the next Y (Yankee), and so on. Fly a NAT Track: 1. Before departure, choose the best track for your destination, aircraft weight (which sets your initial cruising altitude) and prevailing winds (online tools can help). 2. Load your departure and add waypoints that take you close to the start of the track. 3. On the map, tap the track and select the + icon to insert it in the flight plan. Like an instrument procedure, a whole track shows a green bracket. 4. Once airborne (and with permission to change frequency), Check In with Departure or Center (if ATC is active). Continue your flight plan; they vector you only if required. You do not need to stay with your device for the whole flight, but stay at least until you reach initial cruise altitude. ATC can then de-conflict you, and you avoid system violations, for example from the autopilot disconnecting when flying above your optimum altitude while too heavy. ### Visual Flight Rules (VFR) En-Route Navigation URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/visual-flight-rules-(vfr)-en-route-navigation VFR and VMC definitions are as in VFR Departure Navigation (VMC = visibility 3 statute miles / about 5000 meters or more; minimum 500ft vertical separation from other aircraft). The airspace table and map colors are as in IFR En-Route Navigation (colors for information only). Right of way: all aircraft, especially VFR, use "see and avoid". The aircraft without right of way must take corrective action, usually a right turn. If you have right of way, keep altitude, heading and speed (unless collision avoidance is required). | Situation | Rule | | --- | --- | | Converging | At about the same altitude, the aircraft on the other's right has right of way. | | Head on | Neither has right of way; both turn right. | | Overtaking | The aircraft being overtaken has right of way; overtake on the right. | | Landing | Aircraft landing or on final have right of way over all others (1). When two or more approach an airport, the lower aircraft has right of way (2). | 1. Do not use this rule to force an aircraft that has already landed off the runway. 2. Do not use this rule to cut in front of landing traffic. With active ATC, their sequencing supersedes this rule. Remember: if the aircraft is on your right, it has right of way. En-route procedure: 1. A flight plan is not required but helps navigation. ForeFlight is a useful planning tool. 2. Use visual markers such as terrain, coastlines and islands. 3. Set a cruising altitude for terrain clearance and the VFR semi-circular rules. 4. When approaching controlled airspace, tune in and listen for traffic. 5. Radar Controller: Check In, or request VFR Flight Following (recommended for VFR; with a flight plan, a Check In can look like an IFR request). Tower Controller: request a transition. In uncontrolled airspace, tune to the nearest Unicom; you can send or request traffic advisories. ### Step Climbs and Cruising Altitudes URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/step-climbs-and-cruising-altitudes Aircraft are generally more fuel efficient higher up. When heavy, you may not reach that altitude at once, so fly as close as possible to the "Optimum Altitude" (the most efficient altitude, considering environmental factors, weight and aircraft design). This increases range. Step climbing: as fuel burns and weight drops, "step" up to the next altitude. Long flights can have several steps. Technique 1: 1. Hold the initial cruise altitude. Optimum altitude rises as you get lighter. Wait until the difference is about 2000ft. 2. Climb to the same difference above the optimum altitude (here, 2000ft above). 3. Hold until you are again below optimum by that value, then repeat. Technique 2: 1. Hold the initial cruise altitude until optimum is about 2000ft higher. 2. Climb to the optimum altitude. 3. Hold until you are again below optimum by that value, then repeat. Near aircraft limits (environment, weight, design), Technique 1 may not be possible because some aircraft struggle above optimum altitude; use Technique 2. Planning (Infinite Flight currently cannot show optimum altitude): - At or near Maximum Take-Off Weight (MTOW), do not climb to the final cruise altitude at once. Use flight planning tools to plan step altitudes. - Use the semi-circular rules below for altitude by direction. - If the aircraft stalls, has an unusual pitch attitude, or cannot hold altitude, it is too heavy. Descend, burn fuel, and climb later. - Load only the fuel required. 100% fuel when not needed limits how high you can cruise. - If problems continue or engine power is higher than normal, descend 2000ft to the next available altitude for your direction. Example (EGLL to CYYZ, westbound, even levels): initial cruise FL340. Oceanic traffic prevents a climb straight to FL360, so an intermediate climb to FL350. Later FL360, then a final climb to FL380 for the last leg before descent into Toronto. Cruising altitude is the en-route phase where aircraft spend most of the flight. It depends on direction of flight (heading), length of flight (short flights cruise lower), airspace or airway restrictions, traffic, and technical defects. Semi-circular rules: | Heading | IFR (in RVSM airspace) | VFR (extra 500ft added) | | --- | --- | --- | | 360 - 179 degrees | ODD (FL330, FL350, FL370) | ODD + 500 (1500, 3500, 5500) | | 180 - 359 degrees | EVEN (FL320, FL340, FL360) | EVEN + 500 (2500, 4500, 6500) | ### AutoPilot+ URL: https://infiniteflight.com/guide/flying-guide/take-off-to-cruise/autopilot-plus AutoPilot+ lets your flight continue cruising in the background. It helps with long-haul flights and interruptions. How to use: 1. Start a new flight in Free Flight mode (Single or Multiplayer). 2. File a flight plan. 3. Climb to cruise. 4. In the Pause Menu, check that AutoPilot+ shows as active. It turns on automatically when all these are true: - Altitude above 7000ft (prop) or 28000ft (jet) - Level flight - LNAV on - More than 30 minutes from destination - On the flight plan path - All engines running - No active warnings (for example Stall) The Pause Menu shows AutoPilot+ status (ON/OFF); tap it to see the save conditions, when the flight was last saved, and whether all conditions are met. 5. Exit to the main menu. A toggle (on by default if the flight can be saved) lets you choose not to save. The flight continues in the background along the flight plan. If you do not return before it is about 30 minutes from the destination, the flight pauses. If you resume before the 30 minute ETE (estimated time en route), it resumes at the correct place on the route. Resume: on the main menu, in the AutoPilot+ area of mode selection, select Continue Flight, then tap continue. The card shows current speed and altitude above a progress bar; route, aircraft and time to destination; time until the flight expires; a delete button; and a continue button. You cannot resume after 48 hours from the last save, or if the aircraft has run out of fuel. To gain time, load the flight to trigger a new save (you may need to extend the flight plan to increase the ETA). Other facts: - Only one saved flight at a time. You can start another flight while one runs in the background, but you cannot save the new one. - On multiplayer servers, the background flight is visible to others until 30 minutes ETE to destination. It reappears when you resume. - Flights save every 5 minutes while actively flying if all conditions are met. A change (for example altitude) triggers a new save. ## Descent to Landing ### Descent Planning URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/descent-planning Tools for a well planned descent: your own calculations (Rate of Descent, Top of Descent, track miles needed), the Altitude Arc ("banana"), and VNAV. Rate of Descent (ROD) for a 3 degree path: ROD = Groundspeed x 5. Example: 500kts GS x 5 = 2500fpm. Use it in the initial descent (no need to dive while far away) and recalculate as groundspeed changes. Top of Descent (TOD) distance: Distance = Altitude / 1000 x 3. Example: FL380: 38000 / 1000 x 3 = 114nm. Altitude Arc ("banana"): a blue curved line on the map/mini map that shows where you will reach the altitude bugged on the Autopilot FCU. It uses current groundspeed, vertical speed and altitude, so it moves a lot. It works only with the autopilot engaged and an altitude selected. It is always directly ahead of the aircraft nose (12 o'clock), even with a turn in the flight plan. With a low vertical speed it can be very far away. Adjust ROD so the arc is before the point where you want to be at that altitude. Descent management without VNAV: 1. Calculate the platform altitude for your approach (for a 3 degree ILS with the Final Approach Point at 9 miles: about 3000ft AAL). 2. Subtract it from current altitude (FL380: 38000 - 3000 = 35000). 3. Divide by 1000, multiply by 3 (35000 / 1000 x 3 = 105). 4. So you need 105nm to descend to 3000ft for the approach. 5. Estimate the track miles to the Final Approach Point (use the map/mini map and the paths of other aircraft; it does not need to be accurate). 6. If less than 105nm, you are high: increase ROD. If more, keep or reduce ROD. If high on profile: - Method 1 (best at high to intermediate altitudes): thrust to idle; pitch for a high speed (for example 300kts IAS); extend speedbrakes. - Method 2 (best at lower altitudes, near terrain or in heavy traffic): thrust to idle; shallow the descent and let the aircraft slow; extend speedbrakes; select an intermediate flap stage (for example Flap 2 for Airbus); then adjust pitch to hold speed. - Always follow ATC speed control if issued. If still high, you can also use the gear. Monitoring: keep comparing track miles "needed" with track miles "available". If the difference decreases, you are regaining the profile. If it increases, you are getting more high/low; change ROD. Check at points that make the math easy (platform 3000ft: check at FL330, FL230 and FL130). ### Vertical Navigation (VNAV) URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/vertical-navigation-(vnav) VNAV is an autopilot feature that adjusts vertical speed to reach a set altitude at a set waypoint. SIDs, STARs and approaches have altitude restrictions; VNAV (currently for descent only) helps meet them. With at least one waypoint with an altitude restriction in the flight plan, VNAV calculates a rate of climb/descent from groundspeed, distance to the next waypoint, and the altitude difference between initial and target altitude, and adjusts it as conditions change. Top of Descent (TOD): the point where you start descent from cruise for the arrival. TOD shows as time and distance in the VNAV button on the Autopilot FCU, and on the Status Bar if that option is selected. You can also calculate it manually (see Descent Planning). How to use VNAV: 1. Check that the flight plan has the altitude restrictions for the procedure; VNAV needs them. 2. Approaching TOD with active ATC, request an altitude change (the page links to the descent communication summary). 3. When cleared and clear of traffic, tap VNAV on the Autopilot FCU to arm it. Altitude and VS turn magenta. Check surroundings (Cameras, Mini Map) before altitude changes. 4. No altitude or VS input is needed. VNAV sets vertical speed to meet the flight plan restrictions. VNAV targets a 2 degree Flight Path Angle (FPA); if you descend late it can increase this. VNAV cannot exceed 3000fpm, so manual intervention may be needed. The TOD readout goes negative when you passed TOD before descending. 5. During descent, the Altitude Arc shows where the aircraft will level at the altitude in the FCU ALT button. If it is not where you want, VNAV may not be working correctly; intervene manually. When level, VNAV either levels off and shows the distance to the next TOD (if more restrictions exist), or continues descending if it calculates you will be at or above the 2 degree FPA when you reach that altitude. When vectored (Radar Controllers prefer you fly the procedure, but vectors are almost certain on the approach): 1. Acknowledge the instruction with the Communication button. 2. Tap VNAV on the Autopilot FCU to disarm it. 3. Set heading, altitude and/or speed as ATC requires. 4. Tune navaids for the expected approach. Keep checking surroundings with the Cameras and Mini Map. ### Standard Terminal Arrival Route (STAR) Navigation URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/standard-terminal-arrival-route-(star)-navigation A STAR is a published procedure that IFR aircraft follow from an intermediate altitude. It gives a pre-defined arrival route (sometimes with altitude/speed restrictions) clear of adjacent airspace, terrain and departing traffic. A transition is a branch of the procedure toward your destination (see SID Navigation). Put a STAR in your flight plan: 1. En-route, check the ATIS/D-ATIS for runways and ATC preferred STARs in use. Pick an ATC preferred STAR and a transition that starts roughly in the direction you approach from. Vectors and/or altitude assignments are common on approach; ATC instructions supersede your flight plan. 2. Load the STAR (https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/navigation#selecting-departure%2C-arrival-and-approach-procedures). 3. You may get a different runway and need a different STAR. Have options ready. Separation: IFR minimum 3nm laterally or 1000ft vertically at all times. Fly a STAR: 1. Use GPS Navigation. 2. Study the flight plan and/or charts; optionally tune navaids. Obey all altitude/speed restrictions. 3. Approaching TOD with active ATC, request descent. ATC approves descent via the STAR, or tells you to expect vectors. Follow ATC until told "Continue as Filed". 4. Keep the magenta Radial Deviation Bar in line with the magenta Course Select Pointer on the HSI. Check surroundings before turns. 5. Near each waypoint, the flight plan cycles to the next and the HSI resets. 6. To reduce workload, use the Autopilot and LNAV. With the autopilot engaged, arming LNAV makes the aircraft follow the plan immediately; make sure it is clear. ### Holding URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/holding The reciprocal of a heading is the opposite heading (reciprocal of 270 is 090). Holds give separation and flow control during arrival, near the destination. They are usually built around a navaid (VOR or NDB). Procedures use magnetic tracks (not headings). Each leg takes 1 minute in still air (1:30 above 14,000ft/FL140) unless the chart says otherwise. A hold has four legs: inbound, outbound, and the turns at each end. Timing of the outbound leg starts at the abeam point (wings level or not). For a VOR/NDB hold, abeam is when the Bearing Pointer shows 90 degrees to the hold axis. Hold entries: Direct (fly direct to the hold origin, then fly the standard pattern), Parallel, and Teardrop (the page shows the paths in a diagram). The HSI is as described in VOR Navigation. HSI setup: 1. Tune the navaid: tap it on the Map or Mini Map, select the VOR/NDB, tap "Set NAV 1 (or 2)". 2. Display it: tap "NAV" on the Fly Screen (Avionics tab); make sure BRG 1 (or 2) shows NAV 1 (or 2) or ADF. 3. For a VOR, you can use the CDI: set SOURCE to NAV 1 (or 2) and the course (CRS 1 or 2) to the bearing to fly. Setting the Inbound Hold Axis is recommended. Set up for the hold: 1. From the chart, find the navaid, the Inbound Hold Axis and the leg time (if not shown: 1 minute in still air below 14,000ft/FL140). 2. Set up the HSI. 3. Find your entry direction and the entry type (Direct, Parallel or Teardrop). If ATC assigns a hold that is not on your chart, follow the magenta line on the map or mini map. Entering the hold. Near the navaid the sensitivity increases; when very close, do not chase the Bearing Pointer. Parallel entry: 1. Crossing the holding fix, turn slightly to fly parallel to the hold axis on the non-holding side for 1 minute (still air). Right-hand hold: turn left to fly parallel. Left-hand hold: turn right. 2. Turn in toward the hold (same direction as the previous turn) until the Bearing Pointer has passed the nose by about 15 degrees. 3. Approaching the Inbound Hold Axis, the pointer "falls away" from the nose, giving a steep intercept. Turn a few degrees toward the pointer for an intercept of about 20 degrees. 4. Repeat until the pointer is within 10 degrees of the Inbound Hold Axis, then intercept the axis. 5. Overhead the holding fix, turn left/right and fly the normal pattern. Teardrop entry: 1. At the holding fix, turn to intercept a radial 30 degrees offset from the reciprocal of the Inbound Hold Axis. Example: axis 270, reciprocal 090; offset 060 for a right-hand hold, 120 for a left-hand hold. 2. Fly this radial for 1 minute (still air), then turn in toward the hold (right turn for right-hand hold, left for left-hand). 3. Continue the turn until heading is within 30 degrees of the Inbound Hold Axis. 4. As the pointer falls away, turn a few degrees toward it for an intercept of about 20 degrees. 5. When the pointer is within 10 degrees of the axis, intercept it. 6. Overhead the fix, turn and fly the normal pattern. Direct entry: the easiest. Fly the normal pattern as soon as you overfly the holding fix. If you approach the fix at a steep angle (more than 30 degrees either side of the Inbound Holding Axis), adjust the first turn outbound. Examples for aircraft positions 1 to 6 in the page diagram: | Aircraft | Action | | --- | --- | | 1 | Cross the fix, turn into the hold; at 90 degrees to the axis, roll out for 15 seconds, then continue the turn. | | 2 | Cross the fix, turn into the hold; at 90 degrees to the axis, roll out for 5 seconds, then continue the turn. | | 3 | Cross the fix and turn into the hold. | | 4 | Cross the fix, wait 5 seconds, then turn into the hold. | | 5 | Cross the fix, wait 10 seconds, then turn into the hold. | | 6 | Cross the fix, wait 15 seconds, then turn into the hold. | Recommended maximum holding speeds: | Altitude (MSL) | Airspeed (KIAS) | | --- | --- | | Minimum Holding Altitude (MHA) to 6000ft | 200 | | 6001ft to 14000ft | 230 | | 14,001ft and above | 265 | ### Diversion URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/diversion A diversion is when the aircraft cannot continue to the original destination and goes to a new airport. Common reasons in Infinite Flight: the destination is full and no longer accepts inbound aircraft, or long delays leave too little fuel to wait for an approach. | Factor | Consideration | | --- | --- | | Fuel | Enough fuel to get there? | | Weather | Suitable for approach and landing? Which approach types are available? | | Route | Terrain or airspace en-route? | | Airport facility | Taxiways, aprons and parking suitable for your aircraft size? | | Landing performance | Runway long enough to land safely? | Preparation: 1. Before departure, check alternates near the destination against the factors above. 2. Select at least one alternate and load the fuel for it. 3. If you expect the destination to be busy, load more fuel. Initiate a diversion: 1. Confirm the alternate meets the factors above. 2. Tell ATC by selecting a new service, such as an approach request for the new airport (or follow ATC if they instructed the diversion). Be ready before you call; to get more time, slow down or hold. 3. Follow ATC vectors and altitudes if given. Otherwise fly a heading toward the airport and monitor traffic for separation. 4. Check terrain en-route and choose a safe altitude (if ATC did not assign one). 5. Monitor the airspace in case you must change to another active frequency. 6. Once en-route, set up for the approach. ### DME Arc URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/dme-arc DME (Distance Measuring Equipment) is usually paired with a navaid such as a VOR to give distance to/from the beacon. A DME Arc is a curved route at a constant distance (radius) from the navaid. Arcs are usually on the initial approach segment, from the Initial Approach Fix (IAF) to the Final Approach Course. Published radials around the arc mark the start of the arc, where further descent is allowed, and where to turn to intercept the Final Approach Course. The page example is the arc via the ALANA IAF to the RWY04R Final Approach Course at Honolulu (PHNL). The HSI is as described in VOR Navigation. Technique: - You usually approach the arc on a radial, at 90 degrees to it. Lead the 90 degree turn by 1% of groundspeed (unless the chart gives a distance): at 180kts, start the turn at 1.8 miles. - On the arc in nil wind the heading would always be 90 degrees to the beacon, but holding the exact radius needs continuously varying bank because wind changes groundspeed. Instead, fly a series of heading changes that cut slightly across the arc. - Example with 10 degree changes (you can use more): when established (published DME distance, relative bearing 90 degrees), turn 10 degrees. The bearing pointer reads 5 degrees above the 90 degree line (relative bearing 85). As you approach the arc again, the pointer moves to 5 degrees below the line (relative bearing 95). Turn another 10 degrees and repeat until the arc ends. - On each cut-across, DME starts at the published distance, decreases slightly as you cut the corner, then returns toward the published distance before the next turn. Correction when approaching the 90 degree relative bearing line: | DME distance | Corrective action | | --- | --- | | Lower than published | Hold the heading longer until the distance resets, then make the next cut-across turn. | | Higher than published | Make a larger cut-across turn to re-establish on the arc. | HSI setup: tune the navaid (tap it on the Map or Mini Map, select the VOR/NDB, tap "Set NAV 1 (or 2)"), then display it (tap "NAV" on the Fly Screen; BRG 1 (or 2) shows NAV 1 (or 2) or ADF). Fly a DME Arc: 1. From the approach chart, find the navaid, where the arc starts and ends, and the arc distance. 2. Set up the HSI. If you intercept the Final Approach Course of a precision/non-precision approach at the end of the arc, tune it too if you can. Adding waypoints or the approach to the flight plan helps position awareness (optional). 3. Plan the speed. Inbound to the arc entry, start the first turn at 1% of groundspeed (180kts GS: 1.8nm). Fly no faster than 180kts IAS on the arc to reduce workload (aircraft type may need a different speed). Obey all altitude/speed restrictions. 4. The initial heading on the arc puts the aircraft 90 degrees to the beacon (use the Bearing Pointer). 5. Turn 10 degrees to cut across; the Bearing Pointer shows a relative bearing of 85 degrees. 6. As it approaches 95 degrees relative, turn another 10 degrees. 7. Continuously check the DME is about the published distance; correct as in the table above if not. 8. Passing the final radial on the chart, continue the turn to intercept the Final Approach Course. ### Instrument Landing System (ILS) Approach URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/instrument-landing-system-(ils)-approach The ILS has two beams: the Localizer (LOC) for lateral guidance and the Glideslope (G/S) for vertical guidance. The cone at the runway end is only a VISUAL AID for pilots and Controllers. The LOC and G/S are independent radio signals that extend beyond the cone, and aircraft can intercept them inside or outside it. LOC intercept: Controllers give an intercept heading as close as possible to 30 degrees offset from the runway heading. Aircraft on a suitable STAR and/or instrument approach can be cleared for the ILS at a suitable position without an assigned heading or the standard 30 degree intercept. G/S intercept: Controllers give an altitude below the G/S path. The typical G/S is a 3 degree path to the threshold: 300ft AAL at 1nm, 600ft AAL at 2nm, and so on. Fly an ILS: 1. En-route, check the ATIS/D-ATIS for runways in use. Expect vectors and/or altitude assignments; ATC instructions supersede your flight plan. 2. Tune the ILS (https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/navigation#tuning-to-an-ils). 3. When you no longer follow the flight plan or need GPS Navigation, display the ILS (https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/navigation#displaying-an-ils-in-your-aircraft). 4. With active ATC you need a clearance to join the ILS, either from your STAR/instrument approach or with an intercept heading. To reduce workload, use the Autopilot and APPR mode: the aircraft holds the assigned heading, then intercepts the LOC and G/S automatically. Arm APPR only after you are cleared for the approach. 5. LOC: keep the green Localizer Deviation Bar in line with the green Course Select Pointer on the HSI. Within 1 dot of lateral deviation you are established. When there is no conflict, Radar hands you to Tower (if ATC is active). Do not change frequency without permission. 6. G/S: keep the green Glideslope Deviation Dot in line with the central marker next to the altitude on the HUD. Do not descend on the G/S until established on the LOC. 7. Keep both deviations centered. At the right point (ATC speed control and your aircraft's recommended profile), configure to meet the Stability Approach Criteria. #### Stability Approach Criteria (SAC) The SAC decide whether the approach is stable and whether to land or go around. All approaches must meet the SAC by 1000ft AGL: - In the planned landing configuration - Stabilized on the correct vertical profile - Stabilized at the target approach speed If any SAC is not met, you must go around. After final configuration and deceleration to target approach speed, stay within: | Parameter | Tolerance | | --- | --- | | Speed | Target approach speed -5/+10 kts | | Vertical speed | No more than 1000ft/min (a tailwind or a steeper than usual path can require more) | | Pitch | No more than -2.5 degrees nose down or +10 degrees nose up | | Bank | Not more than 7 degrees | | Localizer/Glideslope (ILS) | No more than 1 dot lateral/vertical deviation | | Lateral navigation (GPS, VOR, NDB) | No more than 1 dot lateral deviation | The same SAC apply to the GPS, VOR, NDB and Visual approach pages below (the Visual approach has no deviation row; see that page). ### Global Positioning System (GPS) Approach URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/global-positioning-system-(gps)-approach A GPS approach is a series of waypoints and altitude restrictions to the threshold, without conventional guidance such as a localizer/glideslope. In Infinite Flight it is a non-precision approach and is not commonly used, because functionality is currently limited. Available GPS approach types: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/flight-planning#selecting-departure%2C-arrival-and-approach-procedures 1. En-route, check the ATIS/D-ATIS for runways in use. Follow ATC vectors and altitudes; they supersede the flight plan. 2. Make sure a GPS approach is selected in the flight plan. 3. If you were vectored off the flight plan, Radar tells you "Continue as Filed" before clearing you for the approach. Use GPS Navigation to follow the plan and approach. To reduce workload, use the Autopilot with LNAV and VNAV; the aircraft follows the approach automatically. 4. To fly it manually, keep the magenta Lateral Deviation Bar in line with the magenta Course Select Pointer on the HSI. Within 1 dot you are established; Radar then hands you to Tower when there is no conflict (if ATC is active). Do not change frequency without permission. VNAV works only to the last altitude restriction in the flight plan; after that, fly manually. 5. Keep lateral and vertical deviation centered, and configure to meet the SAC (see ILS Approach). ### VOR (VHF Omni-Directional Range) Approach URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/vor-(vhf-omni-directional-range)-approach A VOR approach is a non-precision approach with lateral guidance only. The Final Approach Course on the chart uses a radial from the VOR. You can fly VOR approaches in Infinite Flight, but ATC currently cannot support these requests; practice at an uncontrolled airport or a quiet area. Learn VOR Navigation first. 1. En-route, check the weather to find the best runway. Check the approach chart for that runway; if it has a VOR approach, set up for it. 2. Tune the required VOR(s) and set the CRS(s) to the bearings to intercept. 3. When you no longer follow the flight plan or need GPS Navigation, display the VOR(s) by setting "SOURCE" to NAV 1 (or 2). 4. Intercept the bearing(s) at the distance/altitude on the chart. Always think of the "next event". To reduce workload, use the Autopilot with Heading (or LNAV) and V/S. 5. Keep lateral and vertical deviation centered and configure to meet the SAC (see ILS Approach). ### NDB (Non-Directional Beacon) Approach URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/ndb-(non-directional-beacon)-approach An NDB approach is a non-precision approach with lateral guidance only. The Final Approach Course on the chart uses a radial from the NDB. ATC currently cannot support these requests; practice at an uncontrolled airport or a quiet area. Learn NDB Navigation first. 1. En-route, check the weather to find the best runway. If its approach chart has an NDB approach, set up for it. 2. Tune the NDB and display it by setting "BRG 1 (or 2)" to ADF. 3. Intercept the radials at the distance/altitude on the chart. Think of the "next event". To reduce workload, use the Autopilot with Heading and V/S. 4. Keep lateral and vertical deviation centered and configure to meet the SAC (see ILS Approach). ### Visual Approach URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/visual-approach A visual approach is flown under IFR, but the pilot proceeds by visual reference when cleared. The pilot must be visual before the Controller can clear the visual approach. Usually (terrain permitting) Radar positions you somewhere recognizable (downwind, base or straight in) and asks you to "report the airfield in sight". When you confirm, you are cleared and handed to Tower/Unicom as appropriate. For realism, find and fly the real approach plate. 1. En-route, check the ATIS/D-ATIS for runways in use. Follow ATC vectors and altitudes. 2. When you contact Radar, request the Visual approach for the runway in use. It is granted traffic permitting; be ready for a different approach. 3. Radar gives vectors and/or altitudes to position you, then asks you to report the airport in sight. Use the Cameras and Mini Map to find it. The Autopilot can reduce workload. 4. When visual, tell Radar; they clear you for the approach. Fly visually to the threshold. You are handed to Tower/Unicom when appropriate. 5. Monitor the lateral and vertical profile and configure to meet the SAC. The Visual approach SAC tolerances are speed -5/+10 kts, vertical speed no more than 1000ft/min, pitch -2.5 to +10 degrees, and bank not more than 7 degrees once aligned with the extended centerline (some airports need low-level turns to align). There is no deviation row. ### Pattern Entries URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/pattern-entries ATC pattern entry instructions (if present) always supersede these methods. - On the pattern side: the most common entry is at 45 degrees to the downwind leg, toward a point abeam the runway midpoint. - On the opposite side, either: cross midfield at least 500ft above pattern altitude (1500ft or 2000ft AAL, depending on the aircraft types in the pattern); when clear of the pattern, scan for traffic, descend to pattern altitude, then turn right to enter at 45 degrees to downwind at midfield. Or: enter on a midfield crosswind at pattern altitude, scan for traffic, then turn downwind (not recommended when the pattern is busy). Enter the pattern: 1. En-route, check the ATIS/D-ATIS for runways in use and whether pattern work is accepted. If not, you can still join for a landing or touch & go, but no further patterns. 2. With ATC, call inbound and state your intentions; Tower gives a pattern entry. On Unicom, you can request traffic advisories. With no ATC, you must determine the runway(s) in use and pattern direction, and be courteous to traffic already in the pattern. Check surroundings with the Cameras and Mini Map. 3. Normally enter at 45 degrees to downwind toward a point abeam the runway midpoint. ATC may tell you to enter base or straight in. 4. Enter at the correct altitude: 1000ft AAL for props, 1500ft AAL for jets. Give way to aircraft already in the pattern (or follow ATC sequencing). Announce intentions, monitor traffic, adjust speed to fit in. Departing the pattern: continue past the departure end, climbing to pattern altitude (or higher), then continue straight out, exit with a 45 degree turn (left in a left-hand pattern, right in a right-hand pattern), or follow your flight plan. Always tell ATC (if present). If told to climb straight ahead to an altitude, be at or above it and clear of traffic before you turn. ### Landing URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/landing Safe landing criteria (all must be met): | Criterion | Why | | --- | --- | | Landing performance | Landing Distance Available (LDA) suits the aircraft type | | Stable approach | The SAC are met | | Safe touchdown | Normal runway contact within aircraft limits, the touchdown zone and runway edges | | Safe rollout | Deceleration assures a safe stop before the runway end | Flare height varies. Consider aircraft type, aircraft weight, airport elevation, a steeper approach slope (than the nominal 3 degrees), tailwind and runway slope. | Landing type | Definition | | --- | --- | | Full Stop | Normal landing ending with the aircraft exiting the runway | | Touch & Go | Normal landing followed by take-off without a full stop | | Stop & Go | Normal landing to a full stop, then take-off from that position | | Low Approach | A go-around maneuver after an approach | Landing technique (with clearance, if applicable, and the runway completely clear): 1. Before the flare, do not destabilize the approach. Look at the end of the runway to judge flare height. 2. At the correct height for the aircraft and conditions, flare and reduce power to idle. 3. Hold the landing attitude until touchdown. Do not keep pulling back to extend the flare for a smooth touchdown; this risks missing the safe touchdown criteria and makes a tail strike more likely. 4. If a safe landing is not assured at any time, go around or do a baulked landing. Rollout and exit (full stop): 1. On touchdown, select reverse (if fitted), check the spoilers deployed (if fitted), and monitor deceleration. 2. Use the rudder to hold the centerline. The rudder is less effective at lower speed; more input is needed. 3. Modulate braking and reverse to exit quickly but under control. Plan the exit in advance but be flexible. Rapid Exit Taxiways (RETs) have high design speeds, but because of the Ground Overspeed Level 1 violation, do not exceed 35kts while exiting. For 90 degree exits, stay under 10kts. 4. Some airports need a back-taxi to exit (see Back-Taxi). 5. Keep moving until completely past the hold short line, so the runway is clear. Avoid stopping; communicate with ATC (if present) while moving. Touch & Go (with clearance, if applicable, and runway clear): 1. On touchdown, check the spoilers deployed (if fitted) and monitor deceleration. Do not select reverse. 2. Use the rudder to hold the centerline (more input at lower speed). 3. Retract flaps to a take-off setting and set spoilers OFF. 4. Increase thrust to take-off power and do a normal take-off. For a Stop & Go, do the same but come to a complete stop before the take-off roll. Low Approach: use the Go-Around procedure. ### Crosswind/Tailwind Landing URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/crosswind-tailwind-landing Two crosswind techniques: "Crab" (usually preferred by airliners) and "Wing Low" (usually preferred for light GA aircraft). For independent aileron and rudder control, set auto-coordination OFF in Settings. Crab technique: 1. Use the ATIS and other weather data to find wind direction and crosswind component before the approach. 2. Point the nose into wind so the aircraft tracks the centerline (wind from the right: nose right of the runway). Use the Flight Path Vector ("The Bird", the green circle on the HUD when airborne): on the centerline, you track the centerline. 3. After the flare, just before touchdown, gently use rudder to align the nose with the centerline. 4. In strong crosswinds, also lower the into-wind wing to hold the centerline until touchdown (wind from the right: tilt the device right, right aileron up, left aileron down). 5. Use rudder to hold the centerline; more input at lower speed. Wing Low technique: 1. Find wind direction and crosswind component before the approach. 2. Lower the into-wind wing (wind from the right: tilt the device right) and at the same time use rudder to keep the nose aligned with the centerline. 3. In the flare, speed and control effectiveness decrease; more rudder and aileron are needed. 4. At touchdown, just before the nose gear comes down, you may need to relax the rudder so the aircraft does not veer toward the rudder deflection used in the flare. 5. Use rudder and into-wind aileron to hold the centerline; more input at lower speed. Tailwind landing: always try to land into wind (best headwind component). Busy airports or weather can make a tailwind landing necessary. Fly it like a normal or crosswind landing, plus: - The flare height may need to be slightly higher because of the higher groundspeed. - Do not land if the tailwind component exceeds 10kts. - Be careful in the flare and do not float; a tail strike is more likely. ### Go-Around/Baulked Landing URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/go-around-baulked-landing A Go-Around (G/A) is an aborted landing on final approach, started by the pilot or ATC. Reasons include an unstable approach (pilot induced or environmental), the landing/intersecting runway blocked by another aircraft, or loss of separation with the aircraft ahead. With ATC present, the pilot and controller share equal responsibility. If you are not happy with the approach, the conditions or separation, anticipate a go-around and start it promptly if required. Procedure (steps 1 to 3 are normally done at the same time): 1. Set Take-Off/Go-Around (TOGA) thrust. It varies with weight, altitude and temperature: light at sea level may need no more than 90% N1; heavy at 5000ft elevation may need full power. 2. Retract flaps to a take-off setting. 3. Pitch 15 degrees nose up. When the climb is stable, adjust pitch to hold the higher of VAPP (Final Approach Speed) or the speed at which you started the go-around. 4. Positive climb: gear up. 5. Hold runway heading unless instructed otherwise. Fly to the end of the runway before turning unless ATC gives a heading. You may need to offset to one side of the runway if another aircraft is on its take-off roll. 6. Tell ATC you are going around, or acknowledge their go-around instruction. Always AVIATE - NAVIGATE - COMMUNICATE, in that order; ATC knows you will not reply at once. Go-around vs baulked landing: until you select reverse thrust, it is never too late to go around, even after touchdown. It is called a Baulked Landing when you are very close to the ground and touchdown is likely during the go-around. Fly it like a go-around, except delay take-off flaps until you are climbing away from the runway. ### Taxi to Parking and Shutdown URL: https://infiniteflight.com/guide/flying-guide/descent-to-landing/taxi-to-parking-and-shutdown Taxi to parking: 1. After exiting the runway: Systems menu: Lights: Strobes OFF, Land OFF. 2. If cleared, switch to Ground and request taxi to parking. With no ATC, announce taxi on Unicom and listen for traffic. Do not stop after exiting unless it would cause a collision; you have right of way, and stopping can conflict with traffic landing or taking off behind you. 3. Retract flaps and set spoilers OFF. Systems menu: Electrical: APU START (if fitted). 4. Keep checking surroundings (Cameras and Mini Map). Do not exceed 40% N1 while taxiing; once moving, idle power is usually enough. 5. Use the Rudder for the centerline and the Rud Brakes or Park Brake for speed. Do not exceed 35kts groundspeed (in-game violations). Recommended: below 25kts straight and 10kts or less in 90 degree turns. 6. To cross a runway, request crossing from ATC (or announce on Unicom) and check it is clear. Systems menu: Strobes ON, Land ON; set them OFF when clear of the runway. Shutdown: 1. Make sure the stand or parking spot is big enough for your aircraft (online tools can help in advance). Stand guidance (if present) tells you if the aircraft is too small/large. 2. Use the Rudder for the centerline and Rud Brakes or Park Brake for speed. 3. Slow to under 10kts. In a large aircraft, use the oversteer technique to align with the centerline as you turn onto the stand. If the gate has stand guidance, follow it. 4. At the parking position, set the Park Brake. Systems menu: Engines: Eng 'X' 'X'% N1 - TAP (shut down); Lights: Beacon OFF; Passengers: Seat Belts OFF. 5. Ground Services menu: PAX, CATERING, CARGO, GND POWER - TAP. Ground services need a stand large enough for the type, the parking brake set, and engines and beacon off. --- # Infinite Flight: ATC Guide > How to control traffic with the Infinite Flight ATC interface: ground (pushback, taxi) and tower (separation, departures, inbounds, pattern work, runway exits, go-arounds). For new and experienced Infinite Flight controllers. It covers controlling techniques; the rules are in the ATC Manual. Source: https://infiniteflight.com/guide/atc-guide (infiniteflight-docs 6b73625). Generated by a model on 2026-10-20. If this file and the website disagree, the website is correct. ## Introduction URL: https://infiniteflight.com/guide/atc-guide - Guide version: 26.1.0. - For controllers of all levels, from no aviation background to professional controllers. - The guide covers controlling techniques, not rules. The rules are in the ATC Manual: https://infiniteflight.com/guide/atc-manual. The scenarios are deliberately "gray" (not "black and white") so that controllers think outside the box. - New to Infinite Flight: see the Getting Started Guide: https://infiniteflight.com/guide/getting-started-guide Common interface actions used on all pages below: - Request alert: when an aircraft makes a request (pushback, taxi, ready for departure, inbound, transition, runway change), its symbol flashes amber on the map and its callsign flashes on the flight progress strip. - Open the communication menu: tap the aircraft on the map, then "Other Message", or tap its flight progress strip. - Reminder: tap the aircraft on the map, then "Set Reminder". When the timer ends, the aircraft and its flight progress strip flash green. - "Manual" rules below are quoted from the ATC Manual. "must" and "should" are the manual's own terms. ## Ground ### Pushback URL: https://infiniteflight.com/guide/atc-guide/ground/pushback A pushback moves an aircraft from its parked position onto a taxiway, ready to taxi. General Aviation (GA) and military aircraft cannot push back, except the C-130. Steps: 1. The aircraft requests pushback (request alert). 2. Open the communication menu. 3. If clear, tap "Pushback Approved > Send". In all other cases, tap "Hold Position". Tip: use "Set Reminder" for aircraft you hold. #### Flow Control Flow Control limits the number of aircraft inbound to one destination, usually by holding aircraft at the gate to stagger departures. 1. The aircraft requests pushback (request alert). 2. If Flow Control is in effect, tap the aircraft on the map, then "Show Information". 3. On the information tab, check the filed destination. 4. If many aircraft are inbound to that destination, hold aircraft at the gate to stagger departures. 5. Open the communication menu and tap "Hold Position". Tip: use "Set Reminder" to remember held aircraft. ### Taxi URL: https://infiniteflight.com/guide/atc-guide/ground/taxi Taxiing is ground movement under the aircraft's own power, usually gate to departure runway, or runway to gate after landing. 1. The aircraft requests taxi (request alert). 2. Open the communication menu. 3. Tap "Taxi to > [select RWY]". Tip: with traffic, you may need to follow a taxi command immediately with progressive taxi or give way instructions. #### Progressive Taxi and Give Way These help ground management, mainly with one-way systems, potential conflicts and intersection departures. Manual (2.2.2): "Taxi to RWYXX, contact tower when ready" and "Taxi to parking" are the default commands that must be used for departing and arriving aircraft. https://infiniteflight.com/guide/atc-manual/2.-ground/2.2-taxi-and-use-of-give-way#2.2.2 Give way commands: 1. For a potential conflict, open the communication menu for the aircraft that must take corrective action. 2. Tap "Give way to > [select the reference to the other aircraft]". 3. When the conflict is clear, the aircraft that gave way continues as cleared. Tip: be proactive, not reactive. Predict ground movement and conflicts and solve them early to keep a low workload. Progressive taxi commands (for example, complicated layout or potential conflict): 1. Open the communication menu for the aircraft to direct. 2. After the normal taxi clearance (taxi to RWYXX or taxi to parking), tap "Progressive Taxi > [select directions]". 3. When you finish the progressive instructions, tap "Progressive Taxi > Continue taxi at your discretion" so the aircraft continues on its own. ## Tower ### Separation URL: https://infiniteflight.com/guide/atc-guide/tower/separation Manual: these separation requirements must be applied to ALL aircraft. | Type | Rule | |---|---| | Departure / Departure | First aircraft must be airborne before the second aircraft starts the take-off roll. | | Arrival / Arrival | First aircraft must be clear of the runway edge (not the hold short line) before the second aircraft crosses the threshold. | | Departure / Arrival | First aircraft must be airborne before the second aircraft crosses the threshold. | | Arrival / Departure | First aircraft must be clear of the runway edge (not the hold short line) before the second aircraft starts the take-off roll. | | Intersecting | Arriving or departing aircraft must be beyond the runway intersection before a departure starts its take-off roll or an arrival crosses the threshold on an intersecting runway. The same separation should also be applied where runways do not physically intersect but the extended centerlines (take-off and landing flight paths) do. | ### Departures URL: https://infiniteflight.com/guide/atc-guide/tower/departures All departure commands start the same way: the aircraft calls ready for departure (request alert), then you open the communication menu. ATC Manual section: https://infiniteflight.com/guide/atc-manual/3.-tower/3.2-departures #### Hold Short Keeps departing traffic off the runway until cleared. Manual (3.2.1): if an aircraft requests take-off and you cannot clear it or issue LUAW, you must use "hold short". - If take-off or LUAW is not appropriate, tap "Hold Short > [select RWY]". #### Departure Sequence Tells queued aircraft their departure order. Manual (3.2.2): an aircraft cleared for take-off is no longer in the sequence, so the next aircraft holding short is number 1. If an aircraft has been told to LUAW, the next aircraft holding short is number 2. - Open the communication menu, then tap "Departure Sequence > [select departure number]". #### Line Up and Wait (LUAW) With one departure rolling and another holding short, you can clear the second for take-off if you know the first will be airborne before the second starts rolling. If in doubt, or just after a landing, use LUAW. The aircraft taxis onto the runway and lines up, so you can clear it as soon as separation is met. Manual (3.2.3): you can give LUAW to more than one aircraft if it does not compromise the first aircraft due to depart. - Tap "Line Up & Wait > [select RWY]". #### Back-Taxi Needed when an aircraft cannot access full length for departure, or when a landing aircraft has passed the last available exit. Manual (3.2.4): controllers should plan for the worst case separation and should expect the aircraft to back-taxi no faster than normal taxi speed. - Tap "Back Taxi > [select RWY] > [Contact Ground when off the Runway / LUAW] > [Send / Expedite]". (The source step says "If you want to issue a LUAW command" here, which looks like a copy error.) | Option | Meaning | |---|---| | Contact Ground when off the Runway | After the back-taxi and vacating the runway, the aircraft contacts Ground. | | Line Up & Wait | After the back-taxi, the aircraft turns 180 on the runway, ready for departure. | | Send | Sends the back-taxi instruction. | | Expedite | Sends it and asks the aircraft to expedite (usually because of arrival traffic). | #### Intersection Departures Multiple runway entry points let you choose the departure sequence. | Consider | Why | |---|---| | Flight plan | With several departures and no arrivals between them, pick aircraft that depart in different directions (for example one north, one south) to ease airspace congestion. | | Aircraft size | If the gap between two arrivals is small, pick an aircraft that departs faster (for example a fighter jet, not a large airliner). | | Aircraft position | Lining up two aircraft at the same time can make departures faster. | Manual (3.2.5): intersection departures should not be seen as "queue jumping"; use them to give an expeditious service. #### Take-Off - Tap "Cleared for Takeoff > [select option]". | Option | When to use | |---|---| | Send | Most cases: a normal take-off clearance. | | Straight Out (Altitude) | When the current ATIS broadcasts "Straight Out Dept.". The aircraft flies runway heading until it reaches the given altitude AND no conflict exists. | | Request Immediate Takeoff | When separation with arrival traffic on final (usually within 2 nm) is likely to be lost. | ### Inbounds URL: https://infiniteflight.com/guide/atc-guide/tower/inbounds ATC Manual section: https://infiniteflight.com/guide/atc-manual/3.-tower/3.3-inbounds #### Pattern Entry, Sequence and Clearance - Pattern altitude: 1000 ft AAL (above aerodrome level) for prop aircraft, 1500 ft AAL for jets. The pattern has several legs joined by 90 degree turns. - Pattern entry: imagine each pattern leg extended out from the airport. The leg that meets the aircraft's flight path is usually the best entry, but traffic may require a change. - Sequencing tells pilots whom to follow. It applies to all inbounds, not only pattern traffic, unless the aircraft follows no one. It needs: - controller and pilot to know the pattern legs; - the controller to give sequencing in good time; - the controller to update it when things change; - pilots to give each other space to maneuver; - pilots to follow the sequence. - On left downwind the airport is on your left; on right downwind it is on your right. The same applies to crosswind and base. Manual (3.3.1): with no Radar Controller present, Tower must give ALL aircraft a pattern entry and clearance as a MINIMUM, whatever they used to check in. Sequencing depends on traffic. 1. The aircraft calls inbound (request alert). 2. Open the communication menu. 3. Choose the pattern entry, then tap "Pattern Instructions > [select Pattern Entry] > [select RWY] > Send". 4. After the pattern entry (and sequence if not number 1), clear the aircraft: "Cleared to Land/For the Option > [select number] > [Cleared to Land / Cleared for the Option] > [select RWY]". Tip: if the aircraft is not number 1, when you know whom it follows, tap "Sequencing... > [select number] > [select current position of traffic to follow]". Scenario: multiple inbounds call at once and the order is unclear. - Technique 1: send only a pattern entry to the aircraft you are unsure about. When they are closer and the order is certain, send the sequence with the clearance. Pro: flexible; aircraft know whom they follow. Con: two separate commands may increase workload. - Technique 2: send a pattern entry and the most likely sequence to all, then monitor and change it as they get closer. Pro: good for workload. Con: if given too early, aircraft may be unsure whom they follow. - Tip: work from the inside out. First give the aircraft closest to the airport a pattern entry, sequence (unless number 1) and clearance, then work outward. #### Runway Changes Changing an assigned runway is a useful tool in a dynamic environment and helps efficient use of all runways. Manual (3.3.3): after a runway change, a new pattern entry and clearance must be given. Sequencing depends on traffic. 1. The aircraft requests a runway change (request alert). 2. Open the communication menu. 3. If you cannot grant it, tap "Unable". 4. If you approve it, or you change the runway yourself (for example for traffic), choose the pattern entry and tap "Pattern Instructions > [select Pattern Entry] > [select RWY] > Send". 5. Clear the aircraft: "Cleared to Land/For the Option > [select number] > [Cleared to Land / Cleared for the Option] > [select RWY]". Tip: sequencing as above with "Sequencing...". Scenario: VP-MAX departs RWY32L and I F A E Eleven departs RWY32R at the same time. I F A E Eleven then asks for RWY32L. - Technique 1: tell I F A E Eleven "enter right downwind RWY32L, number 2, traffic to follow is on left downwind". If worried about a conflict at the other end, add "extend downwind, I'll call your base". When clearing it, you can give left traffic to move it to that side for later patterns. Pro: flexible. Con: may confuse who follows whom. - Technique 2: tell VP-MAX "turn crosswind". When separation is good, tell I F A E Eleven "enter left downwind for RWY32L, number 2, traffic to follow is on left downwind". If I F A E Eleven starts a right turn for RWY32R meanwhile, use Technique 1. Pro: ensures separation. Con: I F A E Eleven may turn right downwind before you give the new entry. - Technique 3: tell I F A E Eleven "extend upwind, I'll call your crosswind". When separation from VP-MAX is enough (you can speed this up by telling VP-MAX "turn crosswind"), give "enter left downwind for RWY32L, number 2, traffic to follow is on left downwind". The new pattern entry supersedes the previous instruction. Pro: prevents a right downwind entry. Con: using a pattern entry instead of "turn crosswind" may confuse. - Tip: other factors (such as terrain) can change the best technique on the day. #### Cleared for the Option Manual (3.3.5): for aircraft in the pattern, "Cleared for the Option" must be used. It lets the pilot choose landing, touch and go, stop and go, or low approach. 1. The aircraft calls inbound for touch and goes (request alert). 2. Open the communication menu. 3. Tap "Pattern Instructions > [select Pattern Entry] > [select RWY] > Send". 4. Clear it: "Cleared to Land/For the Option > [select number] > Cleared for the Option > [select RWY] > [Send / Make Left/Right Traffic]". Tip: sequencing as above with "Sequencing...". | Option | When to use | |---|---| | Send | The aircraft was already told to make left/right traffic in its take-off clearance or previous landing clearance. | | Make Left/Right Traffic | The pilot gets a new pattern entry or a new runway. | ### Pattern Work URL: https://infiniteflight.com/guide/atc-guide/tower/pattern-work The traffic pattern is a standard flight path for take-off and landing while keeping visual contact with the airport. Pattern altitude: 1000 ft AAL for props, 1500 ft AAL for jets; legs joined by 90 degree turns. For pattern entry, sequencing and clearance steps, see Inbounds above. ATC Manual section: https://infiniteflight.com/guide/atc-manual/3.-tower/3.4-pattern-work-transitions-flight-of-xx Manual (3.4.1): pattern work is allowed only if Visual Meteorological Conditions (VMC) exist, aircraft can fly a standard pattern, and traffic levels are manageable. Scenario (re-sequencing): I-DRUM and N1DC are both sequenced and cleared for RWY05L. On downwind, I-DRUM goes further downwind than expected. - Technique 1: re-clear N1DC as number 1 and re-sequence I-DRUM as number 2. If worried about separation, tell I-DRUM "extend downwind, I'll call your base". Pro: efficient, better pilot satisfaction. Con: more commands, more workload. - Technique 2: tell I-DRUM "turn base" to force a tighter pattern. Pro: can be efficient. Con: some pilots or aircraft cannot fly a pattern that tight. #### Transitions Aircraft not with a radar facility can request a transition through tower airspace. Tower airspace is the innermost ring around the airport, up to 5000 ft AAL. Example: airport elevation 1000 ft gives tower airspace 1000 ft to 6000 ft. Manual (3.4.2): approve a transition only within tower airspace (no higher than 6000 ft in the example). Separation must be applied if there is pattern traffic. 1. The aircraft requests a transition (request alert). 2. Open the communication menu. 3. Choose an altitude that keeps the aircraft in tower airspace and separated from pattern traffic. 4. Tap "Respond to Transition > [<10,000ft / >=10,000ft] > [select altitude]". Tip: VFR traffic needs at least 500 ft separation, but give at least 1000 ft to also meet IFR requirements. #### Flight of XX Manual (3.4.5): with a "Flight of XX" callsign, send commands only to the lead aircraft and treat the flight as one aircraft. 1. The lead aircraft makes a request (request alert). 2. Open the communication menu. Tip: the flight progress strip is easier, because tapping one aircraft in a formation on the map can be difficult. ### Exit Runway URL: https://infiniteflight.com/guide/atc-guide/tower/exit-runway Manual (3.5.1): give Exit Runway when the aircraft is at a safe, controlled speed, typically below 70 kts. https://infiniteflight.com/guide/atc-manual/3.-tower/3.5-exit-runway-go-around#3.5.1 1. Open the communication menu. 2. Tap "Exit Runway > [left / right / any] > [option]". 3. Depending on the option, a frequency change may be needed: "Contact Other Frequency > [select frequency]". | Option | Meaning | |---|---| | Send | Normal exit, with permission to change frequency. | | Expedite | Expedite exit, with permission to change frequency. | | Expedite, Traffic on [Final/Base] | Expedite exit plus position of landing traffic, with permission to change frequency. | | Cross Runway > [RWY] | Normal exit, permission to cross another runway and to change frequency. | | Hold Short > [RWY] | Normal exit and hold short of another runway. The aircraft stays on frequency and goes to Ground only after it has crossed the runway. | Tip: use expedite when an aircraft on final is within 2 nm, or within 3 nm when another aircraft is lined up ready to depart. ### Go-Around URL: https://infiniteflight.com/guide/atc-guide/tower/go-around A go-around (G/A) is an aborted landing on final approach, started by the pilot or ATC. Possible reasons: loss of separation with the aircraft ahead; landing or intersecting runway blocked; unstable approach (pilot or environment). When ATC is present, pilot and controller share responsibility for a go-around. Manual (3.5.4): if a Radar Controller is present, you should tell them the aircraft is go-around traffic so they can plan for it. Then hand the aircraft to Radar unless it is VFR or the controllers made a prior arrangement. https://infiniteflight.com/guide/atc-manual/3.-tower/3.5-exit-runway-go-around#3.5.4 1. Open the communication menu. 2. Tap "Go Around > make [left/right] traffic > [select RWY]". Consider other aircraft and terrain when choosing the direction. 3. If an aircraft cleared for take-off is a collision risk, tap "Cancel Take-Off Clearance" for it. 4. Unless the traffic is VFR (or there is a prior arrangement), hand it to the Radar Controller, if present: "Contact Other Frequency > [select frequency]". Scenario (go-around avoidance): N1DC and I-DRUM are on final for RWY05L with minimum separation and an approach speed difference of more than 80 kts, so a go-around is likely. - Technique 1: anticipate and build separation early. If both were downwind, tell I-DRUM "extend downwind, I'll call your base" instead of following N1DC at minimum separation. Pro: good situational awareness and traffic management. Con: more workload; do not forget or delay the "turn base". - Technique 2: tell I-DRUM "maintain slowest practical speed". When N1DC has landed and slowed, tell it to exit the runway expeditiously (if a full stop). Pro: uses all tools to prevent a go-around. Con: more pressure on pilots. - Technique 3: with multiple runways, change I-DRUM's runway: "enter straight in RWY 05R", then re-clear it for RWY05R with the correct traffic pattern instruction if it is a touch and go. Pro: good use of all runways. Con: may increase pilot workload and confusion. - Tip: a go-around is not wrong, but it is the final defence. Prevent it by being proactive when you can. --- # Infinite Flight: ATC Manual > The Infinite Flight Air Traffic Controller (IFATC) Manual: Ground, Tower, ATIS, airspace and Radar procedures and phraseology, plus an overview of recruitment and training. It is for IFATC Controllers, candidates and anyone who wants to know how ATC works on the Infinite Flight Expert Server. Source: https://infiniteflight.com/guide/atc-manual (infiniteflight-docs 6b73625). Generated by a model on 2026-10-20. If this file and the website disagree, the website is correct. Notes for readers: - Section numbers (for example 3.2.6) are the manual's own paragraph numbers. Other paragraphs refer to them. - "must" / "must not" = MANDATORY, strict compliance REQUIRED. "should" / "should not" = ADVISORY, compliance STRONGLY RECOMMENDED. - Phraseology in quotes is the in-app command text. Brackets such as [rwy] or [callsign] are placeholders. - Restricted pages (visible only to signed-in members on the website) are listed by title only. ## Introduction (manual version) URL: https://infiniteflight.com/guide/atc-manual Guide version 26.4. ATC Manual version (internal) 26.4. Last updated September 2026. All Controllers are expected to know this manual and keep reading it during their time with IFATC. Summary of changes: | Version | Location | Change | |---|---|---| | 26.4 (current) | 2.2.3 Taxi and Use of Give Way | Added guidance for intersection departures | | 26.4 | 6.3 Drag and Vector | Added direct-to functionality under purpose | | 26.4 | 6.7 Holding | Revised guidance to support reworked holding feature | | 26.4 | 6.16 Direct-To | Guidance for direct-to functionality on radar | | 26.2 | 4.2.1 Remarks and NOTAMs | PA28 added to list of light aircraft | | 26.2 | 1B2.2 Violation Reasons | Only one violation per offense should be issued | | 26.2 | 2.2.2 Ground Taxi and 3.2.6 Tower Departures | Controllers are not required to instruct jets to "Contact Tower when ready" since they are assumed ready | | 26.2 | 4.1.4 ATIS usage | Controllers may accommodate pilot requests based on traffic levels and workload | | 26.2 | 6.2.4 Radar Separation | Controllers may tap aircraft target to acknowledge collision alert and silence alarm | | 26.2 | 7a.2.3 Training Structure | Fixed typo | | 25.1.0 | 1.1.3 | Changed manual feedback point of contact | | 25.1.0 | 1A.3.1 | Controllers may use Autopilot+ while controlling or participating in TT | | 25.1.0 | 1A.6.5 | Updated training session requirement for radar trainees | | 25.1.0 | 2.1.5 | Controllers may approve pushback without tail guidance or pushback path | | 25.1.0 | 7B.2 | Tester role: restructured tower practical test | ## 1. Introduction ### 1.1 Overview URL: https://infiniteflight.com/guide/atc-manual/1.-introduction/1.1-overview - 1.1.1: The manual helps new entrants and current Controllers with IFATC procedures and the basic principles of all controlling facilities. Must/should definitions as above. - 1.1.2: Controllers should also use the Infinite Flight User Guide (https://infiniteflight.com/guide), the IFC Forum (https://community.infiniteflight.com/) and FAA 7110.65. - 1.1.3: Send manual feedback with the Report Form (Google Form). Check the Feedback Status Spreadsheet BEFORE you submit, to avoid duplicates and to see the progress of your reports. Send questions to the ATC Manager via the IFC or the IFATC Discord. ### 1.2 Abbreviations URL: https://infiniteflight.com/guide/atc-manual/1.-introduction/1.2-abbreviations AAL Above Aerodrome Level; AGL Above Ground Level; Alt Altitude; ATC Air Traffic Control; ATIS Automatic Terminal Information Service; CAF Continue As Filed; DM Direct Message; FAA Federal Aviation Administration; FF Flash Flight; FF Flight Following; FPL Flight Plan; FS Full Stop; Ft Feet; GMT Greenwich Mean Time; GPS Global Positioning System; GA General Aviation; G/A Go-Around; GS Groundspeed; G/S Glideslope; HWC Headwind Component; KIAS Knots Indicated Airspeed; IAS Indicated Airspeed; ICAO International Civil Aviation Organization; IFATC Infinite Flight Air Traffic Controllers; IF Infinite Flight; IFC Infinite Flight Community; IFFG Infinite Flight Fan Group; IFR Instrument Flight Rules; ILS Instrument Landing System; IMC Instrument Meteorological Conditions; IRL In Real Life; Kts Knots; LLC Limited Liability Company; LOC Localizer; LUAW Line Up And Wait; METAR Meteorological Aerodrome Report; MSA Minimum Sector Altitude; Nm Nautical Mile; NOTAMS Notification to Airmen; RAIS Report Airport In Sight; RET Rapid Exit Taxiway; RV Radar Vectors; RWY Runway; SFC Surface; SID Standard Instrument Departure; STAR Standard Terminal Arrival Route; TAF Terminal Aerodrome Forecast; TOD Top of Descent; TWC Tailwind Component; UFN Until Further Notice; UTC Coordinated Universal Time; VARB Virtual Airline Regulatory Board; VC/VCs Voice Channel(s); VFR Visual Flight Rules; VIS Visual; VMC Visual Meteorological Conditions; VNAV Vertical Navigation. Note: "FF" has two meanings (Flash Flight and Flight Following). ## 1A. Administration ### 1A.1 Discord Communication URL: https://infiniteflight.com/guide/atc-manual/1a.-administration/1a.1-discord-communication Restricted: visible only to signed-in ifatc members on the website. Content not included. ### 1A.2 Discord Rules URL: https://infiniteflight.com/guide/atc-manual/1a.-administration/1a.2-discord-rules Restricted: visible only to signed-in ifatc members on the website. Content not included. ### 1A.3 Controller Rules URL: https://infiniteflight.com/guide/atc-manual/1a.-administration/1a.3-controller-rules Restricted: visible only to signed-in ifatc members on the website. Content not included. ### 1A.4 Airport Selection URL: https://infiniteflight.com/guide/atc-manual/1a.-administration/1a.4-airport-selection Restricted: visible only to signed-in ifatc members on the website. Content not included. ### 1A.5 Activity Requirements URL: https://infiniteflight.com/guide/atc-manual/1a.-administration/1a.5-activity-requirements Restricted: visible only to signed-in ifatc members on the website. Content not included. ### 1A.6 Rank Structure URL: https://infiniteflight.com/guide/atc-manual/1a.-administration/1a.6-rank-structure Restricted: visible only to signed-in ifatc members on the website. Content not included. ### 1A.7 Check Ride Process URL: https://infiniteflight.com/guide/atc-manual/1a.-administration/1a.7-check-ride-process Restricted: visible only to signed-in ifatc members on the website. Content not included. ### 1A.8 Disciplinary and Suspension Procedure URL: https://infiniteflight.com/guide/atc-manual/1a.-administration/1a.8-disciplinary-and-suspension-procedure Restricted: visible only to signed-in ifatc members on the website. Content not included. ## 1B. Violations ### 1B.1 Overview URL: https://infiniteflight.com/guide/atc-manual/1b.-violations/1b.1-overview Restricted: visible only to signed-in ifatc members on the website. Content not included. ### 1B.2 Violation Reasons URL: https://infiniteflight.com/guide/atc-manual/1b.-violations/1b.2-violation-reasons Restricted: visible only to signed-in ifatc members on the website. Content not included. ### 1B.3 Incident Resolution Procedure URL: https://infiniteflight.com/guide/atc-manual/1b.-violations/1b.3-incident-resolution-procedure Restricted: visible only to signed-in ifatc members on the website. Content not included. ## 2. Ground ### 2.1 Runway Selection and Pushback URL: https://infiniteflight.com/guide/atc-manual/2.-ground/2.1-runway-selection-and-pushback ALL available runways should be used at ALL times (see 4.1.4). Runway selection: - 2.1.1: Before opening, Controllers must know the taxiway layout, including the largest aircraft type that can be accepted (it must physically maneuver without restricting traffic flow; see 4.2.1). Once open, Controllers must liaise with other Controllers on runway selection for departures and arrivals, and scan where traffic is on the airport. - 2.1.2: Runway colors (green, amber, red) are guidance only. Controllers must use the METAR to find the headwind or tailwind component (H/TWC) for a runway, and should check the TAF for the wind trend. Avoid runway changes (they cause delays). Most aircraft can land with a TWC of up to 10 kts, so avoid changes until that point if possible. Pushback: - 2.1.3: Must check the area is clear before pushback clearance. If not clear, must use "hold position" or a give way command first. A reminder can be set. Strips: the oldest "hold position" command goes to the bottom of the tab, which shows who asked first. - 2.1.4: Usually approve the first request to push or taxi, regardless of type or parking (pushback equipment exists for all aircraft; parking configurations vary). Know the airport's parking configuration (can aircraft pull through a remote stand? do they need a pushback?). - 2.1.5: Use auto pushback and/or tail position assignment as much as possible at eligible airports to set the pushback path and start taxi position. To pause an auto pushback, send "hold position". A later "pushback approved" resumes the assigned auto pushback. Without a conflict, Controllers may approve pushback without tail or auto push guidance. To amend a path: "hold position", then a new pushback clearance with the new path. - 2.1.6: "expect runway xx" may be used if needed; not required on every pushback clearance. ### 2.2 Taxi and Use of Give Way URL: https://infiniteflight.com/guide/atc-manual/2.-ground/2.2-taxi-and-use-of-give-way Send aircraft to the closest runway in use if possible (traffic and performance permitting). - 2.2.1: Active ground monitoring is required, with "give way" when needed. Must monitor for runway incursions and prioritize "give way" to aircraft that could conflict with traffic exiting the runway. If a conflict exists, send "give way" first, then the taxi instruction, so the pilot knows BEFORE taxiing. - 2.2.2: Default commands that must be used: "Taxi to RWYXX, contact tower when ready" (departures) and "Taxi to Parking" (arrivals). Where available, use "drag and taxi" for specific routes. Must issue a crossing clearance for each runway on the route; an aircraft must have crossed a previous runway before the next crossing clearance. "Drag and taxi" sometimes does not say "Contact Tower when ready"; Ground should hand off to Tower near the departure runway when all conflicts are resolved. Jets do not need "Contact Tower when ready"; they are assumed ready on reaching the departure runway. At large, complex airports (KORD, EHAM, KJFK) partial taxi instructions to intermediate holding points often work best. - 2.2.3: At large HUB airports with long runways and multiple intersections (for example JFK), should use intersections to sequence departures. Must consider aircraft performance and airport elevation. An intersection before an intersecting runway can expedite departures and remove the need to stagger arrivals and departures. - 2.2.4: Should not assign gates to arrivals. The pilot chooses the parking spot; ATC accommodates when possible. Aircraft asking for parking without a spot may get progressive or drag and taxi routing to deconflict, then should be allowed to their chosen spot once conflicts are resolved. - 2.2.5: Progressive Taxi Instructions help with one-way systems, conflicts and intersection departures. They need VERY CLOSE MONITORING; use only when absolutely necessary. Send "Expect Progressive Taxi Instructions" first (if possible). Commands: Cross runway XX; Turn left/right next taxiway; Continue straight ahead; Make 180 (must make sure there is space for a 180 degree turn); Follow aircraft ahead; Already cleared to cross. When no longer needed, must send "Continue Taxi at your discretion". - 2.2.6: If an aircraft asks for a frequency change after "taxi to RWYXX, contact tower when ready" (often while holding short), send "frequency change already sent". ### 2.3 Runway Crossing URL: https://infiniteflight.com/guide/atc-manual/2.-ground/2.3-runway-crossing - 2.3.1: Name the runway in the direction in use, regardless of aircraft position or pilot request (exception 2.3.4). Example: pilot near the RWY36 threshold, but the other end is in use: instruct "cross RWY18", not RWY36. - 2.3.2: Issue the crossing only when there is spacing to cross and clear the runway edge (not the hold short line) safely. Must not cross aircraft unless: - the departure has not started the take-off roll; - the departure is rolling but is airborne and visibly turning, or past the crossing point (any altitude); - the arrival has not crossed the threshold; - the arrival has crossed the threshold but is visibly exiting before the crossing point, or is past the crossing point. Coordination with Tower is essential. - 2.3.3: Anticipate crossings; issue them in advance if traffic permits, instead of waiting for the request. - 2.3.4: If the taxiways are not directly aligned, must use a back-taxi instruction instead of a crossing (the pilot must taxi on the runway). Name the runway in the direction you want the back-taxi. Progressive taxi commands may also be used so the aircraft exits at the correct taxiway. ## 3. Tower ### 3.1 Separation URL: https://infiniteflight.com/guide/atc-manual/3.-tower/3.1-separation 3.1.1 Separation that must be applied to ALL aircraft: | Type | Rule | |---|---| | Departure / Departure | First aircraft must be airborne before the second starts the take-off roll | | Arrival / Arrival | First aircraft must be clear of the runway edge (not the hold short line) before the second crosses the threshold | | Departure / Arrival | First aircraft must be airborne before the second crosses the threshold | | Arrival / Departure | First aircraft must be clear of the runway edge (not the hold short line) before the second starts the take-off roll | | Intersecting | Arriving/departing aircraft must be beyond the runway intersection before a departure starts its roll or an arrival crosses the threshold on an intersecting runway. Also consider extended centerlines where runways do not physically intersect but flight paths do; the same separation should apply | Also consider aircraft type: if a C172 departs before a 737, the 737 will catch up quickly with minimum separation, so add time before the second departure. The same separation should be given in these cases to protect for missed approaches/go-arounds. - 3.1.2: Anticipate. If a 737 is already rolling, consider a take-off clearance for the next aircraft instead of LUAW, if the first will be airborne by the time the second rolls (see 3.2.3). A cleared aircraft may reject the take-off; monitor actively and, for example, cancel the take-off clearance of another aircraft cleared on the same runway. - 3.1.3: If separation is likely to be lost, be proactive. In a Departure / Arrival sequence, send the arrival around, and also consider "take-off clearance cancelled" for the departure so it does not climb into the missed-approach traffic (see 3.5.4). It is generally too late to reject a take-off above 100 kts. - 3.1.4: Most commercial approach speeds are 120 to 150 kts. For more separation use "maintain slowest practical speed", but should not use it within 4 miles of touchdown (aircraft is likely at final approach speed). Check GS/IAS first. It is useful whenever IAS is excessive, but: if close in, a go-around may be the only option; avoid slowing aircraft too far out when a Radar Controller is present (it can disturb their spacing; tell Radar if you need more space, see 3.6.1). ### 3.2 Departures URL: https://infiniteflight.com/guide/atc-manual/3.-tower/3.2-departures - 3.2.1 Hold short: if an aircraft requests take-off and you cannot clear it or issue LUAW, must use "hold short". "standby" is not appropriate. - 3.2.2 Departure Sequence menu: optional, to tell ready aircraft their sequence (useful when the taxiway layout confuses who is next). "Hold Short" must always be used if the aircraft is number 1 for departure or if you are unsure of the sequence. Aircraft do not need to be first in line to call "ready for departure" (they may also use "in sequence"); useful for planning, especially with intersection departures. An aircraft cleared for take-off is no longer in the sequence, so the next aircraft holding short is number 1. If an aircraft was told to LUAW, the next aircraft holding short is number 2. - 3.2.3 LUAW: puts an aircraft on the runway for an imminent departure once separation rules (3.1) are met. Consider anticipated separation: if the first aircraft is rolling and will be airborne before the second can line up and roll, clear the second for take-off instead, considering the preceding aircraft's climb speed. LUAW may be given to more than one aircraft if it does not compromise the first departure. - 3.2.4 Back-taxi: if back-taxi is the only way to reach full length, should issue a back-taxi command so pilots choose how much runway they need. Back-taxi is pilot discretion even with LUAW or take-off clearance. Plan for the worst case and expect back-taxi no faster than normal taxi speed. - 3.2.5 Intersection departures: must be used unless they affect the departure/arrival flow rate. Not "queue jumping"; a gap too tight for a commercial aircraft may suit a fast jet. - 3.2.6: Jets are assumed ready on reaching the hold short line of the assigned runway, so "Contact Tower when ready" is not required. Controllers may issue LUAW or take-off clearance before the aircraft requests departure. - 3.2.7: "Immediate Take-Off" should only be used for Departure / Arrival separation when separation is very likely to be lost otherwise. Normally when the arrival is on final at 2 nm or less, depending on its approach speed and the departing type (for example 777 vs 737). - 3.2.8: The nm range on an aircraft tag is from the tower, not the landing threshold. Work out range from the threshold. On a standard 3 degree glideslope, 2 nm from touchdown is about 600 ft (airport elevation 0 ft) (see 6.11.4). - 3.2.9: When "Straight Out Dept." is in the ATIS (4.2.1), add "fly runway heading until at or above XXXXft" to every take-off command as a final reminder. Options: 1000 ft, 3000 ft and 5000 ft AAL (rounded down to the nearest 500 ft). With "Straight Out Dept." in the ATIS, aircraft cannot leave runway heading until clear of any conflict. - 3.2.10: SIDs often turn soon after departure; "Straight Out Dept." may stop pilots flying the selected SID (see 4.2.1, 6.4.3). - 3.2.11 Frequency change: should give departures a frequency change 1/2 mile off the departure end unless there are conflicts (these must be resolved first). Avoid changes in critical phases (immediately after rotation). If an aircraft does not change frequency, just swipe its data strip; repeated requests or warnings are not needed. ### 3.3 Inbounds URL: https://infiniteflight.com/guide/atc-manual/3.-tower/3.3-inbounds Local flights may be authorized if inbound at a position, altitude and speed that does not disrupt traffic. Try to accommodate inbounds regardless of flight time; service may be denied for unreasonable requests that reduce service for others. - 3.3.1: With no Radar Controller, Tower must give ALL aircraft a pattern entry and clearance as a MINIMUM, whatever they used to check in. Pilots may call inbound on the ILS, GPS or Visual approach without approach control if flying the charted approach. Pattern entry and sequence still depend on traffic, but published approaches should be accommodated as much as possible. Consider the flight plan (STAR or instrument approach), but also traffic flow and common sense (for example, enter downwind instead of a STAR straight-in if traffic needs it). - 3.3.2: If unsure of the pattern entry (aircraft far away), "Continue Inbound" can be sent first, but must give a pattern entry BEFORE the aircraft reaches the pattern. If unsure of the sequence, send a pattern entry without sequence, and must update it once known. - 3.3.3: Try to accommodate requests for other runways if service to others is not compromised. - 3.3.4: After a runway change, must give a new pattern entry and clearance (sequence depends on traffic). - 3.3.5: For aircraft in the pattern, must use "Cleared for the Option" (landing / touch and go / stop and go / low approach). - 3.3.6: If left/right traffic was given in the take-off or previous landing clearance, "make left/right traffic" is not needed again. With a new pattern entry or runway, must state left/right traffic when clearing for the option. ### 3.4 Pattern Work / Transitions / Flight of XX URL: https://infiniteflight.com/guide/atc-manual/3.-tower/3.4-pattern-work-transitions-flight-of-xx - 3.4.1 Pattern work: pattern altitude is 1000 ft AAL for props and 1500 ft AAL for jets. Controllers are encouraged to fly at the airport before controlling it. Conditions: - VMC must exist: for IF, a MINIMUM of 3 statute miles (about 5000 m) visibility. - Aircraft must be able to fly a standard pattern. If terrain prevents it (KASE, LOWI, NZQN), pattern work must be denied. - If CURRENT traffic prevents adequate service, pattern work should be turned off TEMPORARILY and must be resumed when manageable. - 3.4.2 Transitions: aircraft must request a transition when passing through Tower airspace unless with that airport's radar facility. Tower airspace = the innermost ring/boundary around the airport, up to 5000 ft AAL (airport at 1000 ft: 1000 to 6000 ft). - 3.4.3: Approve transitions only within Tower airspace (no higher than 6000 ft in the example). Apply separation from pattern traffic. - 3.4.4 Example: 2 jets in the pattern at a 1000 ft airport fly at 2500 ft. A transition must stay within Tower airspace (up to 6000 ft) and be separated from them. 3000 ft is the minimum (500 ft VFR separation); 1000 ft or more is recommended to meet IFR separation (6.2). - 3.4.5 Flight of XX: send commands only to the lead aircraft; treat the flight as one aircraft. Separation within the flight is the pilots' responsibility; they will likely be within 1/2 mile of each other on approach and landing. ### 3.5 Exit Runway / Go-Around URL: https://infiniteflight.com/guide/atc-manual/3.-tower/3.5-exit-runway-go-around - 3.5.1: Give Exit Runway at a safe, controlled speed, typically below 70 kts (exceptions 3.5.2). Do not use expedite unnecessarily; typically needed when another aircraft is within 2 nm final, or 3 nm final if an aircraft is lined up to depart. Pattern aircraft that have not announced a full stop are assumed to do a touch and go or stop and go; delay the exit command until a full stop is clear (exiting, or not enough runway left to take off). - 3.5.2: Time-critical instructions (for example Go-Around) must come first. Without an Exit Runway command, aircraft are expected to exit at the first available taxiway at taxi speed, cross the hold bars and contact Ground. If they do not change frequency, send "Frequency Change Approved" or "Contact Ground" when workload permits. - 3.5.3: When controlling multiple close runways, should use the Exit Runway and Hold Short/Cross Runway command. Tower then manages the crossing (deconflicting with departures/arrivals) and hands over to Ground once clear. - 3.5.4 Go-around (G/A): pilot or Controller initiated; cancels the approach and/or landing. Be proactive. With a go-around instruction, must use "left/right traffic/fly runway heading" for positive control. No pattern entry is needed, but sequencing (as appropriate) and a clearance are. With Radar present, tell Radar it is "go-around" traffic and hand it over, unless VFR or otherwise arranged. Aircraft returning to Radar after a go-around should usually get "fly runway heading". ### 3.6 Tower Working with Radar URL: https://infiniteflight.com/guide/atc-manual/3.-tower/3.6-tower-working-with-radar - 3.6.1: At busy times Radar uses ALL runways and spaces arrivals 5 nm to allow a departure between them. Tell Radar if a departure queue builds and you need more space. Must not dictate which runways Radar uses for arrivals vs departures; ALL runways should be used (4.2.1). After handover to Tower, keep runway changes for instrument arrivals to a minimum. When handing Tower to a new Controller, use the same frequency unless agreed otherwise with Radar, so frequency change quick commands keep working. - 3.6.2: Pattern work must stay with Tower and must not go to Radar, unless pattern work is being denied. Then pattern aircraft can be converted to a radar pattern by handing them to Radar, at Radar's discretion based on workload (also consider Tower workload, for example a long departure line). - 3.6.3 With Radar present: | Approach type | Pattern entry | Sequence | Clearance | |---|---|---|---| | ILS/GPS | No | No | Yes | | Radar Vectors | Yes | If req | Yes | | Flight Following | Yes | If req | Yes | | Visual | No | If req | Yes | "If req": unless the aircraft is number 1, a sequence is required before the clearance. ## 4. ATIS ### 4.1 Overview URL: https://infiniteflight.com/guide/atc-manual/4.-atis/4.1-overview - 4.1.1: ATIS (Automatic Terminal Information Service) broadcasts the current weather plus REMARKS and NOTAMS. - 4.1.2: A Phonetic Alphabet letter identifies each ATIS. If the ATIS no longer matches the situation (weather, SIDs/STARs in use), Controllers must change it without delay and coordinate in real time with other Controllers. MINIMUM: update at least once an hour. A broadcast must be made on Ground/Tower/Radar so pilots check the new ATIS. Pilots state the ATIS they have on first contact. Pilots with the wrong identifier can be told to recheck the latest ATIS; they then take all responsibility for checking, and Controllers need not recheck. - 4.1.3: Letters must be in alphabetical order, typically starting at Alpha unless taking over from another Controller. - 4.1.4: ALL available runways should be used; avoid one runway for departures and another for arrivals if possible. If terrain, layout or weather prevents it, not using ALL runways is acceptable (ask a Supervisor or above if in doubt). Pilot requests for runways outside the advertised configuration may be accommodated if traffic and workload permit. - 4.1.5: With a servicing radar facility active, the ATIS must state the approach type in use (ILS, GPS or Visual). That approach must exist in the procedure selection menu (for example, a GPS approach must be published for the airport). Controllers may still deviate if operationally useful. Tower-only airports may advertise an approach, but standard pattern entries mainly decide navigation to the landing runway(s). - 4.1.6: Some airports allow multiple Ground/Tower/Radar frequencies. If used, Controllers must update the ATIS (which frequency to contact, from which direction), coordinate beforehand with other Controllers, and use the IFATC Discord channels during the session. ### 4.2 Remarks and NOTAMs URL: https://infiniteflight.com/guide/atc-manual/4.-atis/4.2-remarks-and-notams Avoid too many REMARKS and NOTAMS in one ATIS; prioritize the most important. 4.2.1 When to use: | REMARK / NOTAM | When to use | |---|---| | No Intersection Dept. | Intersection departures must always be allowed unless they block the only taxiway to full length AND affect the departure/arrival flow rate (3.2.5) | | No Pattern Work | Must be used when 1 of these is true: weather below VMC; terrain prevents a standard pattern; CURRENT traffic will reduce service standards (3.4.1) | | Gate Hold | Prefer hold position (2.1.3). Gate hold can be used when a long line of departures must clear and taxiway space is limited. Should be limited to a maximum of 10 minutes | | No Light Aircraft | Must not be used at GA-focused airports. Elsewhere at the Controller's discretion (GA parking, layout, traffic, staffing). Should try to accept light aircraft at airports that accept them IRL. Light aircraft = C172, SR22, XCub, PA28, Spitfire Mk VIII and P38 | | Rolling Dept. | To expedite departures: aircraft cleared for take-off line up and start the roll immediately. LUAW can still be used when useful (arrival/departure sequence, or departure/departure where the first aircraft is slow to roll) | | FPL Required | Only when weather is below VMC minima (3.4.1) or SID/STAR use is mandated | | Straight Out Dept. | Runway heading must be flown after departure until no conflict exists AND the altitude set by Tower is met or exceeded. May prevent aircraft from flying their selected SID | | Mult. Freq. In Use | See 4.1.6 (the table links to 4.1.5) | | Check Forum | Only to refer pilots to special instructions on IFC pages, for example VARB Summit | | SID/STAR Use Rcmd | Light to moderate traffic, when SID/STAR use is not essential for traffic management (4.2.2). Only if the airport has published SIDs/STARs | | SID/STAR Use Req | Heavy traffic when SID/STAR use is essential, OR events and/or main hub airports (4.2.2). Only if the airport has published SIDs/STARs | | Event | IF LLC sponsored events only | | Size Restrictions | Must be used when any aircraft cannot be accepted because its size restricts airport flow (blocks taxiways or ramp areas) (2.1.1) | | Low Visibility | Visibility less than 1/4 statute mile (400 m) | 4.2.2: Controllers can select preferred SIDs/STARs and should include a reasonable variety of authorized procedures for departures/arrivals from ALL directions. By convention Radar Controllers decide this; without Radar, Tower may choose (not encouraged). ## 5. Airspace ### 5.1 Airspace URL: https://infiniteflight.com/guide/atc-manual/5.-airspace/5.1-airspace 5.1.1 Controller airspace = vertical jurisdiction, lateral boundary and frequency range: | Facility | Vertical jurisdiction | Lateral boundary | |---|---|---| | Tower | SFC - 5000 ft AAL | Innermost ring/boundary around the airport | | Departure/Approach | SFC - 18,000 ft / FL180 | 50 nm | | Center | SFC - 60,000 ft / FL600 | White boundaries | NOTAMs and/or TFRs can change airspace and jurisdictions during special events. - 5.1.2: Departure/Approach serves one airport or a cluster of close airports. Center is region-based and fills gaps outside Departure/Approach range. - 5.1.3: Center may perform Departure/Approach functions when no terminal radar facility is open, but this should be limited; the main focus is Center roles (6.6.1). - 5.1.4: Special Use airspace (Military Operating Areas (MOAs), Warning Areas, Restricted Areas) has magenta boundaries. IF does not currently enforce or monitor them. - 5.1.5 Airspace colors (information only): Class B blue; Class C magenta; Class D light blue; Terminal Control Area light green; Flight Information Region (FIR) white. ### 5.2 On Guard Procedures URL: https://infiniteflight.com/guide/atc-manual/5.-airspace/5.2-on-guard-procedures When opening a frequency, let things settle. For example, do not "on guard" aircraft on short final; let them land and roll out. 5.2.1: Must check the aircraft's tuned frequency before sending "on guard" (it may be with another tower/radar facility). Radar Controllers should also check active/away status (6.6.5). Aircraft must not be "on guarded" outside these limits: | Facility | Vertical and lateral limits | |---|---| | Tower | SFC - 10,000 ft AAL and within 25 nm | | Departure/Approach | SFC - 18,000 ft AAL / FL180 and within 50 nm | | Center | SFC - FL600 and within the white boundaries | For significant airport elevation, Controllers may adjust (for example, airport at 5000 ft: add 5000 ft / FL50). 5.2.2: Give aircraft reasonable time to tune in after "on guard". Must not "on guard" an aircraft that is on another active frequency. ## 6. Radar ### 6.1 What is a Radar Controller? URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.1-what-is-a-radar-controller New Radar Controllers should start slowly and build up to high-volume airports, especially at peak times or events. - 6.1.1 Three main objectives: aircraft and terrain separation; reducing Tower workload; an expeditious departure, en-route and/or arrival service. - 6.1.2: Radar has a higher workload (aircraft from many directions in altitude, heading and speed, separation, expeditious service), so extensive training comes first (7.4). BEFORE opening, Controllers must have a plan to manage the expected workload. ### 6.2 Separation URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.2-separation - 6.2.1 Terrain separation: at least 1000 ft AGL terrain clearance at all times (must). - 6.2.2 Aircraft separation: no closer than 3 nm laterally or 1000 ft vertically at all times (must). - 6.2.3: If aircraft are not separated on initial contact, provide separation as soon as practicable. Until then, flight with less separation is the pilot's responsibility; the Controller can still offer a service (for example "Expect Vectors for..."). - 6.2.4: The collision alert system shows airborne conflicts. If the alert is valid, Controllers must immediately issue a traffic alert and, if feasible, an immediate alternative course of action to restore IFR minima. Tapping the conflicting target silences the aural alarm, but the Controller stays responsible for separation until minima are restored. | Collision alert | Criteria | |---|---| | Red target | <1000 ft and/or 3 nm | | Red target and audible alarm | <500 ft and/or 1.5 nm | - 6.2.5: Aircraft on a VFR service must "see and avoid" and keep a MINIMUM of 500 ft vertical separation from other aircraft. ### 6.3 Drag and Vector Feature URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.3-drag-and-vector-feature - 6.3.1: A fundamental tool that should be used. It shows: heading; distance from the aircraft's current position; time to reach that point at current speed; highest terrain at that point; name of a nearby Navigation Aid; a direct-to prompt when dragged over a fix on the aircraft's flight plan. - 6.3.2: Scan the planned vector path for the highest terrain. As a minimum, round the highest terrain up to the next whole 1000 ft, then add 1000 ft (terrain separation, 6.2.1). - 6.3.3 Example: highest terrain on the path 10,800 ft; round up to 11,000 ft and add 1000 ft; the lowest altitude the aircraft must be given is 12,000 ft. ### 6.4 Departure / Check In URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.4-departure-check-in If no Departure Controller is present, the Center or Approach Controller should handle departures (as well as arrivals) if workload permits, especially if departure routes may conflict with arrivals. - 6.4.1: Departure control manages VFR aircraft (with or without a flight plan) and IFR aircraft (which should have a flight plan). - 6.4.2: With straight-out departures, Departure and Tower should coordinate (3.6). - 6.4.3: SIDs are published procedures flown by IFR aircraft right after departure (pre-defined route, sometimes altitude/speed restrictions) to avoid adjacent airspace, terrain and arrivals. Let aircraft continue on a SID as far as possible; vectors/altitude assignments are not required on initial contact unless needed for sequencing or traffic avoidance. Limit "Straight Out Dept." to accommodate SIDs (3.2.9, 4.2.1). - 6.4.4 Check In has two functions: requesting an IFR Radar Control Service from the FIRST Radar Controller contacted; and telling a Radar Controller the aircraft is on frequency AFTER BEING SWITCHED by a previous radar controller. Aircraft that want to follow their flight plan (including the SID) "Check In" after departure. Controllers must answer every "Check In" with "Radar Contact". This sets two-way communication, accepts the filed flight plan and clears the aircraft to its initial cruising altitude. No further communication is then needed, but vectors or altitude assignments may still be given (6.5.2). After a vector and/or altitude assignment, when there is no more conflict risk, send "Continue as Filed" and/or "Altitude at your Discretion". Use "Resume Own Navigation" instead of "Continue as Filed" if the aircraft will not return to its flight plan or has none. - 6.4.5: An aircraft handed over from another radar controller only needs to check in; the service continues. - 6.4.6: For a different service, the pilot must request it. If the previous service cannot be provided, the Controller changes the service the aircraft can expect, or asks for the pilot's intentions. ### 6.5 Flight Following URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.5-flight-following - 6.5.1: Flight Following is a VFR service, with or without a flight plan; pilots "see and avoid". Radar can acknowledge it; pilots with a flight plan are expected to keep following it. When busy, Flight Following or other VFR services may be denied, but it is recommended to work the traffic and vector it away from hazards such as final and busy arrival/departure corridors. - 6.5.2: Pilots are still subject to vectors and altitude assignments as traffic requires; Radar must judge this to keep separation. Final separation from aircraft, terrain and IMC is the pilot's responsibility, not ATC's. - 6.5.3: After vectors/altitude assignments, when the conflict risk is gone, send "Continue as Filed" and/or "Altitude at your Discretion" (exceptions 6.5.5). Use "Resume Own Navigation" if the aircraft will not return to its flight plan or has none. - 6.5.4: Issue a frequency change when the aircraft leaves your airspace AND will not affect other aircraft under your control. - 6.5.5: Must not ask Flight Following aircraft for their approach request (VFR advisory service: monitoring and traffic alerts when able). If one is inbound to a busy airport you control, options (with Tower as needed): vectors for the approach sequence before handover; switch it early so Tower gives entry and sequence; or place it on a pattern leg for Tower (like Radar Vectors) before handover. ### 6.6 Center URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.6-center - 6.6.1: Center airspace is SFC to FL600, defined by white boundaries on the map. Functions: separation and services for all IFR/VFR aircraft under control; sequence management en route to help Departure/Approach. Center does not replace Departure/Approach; it should only support them with upper air traffic management and sequencing. With no Departure and/or Approach open, Center can manage that airspace too. Any Center frequency has a radio emitter range of 400 nm from the selected station. Pick the frequency location that best covers the primary airport(s); for example, Center for LAX and SAN may be best selected from SNA. Climb: - 6.6.2: Aircraft climbing after departure or handed over from Departure usually "Check In"; the Radar Control Service (or previous service) continues (6.4.4). Vectors/altitude assignments may still be given (6.5.2); afterwards send "Continue as Filed" and/or "Altitude at your Discretion", or "Resume Own Navigation" if not returning to a flight plan or none filed. - 6.6.3: Aircraft may request a different service; Center must decide what it can offer based on workload. For VFR or no flight plan, use "Resume Own Navigation" instead of "Continue as Filed" (6.5.3, 6.5.5). Cruise: - 6.6.4 Focus on: active/away aircraft for separation (6.6.5); speed commands for flow management; handing aircraft to adjacent facilities at the airspace boundary (5.1.1). - 6.6.5: The flight progress strip shows "active" or "away". Leave "away" aircraft alone; assume their conflicts are unintentional. Aircraft descending via VNAV may get a violation after a warning if unresponsive AND in conflict (1B.2.1). - 6.6.6: Aircraft at cruise may use "Resume Flight", so they may reappear unexpectedly. Controllers are not responsible for loss of separation from returning players but should restore minima as soon as practical. Resume Flight criteria: altitude > 28,000 ft MSL; level flight; LNAV activated; ETE to destination > 30 minutes; on flight plan track. - 6.6.7: Speed control is essential for flow in cruise. Controllers must know typical Mach cruise speeds (6.15.5). A change of Mach .01 can change arrival time significantly (depending on how early it is sent). Center should use speed control where possible (altitude changes and vectors are still available). This reduces workload and avoids taking aircraft hundreds of miles off their flight plan. - 6.6.8: Semi-circular rules are not implemented but help separate large amounts of cruise traffic. - IFR (RVSM airspace): heading 360-179 = ODD levels (FL330, FL350, FL370); 180-359 = EVEN (FL320, FL340, FL360). - VFR (odd/even plus 500 ft): 360-179 = ODD (1500, 3500, 5500); 180-359 = EVEN (2500, 4500, 6500). STARs: - 6.6.9: STARs are published procedures flown by IFR aircraft from an intermediate altitude (pre-defined route, sometimes altitude/speed restrictions). Let aircraft continue on a STAR as far as possible unless vectors are needed for expeditious service, sequencing or traffic avoidance (6.9.4). - 6.6.10: Controllers can select preferred STARs from different directions (4.2.2). Review flight plans on initial contact. Aircraft not on a preferred STAR should be told "Amend Flight Plan to Include Preferred STAR at Destination" to give them time to refile. Descent: - 6.6.11: Aircraft with a filed STAR "Check In" on first contact with Center. Without a STAR they should request the desired service or approach. For other requests such as an approach request, respond "Continue as Filed, Expect the [approach type/runway] at [location]" if the approach in use is known. Approach can still change it later. - 6.6.12: Pilots should request descent via the STAR just before Top of Descent (TOD). Center replies "Descent via the STAR Approved" or "Unable, Expect Vectors". Approved STAR descents show on the flight progress strip for all later Controllers (no duplicate requests needed). If "expect vectors", Center must give vectors and altitude assignments, then "Continue as Filed" and "Altitude at your Discretion" when complete. Center may also instruct "Descend via the STAR" before the pilot asks. Built-in or pilot-amended STAR altitudes show on the scope when the aircraft icon is tapped. - 6.6.13: Aircraft already descending before contacting Center should be authorized to "Descend via the STAR". Aircraft established in the descent should not be told to "Amend Flight Plan to Include Preferred STAR at Destination" (pilot workload); vector them for sequencing instead. - 6.6.14: Hand off at or before the lateral and/or vertical boundary when all conflicts are resolved. Center must make sure all aircraft continue to destination in an organized way, on their procedures, and sequenced before handoff to Approach. ### 6.7 Holding URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.7-holding - 6.7.1: Holds help with congested airspace, aircraft that are high and must lose altitude, sequencing arrivals before the destination airport environment, and high-volume event traffic. - 6.7.2: Radar can assign holds at fixes and NAVAIDs (such as a VOR) on the filed route, including on a SID, STAR or instrument approach. Controllers may also instruct a hold at present position, or a left/right 360 degree turn. - 6.7.3 To start a hold: with the drag and vector tool, hover over a fix on the flight plan, select hold in the quick menu, choose the turn direction, and assign an altitude. A speed assignment is issued automatically from the altitude. The aircraft enters the hold over the fix from its inbound track. Holding aircraft show a hold icon next to the data tag, or select the aircraft on the map to see the hold. To end a hold, tap the aircraft and select "exit hold". It then continues on its flight plan on the next inbound leg. - 6.7.4: Controllers must make sure a hold is more useful than delay vectors or other spacing before issuing it. Holds can add a lot of flight time and need more vigilance (deconflicting altitudes and overlapping holds). - 6.7.5 Hold entries: Direct, Parallel, Teardrop. (An image shows the standard holding pattern.) ### 6.8 Diversion URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.8-diversion - 6.8.1: Aircraft on an active radar frequency may request to divert at any time. ATC can approve (resume own navigation to the airport, or expect radar vectors) or deny. - 6.8.2: In congested or complex airspace, give radar vectors to avoid unpredictable pilot actions while leaving the area. Once clear, "resume own navigation", or (workload permitting) provide radar services to the divert airport if within your jurisdiction. - 6.8.3: Deny diversions sparingly, only to prevent diversion to an unsuitable airport or one at capacity. ### 6.9 Approach URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.9-approach Local flights may be authorized if inbound at a position, altitude and speed that does not disrupt traffic. Try to accommodate inbounds regardless of flight time; unreasonable requests that reduce service for others may be denied. - 6.9.1: Approach airspace: SFC to FL180, 50 nm around the airport (significant airport elevation can be considered, 5.2.1). Before opening you must know (and it is recommended to fly the approach yourself to find ideal altitudes and vectors): - Airport elevation: to find the best intercept altitudes (6.11.5). - Runway exits: RETs let aircraft exit faster than 90 degree exits or back-taxi; this must be considered when spacing on final. - Tower Controllers in your area: agree departure/arrival strategies and runways. Agree handover points, altitudes and headings with other Radar Controllers for traffic between airports (3.6.1). - Airport plates: should be used for situational and terrain awareness (6.9.6). - 6.9.2: Most STARs are in Approach airspace (5.1.1). With Center present, ALL Controllers must coordinate. - 6.9.3: On first contact aircraft make their approach request. If already cleared to descend via the STAR by a previous Controller (shown on the strip, 6.6.11), respond "Continue as Filed, Expect the [approach type/runway] at [location]" to continue as cleared. If they were on vectors, not approved for descent via the STAR, or you want to vector/assign altitudes, use "Expect Vectors for the [approach type/runway] at [location]". Without Center, aircraft already descending via a STAR may continue with "Continue as Filed, Expect the [approach type/runway] at [location]" without a specific descend-via clearance (6.6.12). - 6.9.4: Let aircraft continue on a STAR as far as possible unless vectors are needed (6.9.5). Aircraft not on a preferred STAR (4.2.2) should get "Amend Flight Plan to Include Preferred STAR at Destination" (6.6.10), unless established in the descent (6.6.13). - 6.9.5: After vectors/altitude assignments, to return to the flight plan send "Continue as Filed" and/or "Altitude at your Discretion". Traffic and terrain permitting, aircraft must get the most direct routing possible and should not fly a full STAR in those conditions. - 6.9.6: Find approach charts online by searching "approach charts" plus the ICAO code. Learn to read them. - 6.9.7: MSA (Minimum Sector Altitude): aircraft can be vectored safely with guaranteed terrain clearance if not cleared below the sector altitude. Charts usually show MSA in circle segments (around the airport or a navaid). Controllers can vector below MSA if terrain clearance is assured. - 6.9.8 Example chart: from the North clear of terrain down to 5100 ft, from the South down to 4500 ft, over the sea down to 3500 ft. Fly the approach yourself to learn high terrain and the best intercept altitude. - 6.9.9 Flight plan approach prefixes (visible when a pilot selected a published approach): | Prefix | Meaning | |---|---| | D | VOR/DME Approach | | H | RNAV (RNP) Approach | | I | ILS Approach | | J | GLS Approach | | L | LOC (Localizer) Only Approach | | N | NDB Approach | | Q | Combination (two or more) of ILS/DME/VOR/NDB | | R | RNAV (GPS) Approach | | S | VOR Only Approach | | X | LDA (Localizer Type Directional Aid) Approach | Then the runway designator (for example 27), then suffixes: L = Left; R = Right; Y or Z = differentiates runways using the same guidance; 1, 2 etc. = same guidance to a runway with different approach paths (common on VOR/DME/NDB approaches). Example: H35LZ = RNAV (RNP) Approach for Runway 35L, Zulu Procedure. ### 6.10 Global Positioning System (GPS) Approach URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.10-global-positioning-system-(gps)-approach - 6.10.1: The GPS Approach is a non-precision approach in IF. Not common (limited functionality); accommodate requests when traffic permits. It is a series of waypoints and altitude restrictions to the threshold, without localizer/glideslope. - 6.10.2: When approved (or issued by the Controller), the aircraft continues on its FPL (or new FPL). At an appropriate point (such as base), clear it for the GPS Approach. Vectors, altitude assignments and/or intercepts should not be needed; the pilot follows the flight plan to the threshold. If the pilot edited the flight plan (for example removed the missed approach), the prefix may disappear; use judgment and grant the GPS Approach if the procedure looks correct. - 6.10.3: Once established (may not be in line with the runway for offset GPS approaches), hand off to Tower/Unicom. - 6.10.4: Vectors may be favored if a STAR does not lead onto final, if flying the whole flight plan is not expeditious with CURRENT traffic, or after a missed approach. Then vector at MINIMUM to the Initial Approach Fix (IAF), and in ALL cases must make sure the aircraft can establish inbound on the GPS Approach. Once assured AND the track shows a successful rejoin, clear it for the GPS Approach. "Establish inbound" = a vector that lets the aircraft join the FPL, or "Continue as Filed" so it makes its own way to the FPL. ### 6.11 Instrument Landing System (ILS) Approach URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.11-instrument-landing-system-(ils)-approach - 6.11.1: The ILS has two beams: the Localizer (LOC) for lateral guidance and the Glideslope (G/S) for vertical guidance. - 6.11.2: The cone at the runway end is only a VISUAL AID. The LOC and G/S are radio signals that extend beyond the cone and can be intercepted inside or outside it. - 6.11.3 LOC intercept: issue an intercept heading (exceptions 6.11.5), as close to 30 degrees as possible offset from the runway designator. Avoid 10 degrees or less. Example: RWY 27 = headings 240 and 300. Use the actual runway heading if significantly different (KMIA RWY 08R is 092, so ideal intercepts are 060 or 120). - 6.11.4 G/S intercept: must issue an altitude below the G/S path. A typical G/S is 3 degrees: 1 nm = 300 ft AAL, 2 nm = 600 ft AAL, and so on. - 6.11.5: An ILS clearance may be given without an intercept heading if the filed STAR and/or approach has a reasonable intercept angle to the final course (about 30 degrees and/or an easy turn onto final), or joins the extended final at 20 nm or more. An appropriate altitude must still be assigned as the lowest authorized altitude until established on the localizer. Controllers with advanced knowledge of the specific ILS plate may also clear without an intercept heading outside these conditions, but must know the procedure and be able to see when the aircraft is established. If in doubt, vector. - 6.11.6 Intercept altitude: cones are about 11 nm long; G/S altitude there is about 3500 ft AAL. Terrain, aircraft position and aerodrome elevation also affect it. Must use an altitude below the G/S at the intercept point; by convention about 500 ft lower (no hard rule). Example: airport elevation 1000 ft, G/S at cone end about 4500 ft, so 4000 ft is sensible (no other terrain). Adjust if intercepting further out or inside the cone. Parallel operations (reduced separation only for aircraft on ILS or GPS approaches): - 6.11.7: Must keep IFR separation (6.2.2) until aircraft are established on the LOC or lateral guidance (6.14.2). After that, IFR separation is not needed between aircraft aligned with parallel runways. - 6.11.8: Lateral separation is lost first, so during the intercept only vertical separation counts. For aircraft that will be parallel on final: (1) make all of them LEVEL at their approach clearance altitude, separated by at least 1000 ft (ideally before the base turn); (2) vector them to intercept the LOC/lateral guidance in line with each other, so none starts down the G/S before all are established. Example: aircraft at 3000 ft and 4000 ft; if they do not intercept in line, the 4000 ft aircraft meets the G/S and descends before both are established, and vertical separation is lost. ### 6.12 Radar Vectors URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.12-radar-vectors - 6.12.1: Radar Vectors mainly put aircraft into the VFR pattern. Vector to a recognizable position (downwind, base, etc.) and descend to pattern altitude before handover: Prop 1000 ft AAL, Jet 1500 ft AAL. Tower must then issue a pattern entry, a sequence (if required) and a clearance. If the runway has an ILS or GPS approach, aircraft can be vectored toward the localizer but must not be cleared for an approach; hand them to Tower for pattern entry, sequence (if required) and clearance. - 6.12.2: Must check airport elevation for the correct pattern altitude, and must consider surrounding terrain. - 6.12.3: If weather is below VMC (3.4), aircraft must be vectored toward the instrument approach (ILS or GPS), then handed to Tower/Unicom at an altitude and position that lets them set up the instrument approach themselves. Descent to pattern altitude is not required; give a suitable altitude for position and G/S (6.11.4). ### 6.13 Visual Approach URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.13-visual-approach - 6.13.1: An IFR approach where the pilot proceeds visually when cleared. The pilot must be visual before clearance. VMC must exist: for IF, a MINIMUM of 3 statute miles (about 5000 m) visibility. - 6.13.2: Difference from Radar Vectors: Radar Vector aircraft get no approach clearance, so Tower gives pattern entry, sequence (if required) and clearance. Visual approach aircraft are already cleared, so Tower gives only sequence (if required) and clearance. - 6.13.3: Terrain permitting, position the aircraft in a recognizable position (downwind, base, or straight in). Ask it to "report airport in sight" (vectors can continue after this). When it reports the airport in sight, clear it for the visual approach (with or without a final vector) and hand off to Tower/Unicom. - 6.13.4: Some aerodromes have specific visual procedures; Controller and pilot must use the correct chart (6.9.6). - 6.13.5 Example, KJFK visual RWY13L/R: vector toward the Canarsie (CRI) VOR. The chart inbound heading is 043, so heading 040 or similar; minimum altitude initially 2000 ft. Ask the pilot to report the airport in sight, clear the visual approach, and hand to Tower (essentially on a right base for RWY13L/R). If the pilot does not report the airport in sight, more vectors may be needed to keep the prescribed tracks until visual. ### 6.14 Handover to Tower/Unicom URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.14-handover-to-towerunicom - 6.14.1: Before handover, the aircraft must be established on the "intended approach path" AND have an acceptable closure rate with the aircraft ahead. - 6.14.2: Intended approach path for GPS, Radar Vectors and Visual: see 6.10.3, 6.12.1, 6.13.3. For ILS, the aircraft must have intercepted the LOC, especially with parallel operations. Established means aligned with the runway centerline, not "in the cone". - 6.14.3: Radar must make sure closure is acceptable and give speed control if separation cannot be kept (example: A at 180 kts GS on final, B intercepting at 250 kts GS only 3 nm behind, may cause a go-around). Keep aircraft on frequency until separation is assured, even if the frequency change is very late. - 6.14.4: When busy, use "maintain XXXkts until X mile final". The aircraft reduces IAS to that speed, holds it to that distance, then slows to final approach speed. ### 6.15 Aircraft Speed URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.15-aircraft-speed - 6.15.1: Wind and altitude change the relationship between IAS and GS. - 6.15.2 Wind: 20 kts tailwind makes 180 kts IAS = 200 kts GS; 20 kts headwind makes it 160 kts GS. - 6.15.3 Altitude (250 kts IAS, no wind, ball-park): 3000 ft ~ 260 kts GS (+10); 6000 ft ~ 270 (+20); 9000 ft ~ 290 (+40); 12000 ft ~ 300 (+50). - 6.15.4: The aircraft information tab shows current IAS (Mach above FL280). All speed commands use IAS or Mach; the radar screen shows GS to help judge wind and altitude effects. - 6.15.5: IAS changes to Mach at FL280; above it all speeds are Mach. Altitude and weight strongly affect Mach; aircraft may be unable to fly outside these ranges: | Category | Types | Mach range | |---|---|---| | Turbo Prop | TBM-930, Dash-8 Q400 | .51 - .53 | | Narrow Body Jet | CRJ, E-Jet, A320, B737 | .75 - .80 | | Wide Body Jet | A330, B777, MD-11 | .82 - .85 | Speed control: choose 2 to 3 common speeds (such as 250 kts, 210 kts and 180 kts) and add them to the quick command list; the same speeds standardize the approach. - 6.15.6 Techniques Controllers must use: compensate for closure in-trail by slowing the trailing aircraft first or speeding up the lead aircraft first (6.15.7); give specific speed control to keep spacing; allow enough time and distance for speed changes (especially at high altitude, large speed differences, clean configuration); keep aircraft clean as long as possible (6.15.8). - 6.15.7: A speed for only one of several aircraft rarely gives separation. Aircraft #1 cannot be slowed unless #2 has a limit that will not overtake #1. Aircraft #2 cannot slow to follow #1 if #1 has no speed control. "Adjust Speed to Follow Aircraft Ahead" is useful but does not replace specific speeds; use it sparingly. Without a specific speed for the lead aircraft, the lead aircraft will dictate the whole flow into the airport; Controllers must avoid this. - 6.15.8: Avoid slowing aircraft to speeds that need configuration until within 20 track miles of touchdown. Expeditious approaches need speed kept up until close in. - 6.15.9: After being cleared to leave a hold, speed is at pilot discretion unless a speed is assigned later. - 6.15.10: After approach clearance, speed is at pilot discretion unless a speed is assigned later; then use "maintain XXXkts until X mile final" (6.14.4). ### 6.16 Direct-To URL: https://infiniteflight.com/guide/atc-manual/6.-radar/6.16-direct-to - 6.16.1: Direct-to sends an aircraft direct to a fix, NAVAID or airport on its filed flight plan (tap the aircraft icon to see the plan). Use the drag and vector tool over the fix, or the "vectoring instructions" menu for the aircraft. - 6.16.2: Controllers may use it to: sequence or space arrivals and departures; shortcut aircraft on their flight plan; send aircraft to the IAF; position aircraft for an approach such as a visual approach. - 6.16.3: Must only issue direct-to a fix, NAVAID or airport on the flight plan within your jurisdiction. Respect pilot planning and minimize interference with realistic routing (for example, direct destination 3,000 miles away removes planned routing and fuel considerations). ## 7. Recruitment and Training ### 7.1 Overview URL: https://infiniteflight.com/guide/atc-manual/7.-recruitment-and-training/7.1-overview The Recruit must make sure they meet the minimum requirements BEFORE applying. If not, the request may be invalid and progression may be refused for a period. - 7.1.1: Recruiters manage new entrants through recruitment and administer all written and practical tests. They have the final say on pass/fail. - 7.1.2: Trainers educate and train Controllers in their area, for test readiness and high standards. - 7.1.3 Definitions: Recruit = a potential IFATC Controller in the Tower recruitment process, or a current Controller in the Radar recruitment process. Trainee = a Recruit with an assigned Trainer, in training. Controllers can ask for training for their current position at any time. All Controllers get feedback and must use it to improve. - 7.1.4: All aspects are trained; Trainees should know which areas they want to target. The Trainer can end training at any time if the Trainee does not progress or lacks dedication. Trainees must not have more than 1 training session in any 24 hour period. Sessions usually last about 30 minutes but vary; all attendees must be available for the whole session. - 7.1.5: Trainers use #training-time to say how many pilots are needed and in which channel. Opt in to notifications in #role-assignments. Pilots in training sessions must fly as standard and predictably as possible: speeds and climb/descent rates must suit the terminal environment, and they must react promptly and accurately to all instructions. Disruptive behavior is not tolerated; it can lead to disconnection or a report, handled like other IFATC violations (1A.8.2). Recommended commercial profile: Downwind 210-250 KIAS; Base 180-210 KIAS; Final 160-180 KIAS. ### 7.2 IFATC Support Documentation URL: https://infiniteflight.com/guide/atc-manual/7.-recruitment-and-training/7.2-ifatc-support-documentation - 7.2.1: Supplementary sections with procedures for the departments. Not public; must not be shared outside the relevant team channels without prior authorization. - 7.2.2: Section 7A = Training; 7B = Testing; 7C = Recruitment; 7D = Supervisors; 7E = Appeals. ### 7.3 Tower Written and Practical Tests URL: https://infiniteflight.com/guide/atc-manual/7.-recruitment-and-training/7.3-tower-written-and-practical-tests Recruits must have adequate device battery and a good/reliable internet connection. - 7.3.1: Minimum requirements, application instructions and the re-test time limit are on the IFC ATC Recruiting topic (https://community.infiniteflight.com/t/atc-recruiting/843545). Meet them BEFORE APPLYING. Apply at https://infiniteflight.com/joinatc. - 7.3.2: Recruits may complete the full process without training, or use the Training Team. Training must not be given until the Recruit has passed at least the Tower Written Test. Returning members who apply within 1 year of leaving IFATC do not need the Tower Written Test. - 7.3.3: Tower training is currently at Recruiter discretion. After passing the Tower Written Test, Recruits may choose training; a Trainer contacts them within 7 days. Trainees get 15 sessions. At 15, the training team reviews progress: ready for testing, termination, or more sessions. - 7.3.4: All aircraft at the Tower Practical Test must fly conservative patterns and must not be bigger than a Boeing 757 (GA and fighters are OK). Test elements (the Recruiter has the final say): | Element | Proficiency required | |---|---| | Pushback | Correctly judges if the area is clear for pushback | | Taxi | Effective ground management, runway selection (usually by wind), give way when appropriate | | Departure | LUAW or anticipated separation when appropriate; left/right traffic for aircraft staying in the pattern | | Aircraft Separation (automatic failure) | Separation minima met at all times: Dep/Dep, Arr/Arr, Dep/Arr, Intersecting (3.1.1) | | Runway Usage | Effective use of both runways; facilitates runway change requests | | Pattern | Pattern entries (if required), sequencing (if required) and clearances | | Transition | Keeps the aircraft within tower airspace and clear of pattern traffic | | Go-Around | Proactive monitoring of arrival separation; go-arounds when required | | Runway Exit | Exit runway command with expedite when required | ### 7.4 Radar Written and Practical Tests URL: https://infiniteflight.com/guide/atc-manual/7.-recruitment-and-training/7.4-radar-written-and-practical-tests Restricted: visible only to signed-in ifatc members on the website. Content not included. ## 7A. Trainers ### 7A.1 Overview URL: https://infiniteflight.com/guide/atc-manual/7a.-trainers/7a.1-overview Restricted: visible only to signed-in trainers members on the website. Content not included. ### 7A.2 Training Structure URL: https://infiniteflight.com/guide/atc-manual/7a.-trainers/7a.2-training-structure Restricted: visible only to signed-in trainers members on the website. Content not included. ## 7B. Testers ### 7B.1 Testing Process URL: https://infiniteflight.com/guide/atc-manual/7b.-testers/7b.1-testing-process Restricted: visible only to signed-in testers members on the website. Content not included. ### 7B.2 Tower Testing URL: https://infiniteflight.com/guide/atc-manual/7b.-testers/7b.2-tower-testing Restricted: visible only to signed-in testers members on the website. Content not included. ### 7B.3 Radar Testing URL: https://infiniteflight.com/guide/atc-manual/7b.-testers/7b.3-radar-testing Restricted: visible only to signed-in testers members on the website. Content not included. ## 7C. Recruiters ### 7C.1 Overview URL: https://infiniteflight.com/guide/atc-manual/7c.-recruiters/7c.1-overview Restricted: visible only to signed-in recruiters members on the website. Content not included. ### 7C.2 Recruitment Process URL: https://infiniteflight.com/guide/atc-manual/7c.-recruiters/7c.2-recruitment-process Restricted: visible only to signed-in recruiters members on the website. Content not included. ### 7C.3 Verification URL: https://infiniteflight.com/guide/atc-manual/7c.-recruiters/7c.3-profile-verification Restricted: visible only to signed-in recruiters members on the website. Content not included. ### 7C.4 Written Test URL: https://infiniteflight.com/guide/atc-manual/7c.-recruiters/7c.4-written-test Restricted: visible only to signed-in recruiters members on the website. Content not included. ### 7C.5 Practical Test URL: https://infiniteflight.com/guide/atc-manual/7c.-recruiters/7c.5-practical Restricted: visible only to signed-in recruiters members on the website. Content not included. ## 7D. Supervisors ### 7D.1 Overview URL: https://infiniteflight.com/guide/atc-manual/7d.-supervisors/7d.1-overview Restricted: visible only to signed-in supervisors members on the website. Content not included. ### 7D.2 Violations URL: https://infiniteflight.com/guide/atc-manual/7d.-supervisors/7d.2-violations Restricted: visible only to signed-in supervisors members on the website. Content not included. ### 7D.3 Check Ride Process URL: https://infiniteflight.com/guide/atc-manual/7d.-supervisors/7d.3-check-ride-process Restricted: visible only to signed-in supervisors members on the website. Content not included. ### 7D.4 Leadership URL: https://infiniteflight.com/guide/atc-manual/7d.-supervisors/7d.4-leadership Restricted: visible only to signed-in supervisors members on the website. Content not included. ## 7E. Appeals ### 7E.1 Overview URL: https://infiniteflight.com/guide/atc-manual/7e.-appeals/7e.1-overview Restricted: visible only to signed-in appeals members on the website. Content not included. ### 7E.2 Appeals Process URL: https://infiniteflight.com/guide/atc-manual/7e.-appeals/7e.2-appeals-process Restricted: visible only to signed-in appeals members on the website. Content not included. ### 7E.3 Escalation Process URL: https://infiniteflight.com/guide/atc-manual/7e.-appeals/7e.3-escalation-process Restricted: visible only to signed-in appeals members on the website. Content not included. --- # Infinite Flight: Help and FAQ > Troubleshooting and frequently asked questions for Infinite Flight users: device requirements, purchases and refunds, performance, online play, Pro subscriptions, and the discontinued Aircraft Rental Passes. Source: https://infiniteflight.com/guide/get-help (infiniteflight-docs 6b73625). Generated by a model on 2026-10-20. If this file and the website disagree, the website is correct. ## Introduction URL: https://infiniteflight.com/guide/get-help - Guide version: 25.1.0. - This guide lists the most common user problems and tips to fix them. - Trending issues: currently none. - Support contact: support@infiniteflight.com ## General URL: https://infiniteflight.com/guide/get-help/general ### Minimum Device Requirements At least 3 GB of RAM is strongly recommended in addition to the requirements below. Android: - Android 9.0 (Pie) or later, with a 64-bit processor. - The device must support OpenGL ES 3.0. Check app: https://play.google.com/store/apps/details?id=littledreamstudios.openglcheck&hl=en - There is no full list of supported Android devices. Most are in the device compatibility thread: https://community.infiniteflight.com/t/device-compatibility-thread-20-3-built-by-us-for-you/323610 - Unsupported devices get a Google Play Store message when they try to download the latest update. - Devices without a 64-bit processor that cannot upgrade to Android 9.0 can use versions before 23.2 for a short period. Details: https://community.infiniteflight.com/t/21-1-android-support/560936 iOS: - iOS 15 or later, with a 64-bit processor. - Supported device list: https://community.infiniteflight.com/t/device-compatibility-thread-19-4-built-by-us-for-you/323610 (scroll to the bottom of the first post and find the first reply). - Any device that supports iOS 13 should be able to update to iOS 15. Devices without iOS 13 or later can still use versions before 21.6. Details: https://infiniteflight.com/timeline/21-6-ios-support ### Do I have to repurchase in-app purchases (IAPs) when I redownload? No. All app stores that sell Infinite Flight let you download paid items again without paying again. - Android: previous purchases unlock automatically when you download the app. - iOS: open the aircraft selection page and tap "Restore Purchases" to get previously purchased regions and aircraft. Check that you use the same app store account and ID as the original purchase, the purchase was not refunded, and you use no IAP hacking programs. If none of these apply, uninstalling and reinstalling the app often fixes it. ### Refunds First contact support@infiniteflight.com so the team can try to fix your problem. If you still want a refund: - Android: Google Play gives a two hour grace period for a full refund of any purchase. After that, request the refund from the developer with a complete copy of the receipt showing the purchase ID that starts with "GPA". Refunds are not guaranteed and are reviewed case by case. - iOS: iTunes policy is that all app sales are final. Infinite Flight cannot give refunds. You may get one by emailing iTunes customer service. ### Can I move purchases between Apple and Android? No. Purchases from the App Store or Google Play Store do not transfer to the other store. Each store controls its own purchases. ### Amazon App Store updates New updates are not released for Amazon devices. Amazon demand will be reviewed later to decide on future support. The version before Global stays available for now. ### Joining the Beta Team Direct requests to be an Alpha or Beta tester are not accepted. Watch the Community Forum (https://community.infiniteflight.com) for openings. ### "OIS not available" on the 350 cockpit screen The OIS is a very complicated screen to reproduce. Some screens may be added in a future release. ### Switching Cessna 172 cockpits Select a different livery to change the C172 cockpit panel: | Livery | Panel | |---|---| | Civil Air Patrol | Steam Gauge | | Default | Steam Gauge | | Embry Riddle | G1000 | | F-HATZ | G1000 | | N1322K | G1000 | | N456DX | G1000 | | Near North Aviation | Steam Gauge | | Yellow Blue | Steam Gauge | ### Fell through the ground or stuck in a "pothole" Usually the scenery stream to the device became corrupt. 1. Relaunch Infinite Flight (first stop it running in the background). 2. Before a new flight, go to Settings > General and tap "Clear scenery cache". 3. Start a flight (try Solo first). In rare cases this is not enough; then reinstall the app. ### No ATC voices Android: 1. Go to Settings > Accessibility > Text to speech output > Install voice data. 2. Remove all voices that can be removed, then download and install them again (mainly the English options). - On some Android versions the path is Settings > General Management > Language input > Text to speech > cogwheel next to your preferred TTS engine. iOS: 1. Go to Settings > Accessibility > Voice Over > Speech > Voice. 2. Voices are listed by English variant (for example US, Australia, India, Ireland). 3. Tap each voice, then tap the cloud icon with the down arrow on the right of the voice name to download it. 4. Restart the device and launch Infinite Flight. The voices are then selectable in Live Settings for Pilot and ATC. ### Cannot connect to ForeFlight or another third-party app 1. Be on the same WiFi network as the device that runs the third-party app. 2. Enable "Infinite Flight Connect" and "ForeFlight Link" in Settings > General. 3. Allow communication with devices on the local network. This varies on Android. On iOS, select "OK" in the popup; if you selected no, go to iOS Settings > Infinite Flight and enable "Local Network". ### Google Play says my device is no longer compatible This shows if the device does not support the latest update, or is not Google Play Protect certified. 1. Check the minimum device requirements above. If the device does not meet them, you cannot update to the latest version. 2. Check certification: in the Google Play Store, tap Main Menu > Settings and look at "Play Protect certification" under "About". It should say "Device is certified". If not certified, Google cannot validate the device's security or compatibility. Make sure the bootloader is locked, the device has the latest official manufacturer software update, and it is on Google Play's supported devices list: https://storage.googleapis.com/play_public/supported_devices.html More: https://support.google.com/android/answer/10248227?hl=en-GB#zippy=%2Cdevice-isnt-certified ## Performance URL: https://infiniteflight.com/guide/get-help/performance ### General tips - Set "frame rate limit" to 30 fps for most devices. Some high-performance devices can use 60 fps, but it needs more performance and power. If performance degrades at 60 fps, lower it to 30 fps. - Storage use is not fixed. It changes with the area you fly in and the number of aircraft to download. Always keep at least 3 GB of free storage. - Before long flights, reboot the device and close background apps. - You can fly and charge at the same time if the device uses less power than it receives. For example, lower screen brightness and enable the in-app low power mode. - Disable ad or message blocking apps. - Do not modify, root or jailbreak the device. - Use a strong WiFi network close to the device. - Lower graphics and performance settings in this order: 1. Rendering Resolution 2. Disable Anti-Aliasing 3. Rendering Quality 4. Texture Quality 5. Airplane count 6. 3D Object Density ### Additional Android tips - Disable Android Battery Saver. It can degrade storage, performance and network. - Newer Android devices may work fine with Anti-Aliasing on. Turning it off can help older or less powerful devices. - Some devices (for example Samsung) have a Game Tuner app. Some users had problems with it. Run Infinite Flight by itself, not through a game tuner. ### Additional iOS tips - Restart the device for peak efficiency: hold the power/lock button (plus volume up on devices without a home button) until "slide to power off" shows, slide to power off, wait 30 seconds, then hold the power/lock button until the home screen returns. - Make sure the device "Low power mode" is off (a yellow battery icon means it is on). Turn it off in Settings > Battery or in Control Center. It can degrade performance. This is a device function, not the Infinite Flight "Low power mode". As a last resort, reset the device to factory settings. Back up important data first, because it can be lost. ## Online URL: https://infiniteflight.com/guide/get-help/online ### Can I play offline? No. Infinite Flight needs an internet connection at all times. Terrain and scenery imagery are streamed, which uses very little data in testing. Offline play, or downloading scenery for use on the go, is a future goal with no set timeframe. ### "Error Code 1" when I log in You are trying to sign in to an account that does not exist yet in the app database. An Infinite Flight account is created when you buy your first subscription. You can then link it to an Infinite Flight Community profile, which lets you use the subscription on multiple devices and secures the account if you lose access. ### I see boxes or names instead of other pilots' aircraft Their aircraft is probably not downloaded to your device. Go to Settings > Live and set "Airplane count" to a suitable value. A higher count needs more device performance. On cellular, also enable "Automatic airplane download on cellular". ### "Account is being used on another device" error - The connection to the servers timed out several times in a short period, usually because the connection is unstable. It should resolve itself; if it recurs, more troubleshooting may be needed. - It can also happen when Infinite Flight is put in the background, because the operating system pauses the app completely. Do not put the app in the background when flying on any server. If this happens, the flight cannot be recovered and the app must be restarted. ### Weather server connection is red Usually temporary; it normally resolves on the hour. If it stays red, turn on flight mode for 30 seconds. If it is still red and could affect your flight, email support@infiniteflight.com. ### Unable to communicate with ATC Usually caused by a poor connection. Turn on flight mode for 30 seconds to reconnect to the Live servers. If that does not work, divert to an uncontrolled airport to avoid interfering with other online traffic. ## Subscriptions URL: https://infiniteflight.com/guide/get-help/subscriptions ### What is a Pro subscription? - Infinite Flight Pro unlocks Pro features and content for the active subscription period. Items bought separately stay available when Pro expires. - Recurring Pro subscriptions renew automatically at the billing interval you select until you cancel. - The purchase screen shows price, currency, billing interval and any tax before you pay. If an offer has different initial and renewal prices, its terms show before purchase. - Pro gifts are paid once and do not renew. The recipient can buy a separate subscription when the gift expires. - Prices and plans can differ by store, country and offer. Use the amount and billing interval shown for your purchase, not a price quoted elsewhere. ### How do I get Pro? 1. On install, Infinite Flight checks automatically for previous subscriptions. 2. If no active subscription is found, tap "Get Pro" in the top left corner of the Home Screen. 3. In the subscription pop-up, tap the blue button for the monthly option, or "More Options" for other packages. 4. If you already have an account, tap "More Options > Sign in with Infinite Flight". 5. Log in with your Infinite Flight Community Forum account (https://community.infiniteflight.com). This searches for an active subscription. If it has expired, choose a payment option to continue. ### Unable to purchase Pro Likely causes: parental permissions block in-app purchases; network connection problem; not the latest app version; not an official version of the app. Fix: check parental permissions, restart the device, and make sure the network connection is good, then try again. ### Managing your subscription - On a new device, the subscription carries over if you use the same Apple ID (iOS) or Google Play account (Android) used for the purchase. - If you change platform (iOS to Android or the reverse) or use a different Apple ID or Google Play account, link your Community Forum account first: 1. If no active subscription is found, tap "Get Pro" in the top left corner of the Home Screen. 2. In the pop-up, tap "More Plans > Sign in with Infinite Flight". (The "How do I get Pro" steps call this button "More Options".) 3. Log in with your Community Forum account details. - If you still cannot access it, email support@infiniteflight.com with the steps you already took, your Display Name and Callsign, device, and complete purchase receipt with date, item and item number (starts with GPA for Android). ### Cancelling Pro Cancel before the next renewal date to stop the next charge. Cancel through the service where you bought the subscription. Website purchases (Stripe): 1. Sign in at https://infiniteflight.com/account/purchases with the account that owns the subscription. 2. Open "Subscriptions" and select "Manage billing" for your Pro subscription. 3. Select the cancellation option in Stripe and confirm. Closing the billing page without confirming does not cancel. 4. Check the cancellation confirmation and the end date of your paid period. - Cancelling a website subscription stops future renewals. Pro stays active until the end of the paid period. It does not refund a payment already made. - If you bought Pro without signing in, use the account created with the email address entered at checkout. If you cannot sign in or open Manage billing, contact support@infiniteflight.com with your purchase receipt. App Store or Google Play purchases: - Cancel in the store account used for the purchase, even if you now use Infinite Flight on another platform. Follow that store's instructions and cancellation deadline: - Google Play: https://support.google.com/googleplay/answer/7018481?co=GENIE.Platform%3DAndroid&hl=en - App Store: https://support.apple.com/en-us/HT202039 - The store shows when cancellation takes effect and when access ends. Cancellation and refunds: - Stopping use of Infinite Flight or uninstalling the app does not cancel a recurring subscription. - Cancellation and refund are separate actions. - App Store and Google Play refund requests must follow the store's process. - For a website charge you think is wrong, contact support@infiniteflight.com with your receipt; support helps with the payment provider. - Your rights under applicable law and the payment provider's policy still apply. - Billing and cancellation terms: https://infiniteflight.com/legal/terms ### Changing the linked Community Forum account 1. Tap the User Profile in the top left corner of the screen. 2. Tap the settings symbol in the top left corner, then tap your current IFC username next to "Community Forum Account". 3. "Open Forum" and "Unlink" appear below it. 4. Tap "Unlink". Your IFC username is replaced with a "Connect" button. 5. Tap "Connect" to link a different Community Forum account: https://infiniteflight.com/guide/getting-started-guide/home-user-interface/user-profile#linking-community-forum-account Tip: if you are already logged in to the Infinite Flight Community on the device, that account is registered automatically, so make sure it is the one you want to link. ## Aircraft Rental Passes (Discontinued) URL: https://infiniteflight.com/guide/get-help/aircraft-rental-passes - Aircraft Rental Passes were discontinued in Infinite Flight 26.2. They can no longer be bought and are not available for any aircraft. The page is kept as an archive. - A pass gave users without Pro access to one eligible aircraft, multiplayer and global scenery for 24 hours. - For Pro-only aircraft, multiplayer and global scenery now, subscribe to Infinite Flight Pro: https://infiniteflight.com/account - Eligible aircraft were a changing selection. Eligible aircraft showed a "RENT AIRCRAFT" button at the bottom of the Aircraft Selection page. - Passes expired automatically 24 hours after purchase and could not be renewed after discontinuation. All passes bought before discontinuation have expired, so there are no active passes to manage or cancel. - An active pass could formerly be moved to another device with the same Apple ID (iOS) or Google Play account (Android) as the original purchase. - No other rental product replaced the passes. - For help with a current Pro subscription, email support@infiniteflight.com with the steps you already took and: Display Name and Callsign; device details; complete purchase receipt with date, item and item number (starts with GPA for Android). --- # Infinite Flight: Scenery Editor Manual > The rulebook and how-to guide for the Infinite Flight Scenery Editor, used by community editors to build 2D and 3D airports (runways, pavements, taxiways, start locations, buildings, objects, jet bridges) and to take them through peer review, official review and release. Source: https://infiniteflight.com/guide/scenery-editor-manual (infiniteflight-docs 6b73625). Generated by a model on 2026-10-20. If this file and the website disagree, the website is correct. ## Introduction (manual home) URL: https://infiniteflight.com/guide/scenery-editor-manual - Guide version: 26.1.0. - The manual is for new and experienced editors who bring 2D and 3D airport updates to Infinite Flight. - When editors join the Scenery Editor Team and upload airports with the Scenery Editor, they agree to the Contributor License Agreement (CLA): https://github.com/infiniteflight/infiniteflight-localization/blob/main/CONTRIBUTING.md Notation used in this file: "must" / "must not" = MANDATORY, strict compliance required. "should" / "should not" = ADVISORY, compliance strongly recommended. ## 1. Introduction ### 1.1 Overview URL: https://infiniteflight.com/guide/scenery-editor-manual/1.-introduction/1.1-overview **1.1.1** All editors are expected to know this manual and keep up to date with it while on the Scenery Editing Team. - "Must" / "must not" = MANDATORY; strict compliance is REQUIRED. - "Should" / "should not" = ADVISORY; compliance is STRONGLY RECOMMENDED. **1.1.2** Editors should also use the Infinite Flight User Guide (https://infiniteflight.com/guide) and the IFC forum (https://community.infiniteflight.com/). **1.1.3** Send feedback on the manual with the Report Form (https://docs.google.com/forms/d/e/1FAIpQLSc3VbkH_YfBo6qhNZZwMkyMhKqiBc9WGZb79xewe_7LUy7juQ/viewform). Check the Feedback Status Spreadsheet (https://docs.google.com/spreadsheets/d/1H8fe59TpTjjBnzsOuCK50K25SqtHmZ5KQ2RP-EpHqMI/edit?usp=sharing) BEFORE you submit, to avoid duplicates; it also shows the progress of your reports. Send questions to the Technical Writer (@AdamCallow) on the IFC or the Scenery Editor Discord. **1.1.4 The goal of airport editing** - Airports exist to improve the app. User experience is the top priority, and performance is a large part of it. - Goal: make airports look as good as possible while preserving performance. - Editing is not a contest for the most detailed airport. Extreme detail looks good in screenshots but degrades performance. - Weigh every choice for detail against its performance cost. Less can be more. ### 1.2 Abbreviations URL: https://infiniteflight.com/guide/scenery-editor-manual/1.-introduction/1.2-abbreviations AIP = Aeronautical Information Publication; CLA = Contributor License Agreement; DM = Direct Message; FAA = Federal Aviation Administration; GA = General Aviation; G/S = Glideslope; ICAO = International Civil Aviation Organization; IF = Infinite Flight; IFC = Infinite Flight Community; ILS = Instrument Landing System; IRL = In Real Life; LLC = Limited Liability Company; LOC = Localizer; N/A = Not Applicable; OR = Official Review; OSM = Open Street Map; PR = Peer Review; RWY = Runway; SFC = Surface; UFN = Until Further Notice; ULD = Unit Load Device; WIP = Work In Progress; VC / VCs = Voice Channel / Voice Channels. ### 1.3 Aircraft Categories URL: https://infiniteflight.com/guide/scenery-editor-manual/1.-introduction/1.3-aircraft-categories Aircraft categories are used for taxiways (7.1, 7.2) and start locations (8.1, 8.2). **1.3.1 Category definitions** (meters) | Cat | Wing span | Outer main gear wheel span | |---|---|---| | A | < 15 | < 4.5 | | B | 15 to < 24 | 4.5 to < 6 | | C | 24 to < 36 | 6 to < 9 | | D | 36 to < 52 | 9 to < 14 | | E | 52 to < 65 | 9 to < 14 | | F | 65 to < 80 | 14 to < 16 | **1.3.2 Infinite Flight aircraft by category** | Cat | Aircraft | |---|---| | A | CC19, C172, F16, F18S, F22, P28A, SPIT, SR22, TBM9 | | B | A10, CL35, CRJ2/7, C208, F14, P38 | | C | A318/319/320/321, BCS3, B712, B737/738/739, B38M, CRJ9/X, DH8D, E175/190 | | D | B752, B763, C130, C17, DC10, MD11 | | E | A332/A332F/333/338/339, A346, A359/35K, B742/744, B77L/77W/772, B788/789/78X | | F | A388, B748 | ## 1A. Administration The six pages in this sub-section are restricted on the website to signed-in members of the scenery editing role (front matter `auth: scenery`). Their content is not included in this public file. Pages: - 1A.1 Discord Communication: https://infiniteflight.com/guide/scenery-editor-manual/1a.-administration/1a.1-discord-communication - 1A.2 Discord Rules: https://infiniteflight.com/guide/scenery-editor-manual/1a.-administration/1a.2-discord-rules - 1A.3 Editor Rules: https://infiniteflight.com/guide/scenery-editor-manual/1a.-administration/1a.3-editor-rules - 1A.4 Rank Structure: https://infiniteflight.com/guide/scenery-editor-manual/1a.-administration/1a.4-rank-structure - 1A.5 Airport Assignments: https://infiniteflight.com/guide/scenery-editor-manual/1a.-administration/1a.5-airport-assignments - 1A.6 Disciplinary and Suspension Procedure: https://infiniteflight.com/guide/scenery-editor-manual/1a.-administration/1a.6-disciplinary-and-suspension-procedure Some of these rules are repeated on public pages and are kept below: changelog rule (2.1.2, 12.1), Peer Review limits (12.1.3). ## 2. User Interface ### 2.1 Editor Screen URL: https://infiniteflight.com/guide/scenery-editor-manual/2.-user-interface/2.1-editor-screen **2.1.1 Screen areas** 1. Management buttons (left): manage files, edit recent activity, change the view, adjust object altitude, add/change pavements, taxiways and buildings, import satellite imagery (2.1.2). 2. "Last saved" (bottom bar): applies to the current editing session only. A new session (even without leaving the app) resets it to "N/A" until you save. 3. Main navigation bar (right): Library, Properties, Items (2.1.3). 4. Edit buttons (right): move, copy and paste, edit or delete selected buildings, objects and taxiways (2.1.4). 5. Camera selector (2.1.5). 6. Time, end current session, settings (settings: https://infiniteflight.com/guide/getting-started-guide/home-user-interface/settings). **2.1.2 Management buttons** File menu: - Save Selected as Bundle: save a selected group of buildings and/or objects as a bundle for reuse. - Share Selected Bundle: share a bundle selected in the library with other editors. - Download OSM: download Open Street Map data; usually gives most buildings inside and near the airport boundary. - Download OSM at Cursor: download OSM data around the cursor (approx. 200 m range). Use when buildings are missing or were deleted by accident. - Scenery Stats: key stats on placed objects, including poly count. Contains the "Scenery Checker", which checks compliance with limits (performance limits, objects outside the boundary, naming issues, duplicate gates, etc.) (12.1.2). - Save: save changes locally on the device. Autosave runs once every minute. - File Manager: last local modification, upload, restore backups, export. Airports are on the server only when "upload complete" shows. Downloading a server version overwrites your local version. - Airport Properties: ICAO code, elevation, name, airport class, frequencies, etc. (3.2). File Manager (after the first upload of a new airport, the airport is assigned to you so no one else can overwrite your work): - Local: last modified on your device. - Online: shows if local changes are ready for upload. - Upload as Draft: save work online. Do this regularly as a backup against app issues. Required for peer reviews (other editors can then see your work). - Upload for Review: submit a complete airport for official review. - Revert to last Upload: go back to the last upload; undoes later work. - Backups: tap a backup (turns amber) then "Restore". - Restore: revert to the selected backup. - Delete All Local: clears the local cache of autosaved files. - Export: export the file to a chosen location such as Google Drive (not required). - Close: close the file manager. Changelog rule: when you upload a new version ("Upload as Draft" or "Upload for Review") you must submit a changelog. Changelogs must be specific (example: "Adjusted C19 jetbridge. Changed taxiway line type on Taxiway A"). Add more detail in the IFC airport thread if needed. Edit menu: - Undo / Redo. - Copy / Paste (pastes the most recent copy). - Selection (Add): while active, objects you tap or rectangle-select are added to the selection. - Selection (Remove): while active, objects you tap or rectangle-select are removed from the selection. - Freeze Selected: selected items cannot be moved or edited. - Freeze All Lines / Freeze All Pavements / Freeze All Buildings Objects: freeze that whole type (Freeze All Pavements is useful for finished large pavement areas). - Unfreeze All: unfreezes buildings, pavements, taxiways and objects. View menu (amber = shown, white = hidden): - Buildings, Models (objects), Taxiway Lines, Runways, Satellite Background. - Pavements: amber "Pavements" = shown; tap again for "Pavement Outlines" (outlines only); tap again = white, hidden. - Taxiway Network: shown only after "Build Taxiway Layout". - Start Locations: shows all in-app aircraft spawn points. - Focus on Selected: moves the camera to the selected item(s). - Hide/Show Panel: hides or shows the right side panel. Object menu: - Auto Altitude: puts selected buildings/objects on top of the building they are placed within (or at ground level if nothing is around them). - Create Runway: create a new runway (5.1.1). - Create Model Line: tap to place points; points join automatically to make a series of fences. Only fences and similar objects at this time (10.5). Pavements menu: - Create Pavement: tap to place points; points join automatically to make a pavement section. - Move to Top / Move Up / Move Down / Move Bottom: change render order of the selected pavement. Also works for taxiway lines. Building Parts menu: - Create Building: tap to place points; points join automatically to make a building section. - Split Building Part: splits the selected nodes into a new building part. This also creates a new roof. - Auto Texture Orientation: aligns the texture (roof pattern for buildings) to the longest line of the selected building or pavement. Taxiways menu: - Create Taxiway Line / Create Roadway Line / Create Taxiway Connection: tap to place points; points join automatically. - Build Taxiway Layout: builds routes from each start location to the runway(s). Tap again after any change before you "Check Taxiway Layout" again. - Check Taxiway Layout: checks if taxi routes from start locations to runways are valid; color coded under each start location. - Set as Apron: renames selected taxiway(s) to APRON. Must be done for taxiways not named on charts and for taxiway connections. - Freeze Non Taxi Line: freezes all lines whose usage is not "Aircraft" (recommended when you work on taxi lines). - Select Invalid Taxi Lines: after the network is complete, shows taxi lines not part of the network in magenta (at any zoom). - Select Lines Near Start: selects lines near spawn points so you can recategorize them as non taxiway routable (lines that nose wheels park on). Jetbridges menu: - Check Jetbridges: checks start locations for errors such as jet bridges not reaching doors; color coded (11.4.1). - Freeze Non Jetbridges: only jet bridge end sections and start locations can be selected (recommended when you work on jet bridges). - Auto Assign Gates: assigns jet bridges to gates automatically (11.4.1). - Rotate Range +90 degrees: rotates the base position 90 degrees and sets the stowed angle so the bridge stays in the same place but gets a wider rotation range. - Adjust Jet Bridge Alt: sets all selected jet bridge elements to the altitude of the first selected part (11.3.3). Satellite menu: - Import Imagery: open pre-saved zipped KML imagery files. - Latitude Offset / Longitude Offset: press, hold and slide up or down to shift the imagery by +/-0.01 to +/-2.00 meters. **2.1.3 Navigation bar (right panel)** - Library: all available objects (how to add: 10.2.1). - Properties: changes with the selection (buildings, objects, start positions, lines, pavements, jet bridges). - Items: list of all buildings, lines, pavements and objects loaded at the airport. Tap an item to select it and show its move/orientation handles. - Building Texturing: all building part textures. Recent textures show on the left. Tap the current group name (lower left) to see all groups of faces. Tap a face, then "Assign" (lower right) to apply it to all faces of the selected building part(s). **2.1.4 Edit buttons** - Create Hole: with a pavement selected, create holes in it (6.1.6). - Line Options: - Simplify: reduces nodes in a line (useful for taxiway curves with too many nodes). - Reverse: reverses point numbering (also fixes "inside out" buildings). - Straighten: straightens the line between all selected points. - Split Line: select a line, then a point; "Split Line" makes two lines (useful when one line spans several taxiways). The part after the split point stays selected. - Snap Off / Snap to All / Snap to Type, Angle Snapping On/Off: snapping attaches a point to another point or line to avoid gaps and overlap. Snapping must be used to connect buildings, lines and pavements. Snap Off = no snapping. Snap to All = snap to any building/line/pavement. Snap to Type = only to the same type (line to line). Angle Snapping snaps angles in 5 degree steps from the previous node (for example, exact 90 degree corners). - Insert Point: adds a point to the selected building or pavement after the last numbered point, or between the selected point and the next point. - Adding/Selecting Point(s): toggles mode. Adding: tap an edge to add a point between two points, or tap elsewhere to add after the last point. Selecting: select points (also possible in Adding mode). - Modify Shape: must be on (amber) to change individual points of a building, taxiway or pavement. When off, you can only move the whole shape. - Delete Selection: deletes the selected buildings and objects. **2.1.5 Camera** Recommended for editing: "Airport/Scen Editor" and "Birds Eye View". The "Free" camera is useful to position the ATC tower. **2.1.6 Rectangle selection tool** 1. Tap, hold and drag on the screen. A white box shows the selection area. 2. Release when the box contains what you want. **2.1.7 In-app ruler** 1. Put two fingers on the screen and hold. 2. The ruler appears. Both fingers must stay on the screen. 3. Slide the two fingers to measure. It shows meters, feet, nautical miles and bearing. Have the area on screen first; the ruler disappears if you move the camera. 4. Lift your fingers to finish. The ruler is only accurate on the ground. ## 3. Getting Started ### 3.1 First Steps URL: https://infiniteflight.com/guide/scenery-editor-manual/3.-getting-started/3.1-first-steps **3.1.1 Airport information resources** - www.airmate.aero - www.airnav.com (US and Canada only) - www.ead.eurocontrol.int (charts for European airports) - https://erau.libguides.com/UAS/eAIP (list of national AIPs) - www.faa.gov/air_traffic/flight_info/aeronav/Aero_Data/Airport_Data (charts for US airports) - www.gcmap.com, www.opennav.com, www.rocketroute.com - Coordinate format converter: www.earthpoint.us/convert.aspx **3.1.2 Opening the Scenery Editor** 1. Open Infinite Flight and select "Scenery Editor". 2. Choose the airport, select any runway or parking position, tap "Ok", then "Open". 3. For a new airport (or one with no IFC thread yet), a topic is created automatically in the Scenery Editor category (https://community.infiniteflight.com/c/scenery-editing/editors/52). Changelogs of each uploaded version are added to the thread automatically. All communication about an airport must stay in its thread. 4. Your first upload assigns the airport to you, so others cannot upload to it. ### 3.2 Airport Properties URL: https://infiniteflight.com/guide/scenery-editor-manual/3.-getting-started/3.2-airport-properties **3.2.1** Steps (must be followed): 1. Tap "File > Airport Properties". 2. The properties show on the right. 3. Tap a property, enter the new value, tap "OK" (Frequencies work differently, 3.2.3). 4. Some properties are pre-filled. Editors must make sure they are correct and fill in any missing ones. **3.2.2 Properties** - ICAO: four-letter code (for example KSFO, EGLL). Should not be changed; it can break the airport saving system. If it must change (real airport changed code), the airport must be released with the new code before more drafts are made. Closed airports must not be used to create new airports in a different location. - Elevation: airport elevation in meters. - Name: airport name. - Spoken Name: name spoken in the app. - City: city the airport mainly serves (can differ from location; KJFK = New York, not Queens). - Country. - State: state or equivalent (such as county). - IATA Code: three letters (for example SFO, LHR). - FAA Code: three to five alphanumeric characters, USA only (usually similar to IATA). - Airport Class: Alpha to Echo. - Latitude / Longitude: position of the airport icon. Use official ARP coordinates when available. - Frequencies: if none are added, a CTAF is generated automatically. - Taxiway Routes Available: orange tick when on. Must be on for the ATC taxiway network to be available to controllers and pilots. - Jet Bridges Available: orange tick when on. Must be on for animated jet bridges to be available to pilots, but only after jet bridges are added and usable (11.4.1). **3.2.3 Frequencies** (steps must be followed) 1. Tap "+" next to "Frequencies". 2. Current frequencies show below. Tap "+" to the left of a frequency to open its properties. 3. Change Frequency Type, Name, Frequency and Spoken Name like other properties. 4. Tap "-" to the left of the frequency to close it. 5. To delete a frequency, tap "-" on its right. 6. To add a frequency, tap "+" at the bottom right below all frequencies. ### 3.3 Airport Boundary URL: https://infiniteflight.com/guide/scenery-editor-manual/3.-getting-started/3.3-airport-boundary **3.3.1** The boundary is the light green line around the airport. Terrain inside it is always completely flat; outside it follows real-world topography. - All objects must be inside the boundary. Only exception: airport equipment such as the localizer antenna. Such objects must be properly aligned with the terrain. - Floating or submerged buildings/objects may be too close to the boundary. Move the boundary, or move them slightly inward. **3.3.2 Editing the boundary** A changed boundary shows in the app only after a navigation database update. Editors should not add new buildings/objects in the new area until that update. 1. Tap on or near the green line and select "airport boundary". (The option may not show; the bottom left of the screen shows what is selected.) 2. Tap "Modify Shape" (turns amber). 3. Nodes appear. Tap a node to select it (turns magenta). 4. Tap, hold and drag the center circle to move the node. 5. Tap "Insert Point" to add nodes. ## 4. Satellite Imagery ### 4.1 Satellite URL: https://infiniteflight.com/guide/scenery-editor-manual/4.-satellite-imagery/4.1-satellite **4.1.1** Satellite imagery helps editors build accurate airports. The recommended program is SASPlanet (download: https://gisenglish.geojamal.com/2018/06/download-sas-planet-nightly-all.html). It exports orthophotos from sources such as Google, Bing or Yandex. Downloads are zipped (extract with Windows Explorer). - SASPlanet runs only on Windows and Linux. macOS users must ask other editors for orthophotos. - Imagery can be distorted; straight lines can look warped. Use judgement to avoid unrealistic bends. **4.1.2 Installing SASPlanet** (should be followed) 1. Right-click the .zip and extract. 2. Choose the extract location. 3. Done; no further installation. **4.1.3 Zoom levels** | Zoom | Quality | Notes | |---|---|---| | z22 | Commercial | Commercial use only, not available | | z21 | High | Best quality from public sources | | z20 | Good | z20 or higher should always be used when available | | z19 | Marginal | Can be enough if nothing better exists | | z18 or lower | Poor | Should not be used | **4.1.4 Checking zoom availability** 1. Click "Cached tiles map" (5th icon from the left, silver/black circle) and tick the zoom level. 2. Clear tiles = available. Grey tiles = not available. Compare sources for the newest and best images. If an airport has low-quality imagery or large construction sites, consider postponing it until better imagery exists. ### 4.2 Exporting Imagery URL: https://infiniteflight.com/guide/scenery-editor-manual/4.-satellite-imagery/4.2-exporting-imagery **4.2.1 Steps** 1. Open SASPlanet. 2. Navigate to the area (zoom and left click). 3. Select "Maps" and choose the map. Pick the best and most recent source; compare with recent charts or known construction to judge which is newer. 4. Select "Polygonal Selection" in the "Selection Manager" button (2nd icon from the left), or "Operations > Selection Manager > Polygonal Selection". 5. Zoom and right-click to move around. Each left click places a node (the pop-up lets you delete the previous node). 6. Place nodes around the area. Follow the airport boundary with an extra margin; tiles make diagonal edges zig-zag, so a tight outline cuts off parts of the airport. 7. Click the green tick in the pop-up. 8. In the "Selection Manager" pop-up, select the zoom level(s) (4.1.3, 4.1.4). 9. Click "Start". A progress pop-up shows. 10. When "The task is completed!" shows, click "Quit". 11. Go to "Operations > Selection Manager > Last Selection" and open the "Stitch" tab. 12. Set these before clicking "Start" (must): - Output Format: JPEG (same quality as PNG, but compressed: smaller and better performance). - Save To: your output folder. - Map: same source as the download. - Zoom: same zoom as the download. - Projection: "Geographic (Latitude/Longitude) / WGS84 / EPSG: 4326" recommended. - Quality: 50%. If the file must be smaller, use a lower zoom (z20 instead of z21). - Create Georeferencing file: tick ".kml". - Split Image: see 4.2.2. 50% quality looks almost the same as 100% and is about 8 times smaller (example: 450 MB at 100% vs 70 MB at 50%). This does not allow a larger area: in the app, images are converted to BMP, so both examples become 2.6 GB of data. 13. Delete all images of white tiles in the output folder. The device limit depends on the converted (BMP) size, not the zip size. A 213 MB file at 95% can work while an 80 MB file at 50% can exceed the limit. Partly white tiles are small as JPG but full size as BMP, so remove empty tiles. 14. Select all remaining files INSIDE the output folder and compress them to ".zip". If you zip the folder itself, the imagery will not open in Infinite Flight. Keep one image set under 400 MB (split further if needed; rare, and should never happen with z20). 15. Send the .zip to your device by email or a cloud service such as Google Drive. **4.2.2 Split image** Splitting makes files easier to import and improves performance. 1. Read "Number of Tiles" in the "Stitch" tab. 2. Take the first number, divide by 100, multiply by 15, round UP. Enter it next to "Horizontally". 3. Do the same with the second number (after the x) and enter it next to "Vertically". Example: 60 x 66 tiles. 60/100 x 15 = 9. 66/100 x 15 = 9.9, rounded up to 10. Horizontally = 9, Vertically = 10. ### 4.3 Importing Imagery URL: https://infiniteflight.com/guide/scenery-editor-manual/4.-satellite-imagery/4.3-importing-imagery **4.3.1** 1. Tap "Satellite" (management buttons). 2. Tap "Import Imagery". 3. Find the files on your device. Import can take a few minutes. No other actions are possible during import. ## 5. Runways ### 5.1 Editing Runways URL: https://infiniteflight.com/guide/scenery-editor-manual/5.-runways/5.1-editing-runways Runway markings are generated automatically from the runway properties (5.2). For taxiway markings such as runway turning points or crossing taxiways, see 7.1. **5.1.1 Creating a runway** 1. Tap the area where the runway goes. 2. Tap "Object > Create Runway". The runway is placed at the cursor and ShapeEditing mode starts automatically. 3. Move the nodes to match the imagery. You cannot add or delete runway nodes. Threshold positions must match official documentation so approach procedures line up. If the new runway has ILS IRL, it must also have ILS in Infinite Flight: open a Reviewer ticket in the IFAET Discord server and tell them about the new runway with ILS. **5.1.2 Editing an existing runway** 1. Select the runway by tapping on or near it (pick from the drop-down list if several items are close, or use the rectangle selection tool). 2. Tap "Modify Shape". 3. The nodes appear. 4. Tap a node (turns magenta) or rectangle-select nodes. 5. Tap, hold and drag to move. Thresholds must match official documentation. 6. Tap "Modify Shape" again to finish (you cannot edit other objects until you do). If the runway has ILS IRL, the ILS properties must also be changed: open a Reviewer ticket in the IFAET Discord server. **5.1.3 Moving or rotating a runway** 1. Select the runway (tap or rectangle selection). 2. Pick it from the drop-down if needed; its name shows when selected. (If you just created it, tap "Modify Shape" to leave shape mode and the runway stays selected.) 3. Two circles and a compass rose appear. Center circle: drag to move. Outer circle: drag to change orientation. If the runway has ILS IRL, the ILS moves with the runway, as long as the ILS was not modified separately. **5.1.4 Deleting a runway** 1. Select the runway (tap or rectangle selection). 2. Pick it from the drop-down if needed; its name shows. 3. Tap "Delete Selection". ### 5.2 Properties URL: https://infiniteflight.com/guide/scenery-editor-manual/5.-runways/5.2-properties **5.2.1** Select the runway (drop-down if needed; name shows), open the "Properties" tab, change values. Changes do not show immediately: tap "Runways" in the "View" menu twice to refresh. - Runway: group with markings, lights, etc. (5.2.2). - Latitude / Longitude: should not be changed; does not move the runway. - Altitude: meters, inherited from the airport elevation (3.2.2). Should not be changed. - Name: format "(lower RWY end ID)[L/R/C/T]-(higher RWY end ID)[L/R/C/T]". Add L/R/C/T only if the real identifier has it. Examples: 09-27, 08R-26L, 18C-36C, 03T-21T. **5.2.2 Runway group** - Width: meters. - Surface: must follow airport documentation, not imagery color (a bright asphalt runway that looks like concrete must still be asphalt). - ShoulderSurface: concrete or asphalt; same documentation rule. - HasEdgeLights: must follow airport documentation. - HasCenterlineLights: must follow airport documentation. - RunwayEnds: two runway end groups (5.2.3). - Length: meters, read only; calculated from the distance between the two nodes. **5.2.3 RunwayEnds** (two groups with the same fields; values can differ) - Overrun: meters (5.2.4). - DisplacedThreshold: meters (5.2.4). - Approach Lights: must follow airport documentation. - Markings: runway marking type. - Touchdown Lighting: not yet used in Infinite Flight, but must follow airport documentation for future use. - REILType: Runway End Identifier Lights type; must follow airport documentation. - Location: coordinates of the runway end; should not be changed. - Identifier: format "(RWY ID)[L/R/C/T]"; add L/R/C/T only if the real identifier has it. If you change the identifier of an ILS runway end, open a Reviewer ticket in the IFAET Discord server. After changing identifiers, save and restart the app. The taxiway network checker will not work until the database is updated (usually just before an app update). - Glideslope / Localizer: must not be set. If a runway is missing ILS, open a Reviewer ticket in the IFAET Discord server. - Heading: should not be changed here; move the runway nodes instead (5.1.2). **5.2.4 Runway end position** - Put the runway end point where the runway physically begins (shown as a red dot in the page diagrams). - Overrun: area marked with yellow chevons, not for normal aircraft use (emergency only). - Displaced Threshold: the threshold is further down the runway because of landing restrictions; the area before it can be used for takeoff. Put the runway end point at the start of this area, then set the DisplacedThreshold property. ### 5.3 Dos and Don'ts URL: https://infiniteflight.com/guide/scenery-editor-manual/5.-runways/5.3-dos-and-donts DO: - Notify reviewers if you modified a runway that has ILS. - Add X's only to taxiways and runways that are permanently closed. DO NOT: - Add runway markings, including markings for displaced thresholds and blast pads. - Add X's to temporarily closed taxiways and runways. ## 6. Pavements ### 6.1 Editing Pavements URL: https://infiniteflight.com/guide/scenery-editor-manual/6.-pavements/6.1-editing-pavements You must use "Snap" whenever you connect buildings, lines or pavements (2.1.4). **6.1.1 Creating pavement** 1. Tap "Pavement > Create Pavement". 2. Tap to place the first node. 3. Keep tapping; with three or more nodes a pavement section is created. Angle snapping helps make exact angles. **6.1.2 Editing a pavement shape** 1. Select the pavement (drop-down if needed, or rectangle selection). 2. Tap "Modify Shape". 3. The outline turns magenta and nodes appear. 4. Tap a node (turns magenta) or rectangle-select nodes. 5. Tap, hold and drag to move. 6. Tap "Modify Shape" again to finish (needed before you can edit other pavements). **6.1.3 Moving or rotating pavement** 1. Select the pavement. 2. Pick it from the drop-down if needed; outline turns magenta. (If just created, tap "Modify Shape" to leave shape mode; it stays selected.) 3. Center circle: drag to move. Outer circle: drag to rotate. **6.1.4 Copy and paste** 1. Select the pavement (outline magenta). 2. Tap "Edit > Copy". 3. Tap where the copy goes (white cursor), adjust, tap "Paste". **6.1.5 Deleting** Select the pavement (outline magenta), tap "Delete Selection". **6.1.6 Creating a hole** 1. Select the pavement (outline magenta). 2. Tap "Modify Shape", then "Create Hole". 3. Tap inside the pavement to place the first node. 4. Keep tapping; with three or more nodes a hole is created. Add more nodes to shape it. ### 6.2 Properties URL: https://infiniteflight.com/guide/scenery-editor-manual/6.-pavements/6.2-properties **6.2.1** Select the pavement, open the "Properties" tab: - Surface Type: must be a close match to the imagery (bright asphalt that looks like concrete must still be asphalt). - Texture Orientation: 0 to 360, rotates the texture grain (relative to true north). Use it to align texture with taxiways. "Auto Texture Orientation" also does this (2.1.2). - Latitude / Longitude: should not be changed. - Altitude: meters; based on airport elevation; should not be changed. - Name: optional; labels help you tell pavements apart. ### 6.3 Dos and Don'ts URL: https://infiniteflight.com/guide/scenery-editor-manual/6.-pavements/6.3-dos-and-donts DO: - Add roads and taxiways as shown in charts and imagery. - Add grass pavement where it is used for aircraft movement. - Add public roads in areas prominently visible from aircraft movement areas. - Add concrete pavement under hangar buildings (other materials allowed if present IRL). - Keep the number of connecting nodes between taxiway pieces to a minimum. - Add pavement patches on top of the surrounding pavement (no hole underneath). Exception: a more performance-efficient way (fewer nodes) is acceptable at the Reviewer's discretion, for example snapping a patch to the pavement edge instead of on top, or a hole underneath. - Keep pavement pieces a manageable size (no single piece for the whole airport). DO NOT: - Add public roads that are invisible or irrelevant to pilots. - Add grass or green pavement for lawns not used as movement areas. - Use concrete or snow pavement to imitate bright asphalt. - Build pavement areas from many small segments without need. - Use pavement to make text or symbols on the ground. - Add "easter eggs" of any type. - Use too many nodes for edges. Maximum 2,500 nodes per pavement piece. - Recreate broken pavement. - Create holes in pavement just for buildings. ## 7. Taxiways ### 7.1 Editing Taxiways URL: https://infiniteflight.com/guide/scenery-editor-manual/7.-taxiways/7.1-editing-taxiways You must use "Snap" whenever you connect buildings, lines or pavements (2.1.4). **7.1.1 Creating a taxiway line** 1. Tap "Taxiways > Create Taxiway Line". 2. Tap to place the first node. 3. Keep tapping; the line continues between nodes. Tips: avoid long straight sections with no nodes near gates (causes auto pushback issues). Use the walls of a shipping container to help make 90 degree corners. **7.1.2 Editing a line** 1. Select the taxiway (drop-down if needed, or rectangle selection). 2. Tap "Modify Shape". The line turns magenta and nodes appear. 3. Tap a node (magenta) or rectangle-select; tap, hold and drag to move. 4. Tap "Modify Shape" again to finish (needed before you can edit other taxiways). If a line has too many nodes, use "Line Options > Simplify". **7.1.3 Moving or rotating a taxiway** Select it (drop-down if needed; magenta). Center circle: drag to move. Outer circle: drag to rotate. (If just created, tap "Modify Shape" to leave shape mode; it stays selected.) **7.1.4 Copy and paste** Select the taxiway, tap "Edit > Copy", tap where the copy goes (white cursor), adjust, tap "Paste". **7.1.5 Deleting** Select the taxiway, tap "Delete Selection". **7.1.6 Splitting lines** Each line has only one set of properties, so a property change needs a new line. Recommended: draw one long line, then split it. 1. Tap the line, then "Modify Shape". 2. Select the node to split at. 3. Tap "Split Line". 4. For a turn, split at the node where the line starts to break off. Tip: set the line properties to what applies at node "0". Split where the properties change; that node becomes the new "0"; set properties for the rest. Repeat along the line. **7.1.7 Reverse a line** Reverses node order (0,1,2 becomes 2,1,0). Tap the line, "Line Options", "Reverse". **7.1.8 Simplify a line** Reduces nodes (for example on curves) while keeping the shape. Tap the line, "Line Options", "Simplify". **Straighten a line** (numbered 7.1.7 in the source) Tap the line, select all nodes that must be in a straight line, "Line Options", "Straighten". **7.1.9 Change line layer order** For a line that must be painted on top of another (for example runway hold lines on top of taxiway centerlines): 1. Tap the line. 2. Open the "Pavements" tab on the left. 3. Tap "Move to Top" or "Move Up". ### 7.2 Properties URL: https://infiniteflight.com/guide/scenery-editor-manual/7.-taxiways/7.2-properties **7.2.1** Select the taxiway (outline magenta), open the "Properties" tab: - Category: A to F. Set the category of aircraft that can taxi on it (1.3). - Direction: Two Way, Forward, Backward, None (7.2.6). - Line Type: see 7.2.2. - Taxiway Network Usage: Unknown, Aircraft, None (7.2.3). - Lights Type: see 7.2.2. - Latitude / Longitude: should not be changed. - Altitude: meters; based on airport elevation; should not be changed. - Name: all taxiways must be named correctly (for example "A" for Alpha) (7.2.4). **7.2.2 Line types, light types and categories** Lines must only be added where they exist IRL (details are usually in the Airport Operational Information or ground charts). Correct layering must be followed (for example runway hold lines on top of the taxiway centerline). Line types: - Nothing. - Taxiway Centerline: centerlines and stop bars. Letters must not be drawn. - Taxiway Boundary Broken Line: gate centerlines or intermediate holds. - Double Boundary Line: taxiway edges. - Runway Hold: entry to runways. The broken lines must face the runway. - Non Runway Hold: extra hold line for intermediate holds or to separate aprons/taxiways (US). - ILS Hold: areas that must be kept clear during CAT II/III approaches. - Taxiway Centerline (second variant): yellow line combined with broken lines, marking an area close to the runway hold. - Widely Separated Yellow Line: sometimes used for taxiway and parking position centerlines. - Widely Separated Broken Double Yellow Line: broken taxiway edge line, for an edge that can be crossed (for example to enter parking positions). - Roadway Marking: solid white line for roadways and stand outlines. - Roadway Marking Checkerboard: roadways crossing active taxiways. - Roadway Centerline: broken white lines for gate outlines and road centerlines. - High contrast versions (with a black outline, usually on concrete or other bright surfaces; choose normal or high contrast from the imagery): High Contrast Taxiway Centerline, High Contrast Taxiway Boundary Broken Line, High Contrast Double Boundary Line, High Contrast Runway Hold, High Contrast Non Runway Hold, High Contrast ILS Hold, High Taxiway Centerline 2, High Contrast Widely Separated Yellow Line, High Contrast Widely Separated Broken Double. - Transparent Taxiway: taxiway connections needed for a correct taxiway layout. Light types (only add lights that exist IRL): - None. - Taxiway Centerline Lights: green; usually not on gate lines. - Taxiway Edge Lights: blue; usually not on lighted aprons. - Hold Lights: amber, on hold lines/stop bars. - Pulsating Amber Lights: pulsating amber, on hold lines. - Runway Safety Zone Centerline Lights: orange/green centerline lights on taxiways that access the runway, usually from the runway centerline to the runway hold line. - Critical Zone Lights: red, mark taxiway limits at critical areas (dead ends, construction sites, etc.). Taxiway category minimum widths (meters): A 7.5, B 10.5, C 18, D 23, E 23, F 25. **7.2.3 Taxiway Network Usage** Identifies lines that ATC can use in instructions (hold lines, centerlines). - Unknown: not in use. - Aircraft (part of network): centerlines and runway hold lines. Only the runway hold lines closest to the runway must be set to "Aircraft". - None (not part of network): stop bars, taxiway edge lines, roadways, gate outlines, runway turnaround lines and other hold lines. All other hold lines, including ILS holds, must not be in the network. **7.2.4 Naming lines** The in-app keyboard ("Taxiways > Keyboard") is the best tool: it remembers recent entries and defaults to upper case. 1. Select the line (drop-down or rectangle selection). To rename several lines at once, use "Edit > Selection Add" and select them all. "Freeze Non Taxi Lines" helps you select only "Aircraft" lines (unfreeze: "Edit > Unfreeze All"). 2. Name it with the keyboard, or "Properties > Name". Naming rules: - Named taxiway centerlines: must match the charts exactly (A, B, etc.). - Unnamed taxiway centerlines / parking positions: must be "APRON". "Taxiways > Set as Apron" does this for all selected lines. - Hold lines: must be named as the runway they serve (for example 04R-22L). Real hold names can also be added (for example PLUTO at EGLL). "Taxiways > Auto Assign Holds" assigns all holds to the nearest runway (may be wrong where runways are close together). - Runway turning points: must be named as on charts. If not listed, use "TURN[RUNWAY]", for example "TURN18L". Only lines with usage "Aircraft" are recognized; lines with "Unknown" or "None" need no name. "Select Invalid Taxilines" shows lines with invalid names in magenta. **7.2.5 Naming curves between taxiways** Name curves by thinking about how controllers and pilots use the labels and how the taxi route would look drawn on a map. Either the major or the minor taxiway's name can be used, if ATC would give the correct routing for any route. (The page shows two example diagrams: one with taxiways C, B and A; one with taxiways V, VB, S, VA and T.) **7.2.6 Taxiway direction** All taxiways must be "TwoWay" unless: - It is a self-positioning stand (for example at EGLC). - A runway exit has no hold line. - The taxiway is marked one-way or has a no-entry sign (not when the direction depends on runway configuration). Forward follows node numbers from 0 upward (0-1-2). Backward is the reverse (2-1-0). ### 7.3 Taxiway Network URL: https://infiniteflight.com/guide/scenery-editor-manual/7.-taxiways/7.3-taxiway-network **7.3.1** The taxiway network lets controllers send ATC taxi instructions using generated paths. The network must be built before you upload an airport for review. **7.3.2 Taxiway connections** Invisible lines that join taxiways that are not physically connected, so the system has a continuous path from runway to stand and back. Required for: - Start locations not physically connected to a taxiway line. - Runway crossings with no physical line straight across the runway (not counting "line up" lines). - Self-positioning stands with no physical line back to the taxiway after parking. - Pushback points with no physical line to the stand or main taxiway centerline. Connections may overlap other lines if this reduces the node/line count. Editors should make connections look like real taxiway lines would, because they show on in-app airport maps. **7.3.3 Creating connections** (must be followed) 1. Tap "Taxiways > Create Connection". 2. Tap to place the first node. 3. Keep tapping; the line continues between nodes. Use "Snap". **7.3.4 Building the network** After naming all taxiways and hold lines, setting network usage and drawing all connections, build the network. If you recently changed or added runway identifiers, the checker fails until the main airport database is updated (just before a release). For airports with no runway hold lines, add temporary hold lines to test the rest of the network, then remove them before you upload for review. 1. Tap "Taxiways > Build Layout" (can take up to 15 minutes at a large airport). 2. Tap "Taxiways > Check Layout". Each start location lists all runways, color coded: - Red: no valid path to the runway edge. - Orange: valid path to the hold short line, but not to the runway edge. - Green: valid path to the runway edge. 3. If a runway shows red, recheck the routing. Editors must not fix issues by renaming lines to "APRON" or by splitting long lines into small pieces (unless taxiway properties require it). 4. After changes, rebuild and recheck (steps 1 and 2). 5. Make sure "File > Airport Properties > Taxiway Routes Available" is ticked (orange). The network does not work in flight mode until it is ticked. Your local save of the network is used when you control. The training/IFATC servers are useful for troubleshooting routing. ### 7.4 Dos and Don'ts URL: https://infiniteflight.com/guide/scenery-editor-manual/7.-taxiways/7.4-dos-and-donts DO: - Add all visible taxiway lines and gate outlines. - Add roads to aprons. - Add stop bars at stands. - Add hold lines and assign them to their runways. - Add lights to taxiway lines where present IRL. - Set correct aircraft categories and taxiway names from official documentation. - Add X's only to permanently closed taxiways and runways. - Add relevant markings such as arrows with taxiway line paint (not gate number outlines; gate numbers cannot be added in the app). - Layer hold lines on top of taxiway centerlines. DO NOT: - Add text with lines. - Fill areas (arrows, etc.) with lines. - Add hashed areas. - Add lines perpendicular to taxiway edge lines. - Make up markings. - Add lights to lines without lighting IRL (especially centerline lights on stand lines unless official documentation says so). - Add X's to temporarily closed taxiways and runways. - Add runway markings, including displaced threshold and blast pad markings. - Add "easter eggs" of any type. - Use too many nodes for curves. - Stack lines on top of each other to create new line types. - Draw each car parking space (only the outline of each block is allowed). ## 8. Start Locations ### 8.1 Editing Start Locations URL: https://infiniteflight.com/guide/scenery-editor-manual/8.-start-locations/8.1-editing-start-locations New or moved start locations show in the app only after a navigation database update. **8.1.1 Showing start locations** Recommended before you place objects near stands. 1. Tap "View". 2. Tap "Start Locations" (turns amber). 3. Each start location is a blue dot. Zoom in to see: Identifier (terminal and stand number), Type (Gate, Tie-down, Misc, Hangar), Gate Size (maximum aircraft category), Ramp Operation Type (GA, Airline, Cargo, Military). **8.1.2 Placing a start location** 1. In the right panel, the "Library" tab must be selected; scroll the list. 2. Tap "Start Location" under "Airport Items". 3. Tap the position (you may need to press and hold) to place a white cursor, adjust, tap "Add Object". Tip: freeze lines and pavements ("Edit > Freeze All Lines / Freeze All Pavements") so they are not selected by accident. **8.1.3 Position and orientation** The blue circle is where the aircraft nose wheel spawns. Match the real position. The orientation must exactly match the gate centerline. 1. Tap on or near the blue circle (or rectangle selection). 2. The circle turns magenta; pick from the list if several objects are close. 3. Center circle: drag to move. Outer circle: drag to rotate. **8.1.4 Copy and paste** Select the start location (magenta), tap "Edit > Copy", tap the new position (press and hold if needed) for a white cursor, adjust, tap "Paste". Freezing lines and pavements helps. **8.1.5 Deleting** Select the start location (magenta), tap "Delete Selection". ### 8.2 Properties URL: https://infiniteflight.com/guide/scenery-editor-manual/8.-start-locations/8.2-properties **8.2.1** Select the start location (magenta), open the "Properties" tab: - Terminal: must be the general area of the spawn (Terminal, Concourse, GA, Cargo, Apron, FBO, etc.). - Ramp Size: largest aircraft category that can spawn and park there (1.3). - Ramp Start Type: Gate, Tie-Down, Hangar or Misc. - Ramp Operation Type: primary operational use. - Equipment Type: not required at this time. - Gate Stops: stop positions for different aircraft types (8.2.2). - Stand Guidance: loaded automatically when the app launches in flight mode. - Latitude / Longitude: can be edited to place the spawn precisely (for example from chart coordinates). - Altitude: meters; should not be changed. - Name: format such as "Gate/Stand [alphanumeric/number]" recommended. Terminal names (for example T1) must not be in "Name". **8.2.2 Gate stops** (steps must be followed) 1. Tap "+" next to "Gate Stops". 2. Existing gate stops show below (blank if none). Tap "+" below on the right to add one. 3. "No Types Specified" appears. Tap "+" on its left to expand it (aircraft types and offset). 4. The symbol changes to "-"; tap to collapse. 5. When expanded, tap "Aircraft Type" to add types from a list. 6. Tap "Offset" to set the distance in meters from the start location to where those types stop. 7. The new gate stop shows with its aircraft types. 8. After adding any gate stop, also add a gate stop with no type at 0 m offset. The start location should show "Any". Without it, jet bridges will not work at that stand. Tip: if several aircraft share an offset, put them all in one gate stop. ## 9. Buildings and Facades ### 9.1 Editing Buildings URL: https://infiniteflight.com/guide/scenery-editor-manual/9.-buildings-and-facades/9.1-editing-buildings Buildings are made of building parts. Each part has at least 2 nodes and a height in meters. A roof can be added if a part has at least 3 nodes forming at least one corner. Other properties: name, enclosed ("Closed"), height (9.2). Each part can have one texture (9.3). Stacking parts is "layering" and makes complex buildings (9.4). You must use "Snap" when you connect buildings, lines or pavements. **9.1.1 Creating a building part** 1. Tap "Building Parts > Create Building Part". 2. Tap to place the first node. 3. Keep tapping. With 2 nodes a wall is created; add nodes for more walls. 4. Walls are visible from one side only. If walls look "inside out", tap "Line Options > Reverse Points" to reverse the numbering. 5. To enclose the part, tick "Closed" in properties; a wall joins the last node to the first. Tip: Angle Snapping (Right Menu > Snap > Angle Snapping On/Off) snaps in 5 degree steps. **9.1.2 Editing a building shape** 1. Select the building (drop-down or rectangle selection). Wall outlines turn red. 2. Tap "Modify Shape"; the part's nodes show. 3. Tap a node (magenta) or rectangle-select; tap, hold and drag to move. 4. Tap "Modify Shape" again to finish (needed before you edit other buildings). Tip: a "judder" in building rendering when you move around means the building is duplicated; select and delete one copy. **9.1.3 Moving a building** Select it. (If just created, tap "Modify Shape" to leave shape mode; it stays selected.) Three circles and a compass rose appear: - Center: drag to move. - Top (just above center): adjust elevation/altitude. - Outer: drag to rotate. **9.1.4 Copy and paste** Select the building, tap "Edit > Copy", tap where the copy goes (white cursor), adjust, tap "Paste". **9.1.5 Deleting** Select the building, tap "Delete Selection". **9.1.6 Importing buildings from OSM** OSM buildings are placed automatically but may not line up with pavements and may need moving. They edit like manual buildings. 1. Tap "File > Download OSM". If you deleted buildings by mistake after an earlier download (and saved), use "Download OSM at Cursor" instead; it downloads only within 200 m of the cursor and avoids duplicate buildings. 2. Delete all buildings outside the airport boundary (9.1.5). Save often ("File > Save") and upload ("File > File Manager > Upload [as Draft/for Review]"). ### 9.2 Properties URL: https://infiniteflight.com/guide/scenery-editor-manual/9.-buildings-and-facades/9.2-properties **9.2.1** Select the building part, open the "Properties" tab: - Height: meters. Tools such as "3D Path" in Google Earth help get accurate heights. Keep proportions (a hangar that holds a 777 must be tall enough) (9.2.2). - Roof Orientation: "+/-" to rotate the square roof pattern to match the building edges. "Building Parts > Auto Texture Orientation" also works (may need manual adjustment). The page also calls this the "Auto Roof Texture" button. - Roof Depth: meters, value between 0 and 1. Adds a roof ledge with a height offset from the main roof. Only on the top level of a building. - Roof Type: - "None": must be used for every layer except the top layer (or the bottom layer of a floating building such as a bridge). - "Flat": building without a ledge; roof depth must be 0. - "Flat with Ledge": building with a ledge; roof depth adjustable. - Closed: joins the last node to the first with a wall. Use this instead of an extra node. Should not be used on parts with only 2 nodes. - Latitude / Longitude: should not be changed. - Altitude: meters, measured at the bottom of the building. "Object > Auto Altitude" puts it on top of the building below (good for layering). - Name: name layers clearly to help layering (for example "Lvl 1 Terminal 1"). **9.2.2 Minimum hangar height** | Cat | Aircraft (as listed on this page) | Min height (m) | |---|---|---| | A | CC19, C172, F16, F18S, F22, SPIT, SR22, TBM9 | 4.5 | | B | A10, CL35, CRJ2/7, C208, F14, P38 | 6.5 | | C | A318/319/320/321, BCS3, B712, B737/738/739, CRJ9/X, DH8D, E175/190 | 18 | | D | B752, B763, C130, C17, DC10, MD11 | 19 | | E | A332F/333/339, A346, A359, B742/744, B77L/77W/772, B788/789/78X | 25 | | F | A388, B748 | 27 | ### 9.3 Editing Facades URL: https://infiniteflight.com/guide/scenery-editor-manual/9.-buildings-and-facades/9.3-editing-facades **9.3.1** Each building part can have only 1 facade ("face"). Use layering for different faces (9.4). **9.3.2 Assigning a facade** 1. Select the building (drop-down if needed). 2. Tap "Building Texturing" in the right panel. 3. Tap the bottom-left button to choose a building style; scroll and tap to view its faces. 4. Scroll the list on the right to see the faces in that style. 5. Select a face and tap "Assign". All walls of the selected part(s) change. Faces used in the current session show on the left of the panel; tap one and "Assign". ### 9.4 Layering URL: https://infiniteflight.com/guide/scenery-editor-manual/9.-buildings-and-facades/9.4-layering Layering uses several building parts to make one building, because each part supports only one texture. Example: a window in a wall is made from separate parts around and for the window. **9.4.1 Suggested method** (other methods are fine) 1. Set the building height (9.2.1). For hangars use the minimum hangar heights (9.2.2). For terminals and other complex buildings, make several levels. Every level that is not the top floor should have roof type "None". If the lowest layer floats (for example a bridge), its floor shows only after the editor restarts; no extra part is needed. 2. For more floors, copy and paste the first layer (9.1.4). 3. Tap "Object > Auto Altitude" to raise the copy to the roof height of the layer below (or set altitude manually). The lower layer must end exactly where the next layer starts, so facades do not overlap. This also applies to pillars under floating buildings. 4. Use external sources to shape the layers like the real building. For passenger terminals, at least three layers are recommended. 5. After each new layer, check that corners are snapped and layers are aligned. **9.4.2 Z-fighting** - The lower layer must end where the next layer starts (no overlapping facades). Also applies to pillars under floating buildings. - Overlapping building parts flicker in the app and must be avoided. No building parts should overlap. The same applies to roofs at the same height. - Remove any parts of building parts that will not be seen. ### 9.5 Dos and Don'ts URL: https://infiniteflight.com/guide/scenery-editor-manual/9.-buildings-and-facades/9.5-dos-and-donts DO: - Add buildings inside the airport boundary, plus prominent buildings outside the fence that pilots can see and that add to the airport's character. - Use layering to create custom facades. - Remove roofs of layers whose roof and floor the user cannot see. - Snap buildings to avoid gaps or overlap. - Use as few building parts as possible. - Remove all hidden wall sections. DO NOT: - Make sloped or vertical round shapes (roofs, walls, arches, ramps, anything) from layered buildings or building parts. - Add irrelevant buildings outside the boundary, or buildings pilots cannot see. - Build multi-story car parks from one building per floor. Use the car park texture. - Add "easter eggs" of any type. - Make numbers or letters out of buildings. - Use building parts to make open doors/windows. - Use "Closed" on 2-node building parts (it adds an extra wall). Building parts must only be used for buildings: roofs, walls, support pillars, hangar doors (open or closed). ## 10. Objects ### 10.1 Library URL: https://infiniteflight.com/guide/scenery-editor-manual/10.-objects/10.1-library **10.1.1 Objects in the Scenery Editor library** (by library category). Tip: you can use fewer objects by increasing scale (for example solar panels). - AC Units: Unit 1 (ground or rooftop); Unit 2, Unit 3, Unit 5 (rooftop only, must); Unit 4 (next to a wall or rooftop; raise altitude if above ground next to a wall); Unit 6, Unit 7 (must be next to a wall; altitude can be raised); Unit 8 (ground or rooftop); Large Unit 1, 2, 3 (rooftop only, must). Consider steel pipe to connect AC units. - Airports: - Beacon: set time to night (Settings > Time > Night) to see the white/green beacon light in the imagery and place the beacon at that spot. If no light is visible (it may be inside a building/tower, or the airport has none), a beacon should not be placed. - Electrical Equipment Building (see 10.4.2, 10.4.3). - Runway Guard Lights (see Holding Point Lights, 10.4.6). - Windsock: optional orientation and wind strength settings (10.3). - Antennas: ILS Localizer (10.4.2), ILS Glideslope (10.4.3), VOR and VOR (Small) (10.4.5). - ATC Towers: Custom Towers (only at the intended airport), Medium (Cab), Medium, Mobile, Small (Cab), Small. The "Free" camera starts at the tower view; pan down to place the tower exactly, and scale it so the cab is just at or below the camera. - Baggage: Baggage Cart (no more than 4 carts per tug), Baggage Tug & Cart, Baggage Tug, Belt Loader (any aircraft), Container LD3 Closed / LD3 Full / LD3 Open (widebody), Container LD3-45 Closed (narrowbody), Small Baggage Belt (regional aircraft only). - Containers (Baggage and Cargo): at stands, place containers on pallet dollies; on the ground only in cargo areas or away from stands. Raise container altitude by 0.4 for the dolly. - Blast Deflectors: Large Grey, Large Red, Small Grey, Small Red. - Buildings: Custom Buildings (only at the intended airport). - Cargo: Cargo/Pallet Loader, Container (Large), Container (Small), Pallet Dolly (optional: mix empty dollies and dollies with containers). - Construction: Crawler Crane, Excavator, Skid Steer Loader, Small Wheel Loader, Tower Crane; Steel Pipe 1-4 (1 and 2 can also connect fuel tanks or AC units); Steel Pipes 1-4. Construction equipment must not be used for temporary NOTAMs (anything out of date within 2 release cycles); it should be for large projects such as new terminals or runways. Objects must not be used to close taxiways or runways that are part of the taxiway network (controllers cannot see them on in-app maps). - Fences: Barrier Large/Medium Red, Barrier Large/Medium White, Chainlink Fence (End/Middle) (barbed wire must face outward from the airport), Chainlink Fence No Barb (End/Middle), Chainlink Gate, Concrete Block Grey 1/2, Concrete Block Yellow, Fence 3m, Fence 6m, Fence 12m, Wood Fence - New/Old/Pilar. For long fences, group 5-15 panels and copy-paste; more than about 20 panels makes joining hard. (See also model lines, 10.5.) - Fire Fighting: Aircraft Fire Trainer, Oshkosh Striker 4500 (Red), Oshkosh Striker 4500 (Yellow). No water cannon salutes at any airport without prior authorization. Optional: place a fire truck or two around the airport, not only at the fire station. - Fuel: Fuel Tank 1, Fuel Tank 2, Fuel Tank 500 Gal, Fuel Tank 12,000 Gal. Optional: connect with steel pipe. - Jetbridges (properties and animations: 11.3, 11.4): Base, Base (Glass), Connector, Connector (Glass), Double Connector, Double Connector (Glass), Glass End Section (Long), End Section (Long), Glass Section (Long/Medium/Short), Section (Long/Medium/Short/Extra Short). - Military (only at military airports, or military stands at mixed airports): Ammunition Trailer (Empty/Full), Fire Extinguisher, Military Fuel Truck, Military Tug, Pallet Loader, Sunshade. - Obstacles: Donut (do not use without prior authorization). - Other: Flood Lights (Large); Fuel Pump (Self Serve) (GA aircraft and vehicles); Generic Pole (for remote stands where stand guidance is on a pole, 11.2); Ground Power Unit (near the aircraft nose, outside the stand parking lines); Light (Small) (optional: several in the same spot with different orientations make one pole with several lights); Moritz; Race Pylon Checkerboard; Race Pylon Red; Silo. - Props: Runway Closure Sign (must only be used on runways permanently closed IRL that are not runways in the app; for example, not on the EGKK secondary runway, which is still used sometimes); Cone; Small Stairs (optional scale 0.6-0.8 for better proportion); Towbar (do not attach to a tug/vehicle or aircraft; keep outside stand parking lines; low end toward tug/terminal, high end toward aircraft). - Radars: Ground Radar, Primary Radar. - Roof: Ladder 2 (must be next to a wall; altitude is measured from the top of the object, so match it to the roof altitude); Walkway 1 (Long/Short/Steps); Walkway 2 (Steps); Walkway 3 (Long/Short). Two walkways, one flipped, give a guard rail on both sides. - Solar Panels: Flat 1-4 (rooftop only, must); Tilted 1-4 (ground or rooftop). - Stairs: Aircraft Maintenance Stairs, Air Stairs Medium, Boarding Ramp, Small Stair Car. - Stand Guidance: Safedock T1 (11.2). - Tugs: Best Tugs Echo, Best Tugs Sierra, Tug Large 1 (not with towbar), Tug Medium (not with towbar), Tug Medium 1. - Vehicles: Airport Bus, Ambulift, Catering Truck, CLT-8 Transporter, De-Icing Truck, Electric Fuel Truck, Fuel Truck (Large/Small), Lavatory Service Truck, Maintenance Lifter, Potable Water Truck, TLD Jet-16, Vehicle - Pickup (Red/Yellow, Yellow/Black, White), Vehicle - Van (Red/White, Yellow/Black, White), Various Sedans/SUVs (do not add too many in car parks inside the boundary). Use vehicles sparingly; vary and spread them. - Airport Items: Beacon, Landing Guidance System (10.4.4), Start Location (8.1.2), View Point (10.4.7). - Bundles: preset groups of objects for typical locations (for example "Remote Parking"). Custom bundles: 1. Add the objects (10.2.1). Buildings cannot be in bundles, and scale changes are not saved in bundles. 2. Tap, hold and drag to select all objects (white box); their blue dots turn magenta. 3. Tap "File > Save Selected as Bundle". 4. Name it and tap "OK". It shows under "Bundles" in the Library. 5. To share, select the bundle in the Library and tap "File > Share Selected Bundle". - Airplanes: aircraft types used as placeholders to check clearance when placing objects near parking positions. ### 10.2 Selection and Placement URL: https://infiniteflight.com/guide/scenery-editor-manual/10.-objects/10.2-selection-and-placement **10.2.1 Placing an object** 1. In the right panel, the "Library" tab must be selected; scroll the list. 2. Tap the object. 3. Tap the position (press and hold if needed) for a white cursor, adjust, tap "Add Object". Freeze lines and pavements ("Edit > Freeze All Lines / Freeze All Pavements") to avoid selecting them by accident. **10.2.2 Moving and orienting an object** 1. Tap on or near the blue circle at the object's center (or rectangle selection). 2. The circle turns magenta; pick from the list if several objects are close. 3. Three circles and a compass rose: Center = drag to move; Top (just above center) = adjust elevation/altitude; Outer = drag to rotate. **10.2.3 Copy and paste** Select the object (magenta), tap "Edit > Copy", tap the new position (press and hold if needed) for a white cursor, adjust, tap "Paste". **10.2.4 Deleting** Select the object (magenta), tap "Delete Selection". ### 10.3 Properties URL: https://infiniteflight.com/guide/scenery-editor-manual/10.-objects/10.3-properties **10.3.1** Select the object (blue circle turns magenta), open the "Properties" tab: - Scale: "+/-". Match real sizes (lighting, AC units, blast deflectors, etc.). Jet bridge scale must not be changed. - Orientation: "+/-". - Animations: shows if the object (for example a jet bridge) has built-in animations. - Latitude / Longitude: current position. - Altitude: meters, from the bottom of the surface you work from. Set manually or use "Object > Auto Altitude" (for example when layering). - Name: object name. ### 10.4 Technical Locations URL: https://infiniteflight.com/guide/scenery-editor-manual/10.-objects/10.4-technical-locations **10.4.1** Use airport charts (3.1.1) and satellite imagery to place runways, localizers, glideslopes and other important objects accurately. **10.4.2 Localizer** (imagery should be the primary source; distances are a guide) - When: only if the airport has an ILS and/or LOC-only approach. - Where: 1000 ft beyond the threshold at the opposite end from the approach (ILS for RWY36 = antenna at the RWY18 end). The threshold may be displaced: measure 1000 ft from the white piano-key markings, not from the end of the concrete. - Orientation: perpendicular to the runway, electrical box side facing away from the runway. - An extra red/white electrical box can be added. Its position varies; it is usually to one side of the LOC antenna with some distance between them (not right next to it, unlike the G/S antenna). Check imagery or photos. **10.4.3 Glideslope** (imagery should be the primary source) - When: only if the airport has an ILS approach. - Where: 750-1250 ft from the threshold at the approach end (ILS RWY36 = 750-1250 ft from the RWY36 threshold), and 250-650 ft from the runway centerline. Usually abeam the main touchdown zone markings. Check imagery for the side. - Orientation: white/grey aerials face the landing aircraft. - Place a red/white electrical box behind the G/S antenna. **10.4.4 Landing Guidance System (PAPI)** Lights near the touchdown zone that show the glidepath to the pilot. 1. Add the Landing Guidance System object (10.2.1). 2. The lights must be in line with the landing runway: use the circles (10.2.2) or the Properties tab (slider or "+/-"). 3. Also set: Runway Identifier (must match the runway number), Guidance Type, Glideslope. 4. Guidance Type must match the PAPI side: - VASI: TBD. - PAPI4L: 2 lights side by side in a row; only on the left side of the runway (if applicable). - PAPI4R: 2 lights side by side in a row; only on the right side of the runway (if applicable). - Space Shuttle PAPI: not used. - Tri Color VASI: TBD. - Runway Guard: not used. 5. Glideslope must match the real angle (default is usually 3 degrees). **10.4.5 VOR** - When: only for a co-located VOR (inside the airport boundary). - Where: find the rough position on charts, then the exact spot on satellite imagery. Imagery also shows the size: large VOR (bigger, many antennas from the center) or small VOR (compact, fewer antennas). - Orientation: not important. **10.4.6 Holding point lights** (Runway Guard Lights object) - When: at most airports. - Where: each side of a runway holding point, in line with the yellow holding point lines. - Orientation: facing the aircraft, not the runway. **10.4.7 Tower view points** The ATC tower view (camera options: https://infiniteflight.com/guide/getting-started-guide/pilot-user-interface/cameras) comes from a "View Point" object (Airport Items). **10.4.8** The view point must be inside the center of the 3D tower object. With several towers, each tower must have a view point. Only the first view point in the object list is used in the app, so the first view point added must be in the main ATC tower. **10.4.9** For every view point, editors must switch the camera (2.1.5) to check it is correctly inside the tower. Adjust its altitude to match the tower's view height (10.3.1). **10.4.10 Tips** - Look for airport photos to help place objects. - Ground charts often show windsocks, towers, cargo areas and fire stations. - Cross-check several satellite maps. - The localizer and glideslope guidance above is for standard approaches only. Special cases such as LOWI exist; ask if in doubt. ### 10.5 Model Lines URL: https://infiniteflight.com/guide/scenery-editor-manual/10.-objects/10.5-model-lines **10.5.1** The "Model Line" tool places a series of objects along a line; use it for long fences. Each line section must be at least as long as the object (a 4 m fence section needs at least 4 m), or the object sticks out. Use "Snap" when connecting. **10.5.2 Creating** 1. Tap "Object > Create Model Line". 2. In the properties tab, tap "Model Ref Name" and pick the object. 3. Tap to place the first node. 4. Keep tapping; the line continues between nodes. **10.5.3 Editing** Select the model line (drop-down or rectangle selection), tap "Modify Shape" (line turns magenta, nodes show), tap a node (magenta) and drag. Tap "Modify Shape" again to finish (needed before editing other model lines). **10.5.4 Moving or rotating** Select it (magenta). (If just created, tap "Modify Shape" to leave shape mode.) Center circle: move. Outer circle: rotate. **10.5.5 Properties** - Model Ref Name: object to place. Only fences or similar at this time. - Spacing: "+/-"; must equal the fence segment length (12.00 for a 12 m fence). - Orientation Offset: "+/-"; rotates each object around its own center. Default 90.0 joins fences correctly; do not change. - Center Offset: "+/-"; shifts objects away from the zero node. Must be half the segment length (3.00 for a 6 m fence). - Latitude / Longitude. - Altitude: meters; model line altitude cannot be changed. - Name. **10.5.6 Deleting** Select the model line (magenta), tap "Delete Selection". ### 10.6 Dos and Don'ts URL: https://infiniteflight.com/guide/scenery-editor-manual/10.-objects/10.6-dos-and-donts DO: - Place objects in realistic setups. - Use the model line tool for long fences. - Add aviation objects outside the boundary (for example Kai Tak checkerboard, VORs, localizer antennas) if they are properly aligned with the terrain (no clipping or floating). DO NOT: - Place objects inside the gate area (nothing beyond "the white line"). - Misuse objects to make building shapes or imitate other objects (for example buses sunk into the ground as trains, fuel tanks as cupolas). - Place ULDs on the ground (not on a dolly) in gate areas; that is only seen in storage/cargo areas. - Use too many objects in one place (no car parks full of cars, no huge solar arrays). - Add Safedocks at gates/airports that do not have them IRL. - Add objects outside the airport boundary (except the aviation objects in the DO list). - Add "easter eggs" of any type. - Place vehicles on access roads. ## 11. Airport Gates (The folder also has a draft file "_11.1-gate-equipment-placement.md". Files whose names start with "_" are not published, so it is not included here.) ### 11.2 Stand Guidance URL: https://infiniteflight.com/guide/scenery-editor-manual/11.-airport-gates/11.2-stand-guidance Stand guidance pairs with the nearest start location within 60 m that it is in line with (within +/- 5 degrees). Zoom out to check that it points at, and is in line with, the start location. **11.2.1** 1. In the right panel, the "Library" tab must be selected; scroll the list. 2. Select "Safedock T1" under "Stand Guidance". 3. Tap the position (press and hold if needed) for a white cursor, adjust, tap "Add Object". Tip: placing it first on the stand's start location (tap the start location, pick from the list if needed) is easiest. 4. Use the circles: Center = move; Top (just above center) = elevation/altitude; Outer = rotate. Stand guidance should be at eye level for the aircraft that park at the stand, and must be in the correct real position for the stand (on the terminal building or on a "Generic Pole"). 5. It must face the start location, in the correct orientation (sensor side must face the start location). ### 11.3 Jet Bridge Properties URL: https://infiniteflight.com/guide/scenery-editor-manual/11.-airport-gates/11.3-jet-bridge-properties **11.3.1** Select the jet bridge (drop-down if needed; outline magenta), open the "Properties" tab. These are the stowed (not connected) settings. Animations must not be edited, except the height of a jet bridge base (11.3.3). - Gates: gates assigned to the jet bridge (11.4). - Stowed Arm Rotation: "+/-"; rotates counter-clockwise from a default position based on the base/connector. Must be adjusted to avoid collisions. - Stowed Arm Extension: "+/-"; stowed length. Must be adjusted to avoid collisions. - Stowed Head Rotation: "+/-"; stowed head position. Must be adjusted to avoid collisions. - Stowed Height: "+/-"; must let all aircraft doors that can park at the stand be reached. - Scale: must not be changed, except to set it back to "1" (must be 1 for animations to work). - Orientation: "+/-"; rotates the animation range (green curved cylinder around the jet bridge). - Latitude / Longitude. - Altitude: should not be changed. - Name: not required at this time. **11.3.2** The slope between base and end is limited (a problem on short jet bridges), so the base height may need to change so all aircraft types that spawn at the stand can be served (the page shows a bridge not adjusted for narrowbodies). **11.3.3 Adjusting base height** 1. Tap on or near the blue circle at the center of the base (or rectangle selection). 2. Pick the base from the list if needed. 3. Open "Properties" and tap "+" next to "Animations". 4. Tap "+" next to "Height". 5. Tap the value to change the base height. 6. With the base still selected, use rectangle selection or "Edit > Selection (Add)" to add all other jet bridge elements to adjust. 7. Tap "Jet Bridge > Adjust Jet Bridge Alt". 8. All selected elements get the base height. Known bug with glass jet bridges: when "Adjust Jetbridge Alt." joins an end section to a base, the end section ends up 0.060 too low. Workaround: raise the base by 0.060, run "Adjust Jetbridge Alt.", then lower the base by 0.060. **11.3.4 A380 gates** If a start location has three jet bridges, the third connects to door U1L (Upper 1 Left) of the A380. Editors should raise that bridge's base (11.3.3) and stowed height (11.3.1) to reduce its angle at the door. ### 11.4 Jet Bridge Animations URL: https://infiniteflight.com/guide/scenery-editor-manual/11.-airport-gates/11.4-jet-bridge-animations **11.4.1** After start locations and jet bridges are added and stowed positions are set, add animations. Steps must be followed: 1. Check start location names. These must be correct before step 2: - Terminal: for example Concourse/Terminal/GA/Cargo/Apron/FBO [name/number]. - Name: Gate [alphanumeric/number]. Terminal names (for example T1) must not be in "Name". 2. Tap "Auto Assign Gates" to bind each jet bridge to a stand. 3. Each jet bridge shows its assigned start location(s) (for example "Terminal 5/Gate 515"). 4. If wrong, select the jet bridge, "Properties", then the "Gate" tab under "General". 5. Remove gates with "-". Add a gate with "+" in the format "Terminal Name/Gate Name". Auto assign can pick a nearby gate the bridge cannot serve; fix manually. 6. Tap "Jet Bridges > Check Jet Bridges". 7. Each start location shows a status: - "All Airplanes OK" (green): required for every start location with a jet bridge. - "Jet Bridges [aircraft type and reason]" (amber): bridge cannot reach some doors of the listed type(s) (partial); readjust. - "Jet Bridges [aircraft type and reason]" (red): bridge cannot reach any door of the listed type(s); readjust. - "No Jet Bridges Available" (grey): expected where there is no jet bridge. No more than 2 aircraft types are shown, to avoid clutter. 8. If any start location is amber or red, you must adjust the jet bridges (11.4.2). 9. Make sure "File > Airport Properties > Jet Bridges Available" is ticked (orange). Jet bridges do not work for pilots in flight mode until it is ticked. **11.4.2 Adjusting jet bridges** 1. All jet bridges must be checked. Adjust any that are red, amber, or grey at a stand that has a jet bridge ("Jet Bridges > Check Jet Bridges"). Green bridges must also meet step 5. Tip: tap "Jet Bridges > Freeze Non Jet Bridges" first so you do not move other objects. 2. Tap the end of the jet bridge. A green arc shows the animation range. Inner green line = minimum range of the rotation head center when fully retracted; outer green line = maximum extension. Aircraft doors must be inside the green area. 3. Drag the outer circle to rotate the jet bridge and arc until the arc covers all applicable start locations. "Rotate Range +90" moves the arc 90 degrees while the stowed bridge stays in place (useful when the arc covers more terminal than gate area). 4. Tap "Jet Bridges > Check Jet Bridges" again and confirm green. 5. Editors must make the green arc cover as much of the start location as possible. Arc area over unusable space (such as the terminal) limits range. ## 12. Review and Release ### 12.1 Review and Release Process URL: https://infiniteflight.com/guide/scenery-editor-manual/12.-review-and-release/12.1-review-and-release-process Changelog rule: every "Upload as Draft" or "Upload for Review" of a new version needs a changelog. It must be specific (for example "Adjusted C19 jetbridge. Changed taxiway line type on Taxiway A"). Extra detail can go in the IFC airport thread. **12.1.1** To be published, an airport must be submitted for review and checked against this manual. Two stages: - Peer review: voluntary, should be done to get feedback from other editors. Reviewed by: Editor or above. - Official review: mandatory before an airport can be in a release cycle. Reviewed by: Reviewer or above. **12.1.2 Scenery check** (must be done before any review submission; checks performance limits, objects outside the boundary, naming issues, duplicate gates, etc.) 1. Tap "File > Scenery Stats > Scenery Check > Check Scenery". 2. Tap an error, then "Select Items". 3. Look at the selected item and decide if it must change. **12.1.3 Peer review** You can only upload (draft or review) if something changed since the last upload (even moving a cone). 1. When complete, the airport must be uploaded with "File > File Manager > Upload as Draft". Then request a peer review by posting the IFC airport thread link in the #request-peer-review Discord channel. Editors doing peer reviews must not take more than 2 airports at a time and must have time to review promptly. They must not announce time frames; they should only take a review when available. If in doubt, leave the airport for someone else. 2. After feedback, make changes and resubmit for another peer review or for official review. All review feedback (peer and official) must be in the IFC airport thread, to keep a record. There is no limit on peer reviews per airport, but editors should only submit when they think the airport is complete. For help before that, editors should ask specific questions in the #help Discord channel. **12.1.4 Official review** Same rule: something must have changed since the last upload. 1. Submit with "File > File Manager > Upload for Review". 2. A Reviewer gives feedback in the IFC airport thread. Changes must be resubmitted the same way. Reviewer feedback is mandatory: requested changes must be made before the airport is ready for release. 3. When ready, the Reviewer marks the airport "Ready for Release". It will be in a release cycle at some point, not necessarily the next one; other factors decide release contents (https://community.infiniteflight.com/t/airport-releases/653276). **12.1.5 Navigation database update** Some changes show in the app only after the next navigation database update (usually at a release): - airport boundary - airport elevation - airport mini-map - runway information (such as approach types) - start locations - tower view point Example: after a boundary change, terrain in the new area matches the airport elevation only after the update, so buildings/objects there may float or sink until then. ### 12.2 Editor Checklist URL: https://infiniteflight.com/guide/scenery-editor-manual/12.-review-and-release/12.2-editor-checklist **12.2.1** Editors should complete this checklist before marking an airport complete and ready for review. (On the website the checkboxes are interactive and reset if you leave or refresh the page.) For help, use the #help Discord channel. **12.2.2 Airport properties** - All airport properties set. - All ATC frequencies added. - Scenery check done ("File > Scenery Stats > Scenery Check > Check Scenery") and errors that need fixing fixed. **12.2.3 Airport boundary** - Everything outside the boundary removed (except applicable airport equipment). - Long fences made with the "Model Line" tool (joined properly, consistent orientation). - Correct fence type (barbed wire vs no barbed wire). - Barbed-wire fences in the correct orientation. - Motorized gates at roadway entrances and exits (where applicable). **12.2.4 Airport equipment** - Beacon tower added (if applicable) at the real position. - Beacon light added (if applicable) at the same location as the beacon/ATC tower. - VORs added if present IRL (from imagery and charts). - VOR size matches reality (VOR (small) or VOR) and it is inside the boundary. - Runway guard lights (if applicable) at all applicable runway intersections. - Runway guard lights oriented as IRL, following straight or curved taxi centerlines, visible to the PIC. - Localizers at the real position and orientation (box facing away from the runway end). - Glideslope ("Slope") antennas at the real position and oriented with the runway heading. - Windsocks placed as close to imagery and chart data as possible. - ATC towers at the real position with the correct height. - Tower view point inside the ATC tower cab. **12.2.5 Pavements** - All real pavements added. - Surface types match reality. All hangars must have concrete pavement under them unless real sources show another surface. - All pavements snapped, no gaps. - Pavement patches on top of surrounding pavement (no hole underneath); a more performance-efficient method (fewer nodes) is acceptable at the Reviewer's discretion. - Grass surface only for grass taxiways (not for grass outside a terminal). **12.2.6 Taxiways** - All real taxiway lines added: centerlines, hold lines, edge lines, road and gate outlines. - Correct line types. - Correct light types. No centerline lights on stand lines unless airport documents say so. - All lines snapped. - All centerlines and hold lines named. - All hold lines layered above taxiway centerlines. - Only centerlines and hold lines have network usage "Aircraft". - All other lines have network usage "None". - All centerlines have the largest aircraft category that can use them. - All centerline directions set correctly. - All taxiway connectors placed as required. - Network built and checked. - "File > Airport Properties > Taxiway Routes Available" ticked (orange). **12.2.7 Start locations** - Start locations for all real parking positions. - Correct orientation. - Correctly named in both "gate" and "terminal" fields. - Largest aircraft category set. - Gate stops defined as required. **12.2.8 Buildings and facades** - Buildings at real locations. - Realistic building heights and roof depths. - Buildings aligned with 2D pavements. - Layering symmetrical; corners accurate at all intersections. Every level that is not the top floor, or the lowest layer of a floating building (such as a bridge), should have roof type "None". - Roof orientations auto coordinated. - Facades as close to reality as possible. - Rooftop equipment (AC units, cooling towers, ladders, catwalks) placed as IRL. - Duplicate buildings removed if "Download OSM" and "Download OSM at Cursor" were both used. **12.2.9 Objects** - No overcrowding of ramps, gates, parking lots and staging areas. - No objects clipping each other. - Vehicles clear of access roads. - Objects clear of jet bridge movement areas. - Lighting at real locations. - Firefighting trainer aircraft added (if applicable). **12.2.10 Airport gates** - Stand guidance at all gates that have it IRL. - All jet bridges assigned to gates. - Jet bridge heights suit the aircraft for the gate's spawn size. - Each jet bridge assigned only to gates it serves (not gates on the other side of the terminal). - Jet bridges in a "stowed" position (height, extension, rotation adjusted). - Green arc covers the gate and all doors for all available aircraft. Partial coverage is not acceptable; use "Rotate Range +90" if needed. - "File > Airport Properties > Jet Bridges Available" ticked (orange). ## 12A. Reviewers The two pages in this sub-section are restricted on the website to the airport reviewers role (front matter `auth: airportreviewers`). Their content is not included in this public file. Pages: - 12A.1 Overview: https://infiniteflight.com/guide/scenery-editor-manual/12a.-reviewers/12a.1-overview - 12A.2 Reviewer Admin (page title "12A.1 Reviewer Admin"): https://infiniteflight.com/guide/scenery-editor-manual/12a.-reviewers/12a.2-reviewer-admin ## 13. Summary ### 13.1 Editing Overview URL: https://infiniteflight.com/guide/scenery-editor-manual/13.-summary/13.1-editing-overview **13.1.1 Recommended workflow** ("bottom up": start with imagery and taxiways, finish with 3D objects; any order is allowed) 1. Check imagery quality in SASPlanet (zoom level 19 or higher). If it is blurry, do not start (4.1). 2. Collect charts and other sources (some areas have no free or public charts). 3. Set airport properties (3.2). 4. Check the runway position against its coordinates and use it as a reference for the imagery. Usually the runway is already correct. 5. Export imagery from SASPlanet and import it (4.2.1, 4.3.1). 6. Check the airport boundary and adjust if needed (3.3). 7. Add and adjust runways, pavements, taxiways and lines (5.1, 6.1, 7.1). 8. Add lights, taxiway names, the taxiway network and other properties (7.2, 7.3). 9. Add start locations (8.1). 10. Add and edit buildings (9.1). "Download OSM" can be a starting point (9.1.6). 11. Add objects (10.2), including jet bridges and stand guidance if applicable (11.2). 12. Set jet bridge properties (11.3) and enable animations (11.4) if applicable. **13.2.1 Optimizing airports** (13.2 is on the same page) - Use as few building parts as possible. - Do not make sloped or vertical round shapes. - Do not add more detail than needed. - Do not add landside detail that pilots cannot see. - Remove unneeded nodes; use "Simplify". - Remove invisible roofs and invisible walls. - Do not put a very large number of lines close together. - Do not put a very large number of models close together. --- # Infinite Flight: Scenario Editor Manual > How to use the invite-only Infinite Flight Scenario Editor to build interactive scenarios (lessons, challenges, missions): access, configuration, steps, failure conditions, in-app debugging tools and uploads. For registered scenario authors. Source: https://infiniteflight.com/guide/scenario-editor-manual (infiniteflight-docs 6b73625). Generated by a model on 2026-10-20. If this file and the website disagree, the website is correct. ## Introduction URL: https://infiniteflight.com/guide/scenario-editor-manual The Scenario Editor is still under development. Send feedback or questions to Cameron or Laura at Infinite Flight. ### What is a scenario? A scenario is an Infinite Flight session with one or more goals, for example: - a flight training lesson (how to land an aircraft); - a challenge (land the Space Shuttle); - a mission (fly a specific route). You can use all simulator states to prompt users to do an action, then do more actions based on their inputs. ### Accessing the Scenario Editor Access is invite-only: an Infinite Flight team member must register you. Contact your Infinite Flight contact if you cannot access it. 1. Find the device IP address: on iOS and Android, Settings -> WiFi, under your local WiFi network. 2. Open the latest Infinite Flight beta sent to you via TestFlight. 3. Keep Infinite Flight open on the phone or tablet. On another PC, open `http://[DEVICE IP]:4090` in a browser (for example `http://192.168.0.5:4090`). 4. The editor opens in the browser and the left sidebar shows `Connected`. Troubleshooting: check that you are logged in on the Infinite Flight device, both devices are on the same WiFi network, and you use the Infinite Flight beta. For more help, contact Cameron. ### Editor layout A top toolbar with common actions and a main editor window with 3 tabs: - Configure Scenario: metadata and configuration. - Steps: actions and completion conditions. - Failure Conditions: scenario-wide conditions that fail the scenario. ## Overview ### Editor Features URL: https://infiniteflight.com/guide/scenario-editor-manual/overview/features Translations: - The editor supports all languages that Infinite Flight supports. - An English string is currently required for every text input. Other languages are optional. - Press "Translate" (next to "Edit") to open the language editor. - Translate with AI (experimental): GPT3.5 translates the English text, trying to use authentic technical terms and language-specific idioms. Text to Speech audio: when you upload a scenario, Text to Speech audio is generated automatically for each step and each language, using Azure's Text to Speech engine. ### In-App Tools URL: https://infiniteflight.com/guide/scenario-editor-manual/overview/in-app-tools Scenario Explorer: - Access: in a scenario, open Systems -> SCENARIO CONTROL. - Shows every step and the current step. The Completion Conditions show whether they match, or how the expected and actual values differ. State Explorer: - Access: in a scenario or free flight, open Systems -> STATE EXPLORER. - Explore every Infinite Flight state in real time, with search. For each state it shows the current value, the unit (if available), and `r` (read only) or `rw` (readable and writable). - States are per aircraft. Use the same aircraft as your scenario when you explore states. ## Editor ### Configure Scenario URL: https://infiniteflight.com/guide/scenario-editor-manual/editor/configure Set the name, description and thumbnail. These currently show on the Flight School page of Infinite Flight. Aircraft and Livery (required; nothing else can be configured without them, because states are aircraft-specific): - Sets the aircraft and livery available when the user starts the scenario. - If the aircraft needs a Pro subscription, the scenario is available only to Pro subscribers. Start Information (required): upload a State File (.pbf) that positions the aircraft ready to start. 1. Start a flight in Infinite Flight and configure the aircraft (attitude, speed, autopilot, NAV, etc.). 2. In the Systems menu, tap `Save`. 3. Move the saved .pbf file to the device that runs the Scenario Editor. 4. Upload the State File. Check that it is correct from the information the editor shows. 5. Press `Upload Changes` (top right) to save it in the scenario. Settings: - End Flight on Scenario Complete: if checked, the flight ends when the final completion condition is met. If not, the user can keep flying until they end the session manually. ### Steps URL: https://infiniteflight.com/guide/scenario-editor-manual/editor/steps Most of a scenario is configured here. Each step is a point where an action happens, for example: show a message (with Text to Speech audio), configure the autopilot, or show a UI helper that flashes a button on the user's screen. Timeline (top of the Steps tab; shows all steps): - Select: tap the step. - Add: `Add Step` adds at the end; right click to insert between steps. - Delete: right click > Delete. - Duplicate: right click > Duplicate. Copies all messages, completion conditions, etc. - Reorder: press and hold a step to enter "jiggle mode" (like on iPhone), rearrange, then press `Stop Ordering`. A step advances to the next when: - the Briefing Message has finished being read by Text to Speech; - a Completion Condition is met; or - a Timeout set in the step Configuration ends. Step tabs: State: sets simulator or aircraft states. Example, HDG autopilot at heading 90 degrees: 1. Tap Add Action. 2. In the `States` list, find `Systems → Autopilot → Hdg → On` and set it to `true`. 3. Find `Systems → Autopilot → Hdg → Target` and set it to `1.5708`. Headings are currently in radians (improvement planned). 4. Tap the checkmark for each state to save. Briefing Message: the message shown when the user reaches the step, for instructions or context. You can hear the sound for each language only after you upload the changes and edit the briefing messages. Completion Conditions: when met, the scenario advances to the next step. - State Conditions: like the State tab, but match a state value. - Location Conditions: the aircraft must be within a radius of a latitude and longitude, for example to make the user fly through an area. - Tolerance: for numbers, the error margin. Expected 100 with tolerance 25 accepts 75 to 125. - Minimum Time: the values must match for this time, so the step does not advance immediately. Recommended: 5 seconds. Configuration: - Timeout: advance if the user does not complete the conditions (for example after 10 seconds if they ignore the instruction). - Continue button title: custom text for the Mission Brief button that moves to the next step. - Wait for confirmation: the user must tap the mission brief; otherwise the scenario waits for input. ### Failure Conditions URL: https://infiniteflight.com/guide/scenario-editor-manual/editor/failure Failure conditions fail the scenario if the user leaves set parameters, for example diving the nose toward the ground in a straight-and-level tutorial, or stalling. Add as many as you want; each can have its own message. Example, fail on stall: 1. Tap Add Failure Condition. 2. In the `States` list, find `Is Stalling` and set it to `equals` and `true`. 3. Set a message, for example "You stalled the aircraft". 4. Tap the checkmark for each state to save. ## Uploads URL: https://infiniteflight.com/guide/scenario-editor-manual/uploads/uploads - Press `Upload Changes` often so you do not lose work. - This uploads the scenario as a draft. You can see it on the Flight Training page of Infinite Flight after restarting the app. (Configure Scenario calls this page "Flight School".) - Publishing to the public is currently done manually by Infinite Flight staff. Contact Cameron.