Home  >> soaring  >> igc file format homepage  >> reference and guide

IGC FILE FORMAT REFERENCE AND DEVELOPERS' GUIDE - Ian Forster-Lewis

These are notes created for my personal use to try and make the FAI documentation more useful to me as a logger developer. I have taken the 2008 version of the FAI documentation as a starting point and added links and other information to make it more usable by a developer that is either writing or reading these lof files.

Ian Forster-Lewis, Sept 2009.

This is essentially a modified version of the 'igc file format' Appendix 1 of the original IGC document available on www.fai.org.. I have kept the FAI chapter/section numbers but added to some of the sections.

Contents

Preface: ANNOTATED SAMPLE

Here's a 'walk-through' of a valid IGC file, this is not in the original FAI document. 'Space' characters have been inserted for legibility, if you want to cut-and-paste this file as a starting point for your development, you could use the version of the same file in section 9 without the inserted spaces. Free text is in italics meaning you can enter pretty much anything, otherwise the exact number of characters must match the example. Each 'record' in an IGC file fits on a single line and the first few characters determine the record type. I have linked those initial chars in the sample below to the corresponding section of the specification.

A XXX ABC FLIGHT:1 Manufacturer code, use XXX if you don't have one. ABC is the unique code for this logger (serial no.?), rest of line can be anything you like
HFFXA 035 Typical fix accuracy, here 35 meters. FXA field can also be added to each B record
HFDTE 160701 UTC date of flight, here 16th July 2001
HFPLT PILOTINCHARGE: Bloggs Bill D Free-text name of the pilot
HFCM2 CREW2: Smith-Barry John A Free-text name of the second pilot in a two seater
HFGTY GLIDERTYPE: Schleicher ASH-25 Free-text glider type
HFGID GLIDERID: N116 EL Free-text aircraft registration number or code, e.g. N-number in USA. Or the number on the fin - it doesn't really matter
HFDTM100 GPSDATUM: WGS-1984 Which GPS datum is the logger using. Always 100 in my experience but see the original FAI document if you want do something unusual.
HFRFW FIRMWAREVERSION:6.4 Firmware (i.e. software) version of the logger - anything you like
HFRHW HARDWAREVERSION:3.0 Hardware version of the logger - any text that is appropriate
HFFTY FRTYPE: Calibri,FunkyLogger 77 Flight Recorded Type - any text is ok
HFGPS Marconi,Superstar,12ch,10000m Manufacturer of the GPS receiver inside the logger. Do we really care? Any text will work
HFPRS PRESSALTSENSOR: Sensyn,XYZ11,11000m Manufacturer of the pressure sensor in the logger. Any text.
HFCID COMPETITIONID: B21 Tail fin number of the glider. IGC logger analysis software (e.g. SeeYou) will typically use this value to label the log that you upload, helpful when animating multiple logs. Free text but keep it short.
HFCCL COMPETITIONCLASS:15m Motor Glider Free text describing the glider class, e.g. Standard, 15m. No standard for the values though.
03  36 38 FXA  39 40 SIU  41 43 ENL (only the FXA extension is 'mandatory' as of 2009). This is the 'extension' header record, describing additional fields that can be appended to every B record. The B record is the basic timeseries 'fix' data that is pretty much all analysis programs look at (you'd be surprised how much of this 'H' stuff they simply throw away...). So with the I record you can include, say, engine noise level, with every fix point. The sample here says engine noise level (ENL) will be added as bytes 41 to 43 to each B record, similarly for FXA, and SIU. The "03" after the "I" is the number of extensions given, i.e. three.
J 01 08 12 HDT (Optional) As the I record above extends the B record, so the J record extends the K record. The K record is basically "K-timestamp-values" where the values are entirely defined by this J record, and the K records can then be embedded anywhere between the B records with the idea that they're used for less frequent updates than the frequent B record. This example gives Heading True (HDT) as the piece of information occassionally placed into the log using K records.
C 150701 213841 160701 0001 02 500K Tri (Optional) (The following example of a C (Declaration) record is for a 500 km triangle to be flown from Lasham gliding centre in the UK)
This first line contains the date/time of the declaration (15/Jul/2001), 21:38 (9:38pm) and 14 seconds, the date of the intended flight (16/Jul/2001), a four-digit task id (0001), number of turnpoints (02) not including start/finish, and then free text describing the task.
C 5111359N 00101899W Lasham Clubhouse C latitude as DDMMmmmN, longitude as DDDMMmmmE, description
C 5110179N 00102644W Lasham Start S, Start  
C 5209092N 00255227W Sarnesfield, TP1  
C 5230147N 00017612W Norman Cross, TP2  
C 5110179N 00102644W Lasham Start S, Finish C record the same format as the others above, but this is the point of takeoff and not formally part of the task declaration. Typically just put th location of the home airfield.
C 5111359N 00101899W Lasham Clubhouse C record as above, this time for the landing location. Again, not formally part of the task declaration and will typically be the home airfield.
F160240 04 06 09 12 36 24 22 18 21 This gives the ID's of the satellites visible, in the format "F-timestamp-ID-ID-ID..." where timestamp is HHMMSS and each id a two-byte pair. In this example at 16:02:40 the logger could see nine satellites.
B160240 5407121N 00249342W A 00280 00421 205 09 950 Great, we've finally got to the log points we are interested in. The format is "B-timestamp-latitude-longitude-AVflag-pressure alt-GPS alt-extensions". As mentioned above, the first 35 bytes of the B record have a fixed definition, then after that the fields are determined by the I record. This B record has timestamp 16:02:40, lat 54 degrees 7.121 mins North, long 2 deg 49.342 mins West, AVflag (3D validity) A, 280m altitude from pressure sensor, 421m altitude from GPS, and FXA (accuracy) 205m, SIU (satellite count) 09 and ENL (engine noise) 950 (suggesting the engine is running...).
D 20331 (Optional) This gives the ID of a "Differential GPS" station being used, format "D2xxxx" where xxxx is the ID.
E160245 PEV (Optional) This record records an event, format "timestamp-code", with the permissible 3-letter codes given in section 7. In this example the code is a generic "Pilot Event" which will typically be used to cause the logger to temporarily speed up its logging rate. The E record must be followed by a B record giving the location.
B160245 5107126N 00149300W A 00288 00429 195 09 020 This B record matches the E record above, i.e. has the same timestamp. The eagle-eyed amongst you will notice the engine noise level has fallen from 950 in the previous B record to 020, i.e. the engine has stopped in 5 seconds beween these fixes.
B160250 5107134N 00149283W A 00290 00432 210 09 015 continue logging at 5-second intervals (any period is ok)
B160255 5107140N 00149221W A 00290 00430 200 09 012 still logging at 5-second intervals... normally the file would be almost entirely made up of these records.
F 160300 06 09 12 36 24 22 18 21 satellites in use reduce from 9 to 8 as ID 04 is no longer received
B160300 5107150N 00149202W A 00291 00432 256 08 009 here is a fix record (B) providing a location for the F record above.
E160305 PEV a "Pilot Event", e.g. he/she pushed a button to speed up the logging rate
B160305 5107180N 00149185W A 00291 00435 210 08 015 A fix record giving the lat/long of the PEV event above.
B160310 5107212N 00149174W A 00293 00435 196 08 024 another fix
K 160248 00090 This K record is general-purpose placeholder for periodic values selected from the list that can be defined in the single J record in the header. In this example the J record at the top of this logger file says bytes 8 to 12 will be True Heading (). Here the value for True Heading at 16:02:48 is 90 degrees. ( AL7)
B160248 5107220N 00149150W A 00494 00436 190 08 018 here is a fix (B) record giving the location for the K record above (note same timestamp).
B160252 5107330N 00149127W A 00496 00439 195 08 015 another general fix record
L XXX RURITANIAN STANDARD NATIONALS DAY 1 this is a general 'comment' record. The three characters after the 'L' can be manufacturer code (XXX in this example), 'PLT' (pilot comment), 'OOI' (observer comment) or 'PFC' (post flight comment). After that, any free text is fine.
L XXX FLIGHT TIME: 4:14:25, TASK SPEED:58.48KT Another comment record
G REJNGJERJKNJKRE31895478537H43982FJN9248F942389T433T Security key calculated by the logger from the content above. The only point is that a seperate program should be available to check this key so you know the log file is kosher...
G JNJK2489IERGNV3089IVJE9GO398535J3894N358954983O0934 multiple G records are allowed, whatever the logger software needs
G SKTO5427FGTNUT5621WKTC6714FT8957FGMKJ134527FGTR6751  
G K2489IERGNV3089IVJE39GO398535J3894N358954983FTGY546  
G 12560DJUWT28719GTAOL5628FGWNIST78154INWTOLP7815FITN  

1. INTRODUCTION

1.1 Background, and IGC file production. The IGC Data File Standard was initially developed by a group consisting of representatives of IGC, glider FR manufacturers and a number of independent software developers mainly concerned with flight data analysis programs. After discussion and development during 1993 and 1994 it was initially defined in December 1994 and became part of official IGC/FAI documents after approval by IGC in March 1995. It has been refined and developed afterwards, through regular amendments. It provides a common world standard data format for the verification of badge, record, and competition flights to FAI/IGC criteria. The Standard may also be used by other FAI sports and activities.

1.1.1 Production of Flight Data File. It must be possible to produce a separate and complete IGC flight data file for each flight including all record types (para 2.2 following) relevant to the flight such as header records, flight declaration, etc. Two ways of achieving this are by continuous recording of fixes between the times that the FR was switched on and off, or, for FRs that have a "standby" state on switch-on, only recording fixes after pre-set movement and pressure-change thresholds are exceeded (ceasing recording when changes are below the thresholds, but see 1.1.1.2 on short periods without external power).(AL3)

1.1.1.1 Thresholds for starting and stopping recording, also Power-on Protocol for creating new IGC files. The following thresholds before fixes are recorded have been found suitable in the past: lat/long change, 10-15 km/hr; pressure altitude change, 1 metre per second for 5 seconds. Pre-takeoff and after-landing baselines of at least 20 fixes must be provided. For the pre-takeoff baseline, a small memory circuit can be used that continuously stores the appropriate number of previous fixes and, when movement is detected, puts them into the flight data record. After landing, this can be achieved by a time delay before stopping the recording of fixes. This condition may also apply to a period in wave or ridge lift with little or no vertical or horizontal movement. Therefore, a new IGC file must not be started while external power is still connected and the recorder is still switched on, even when no movement is being detected and no fixes are being recorded. Note that this "power-on protocol" is also needed for barograph calibrations so that a new file is not produced while the calibrator is making small adjustments to the pressure at each level of the calibration. A new IGC file is produced under the "Power-off Protocol" that is described under 1.1.1.2 below.(AL5), modified by (AL9)

1.1.1.2 Loss of external power for short periods - Power-off Protocol for creating new IGC files. To allow for events such as changing or switching batteries in flight, a period of 5 minutes with no external power shall be allowed to elapse before a new Flight Data File is created on powering up again. After this period has elapsed a new IGC file must be produced, so that if several flights are made on one day, each has a complete IGC data file of its own.(AL3)

1.1.1.3 Data transfer to a PC. If the data for several flights is held in the FR memory, it must be ensured that when the data is transferred, all record types in IGC files that are subsequent to the first file are those relevant to each subsequent individual flight. If any record types are changed between flights (such as declaration, pilot name, etc.) the changes must be included in the subsequent (but not previous) flight data files.(AL3)

1.1.1.4 Recorders operating on internal power. Some recorders are designed so that all of their functions are available on internal power. For these recorders, external power is used for charging and as a backup for long flights. When operating on internal power it must be ensured that under flight conditions of little horizontal or vertical movement (such as in ridge or wave flying), the IGC file continues be able to record data and is not ended while flight continues. The IGC file shall be ended after one of the following three conditions: (1) if no horizontal or vertical movement has been detected for 10 minutes (thresholds as in 1.1.1.1 above); (2) after the recorder is switched off by deliberate action, or; (3) if the recorder is still powered after the flight, when the user establishes a connection for purposes of downloading from the recorder.(AL10)

1.2 REVISION CONTROL. The IGC flight data file format is revised through the normal amendment process for this document. See amendment procedures and list of amendment on page (i).

2. GENERAL

2.1 FILE STRUCTURE. An IGC-format file consists of lines of characters, each line giving a set of data such as for a GNSS fix. Each line starts with an upper-case letter denoting one of the Record types listed in para 2.2., and ends with CRLF (Carriage Return Line Feed). Each line is limited to 76 characters in length, excluding the CRLF which is hidden and does not appear in text form. Some Record types take up only one line, some such as task and header take up several lines. For instance, the task/declaration (C) Record includes a line for each Waypoint, and the Header (H) Record includes separate lines for GNSS FR type, pilot name, glider identification, etc. The order of Record types within an IGC file is given in para 2.3. Some Record types occur only in only one place in the file (single instance Records), others such as fixes re-occur as time progresses (multiple instance Records). Only characters listed as valid in para 6 shall be used in the file. If others such as accented characters (acutes, hatcheks, umlauts, etc) in names of airfields and turn points, are used in a manufacturer's proprietary (original) file format, such characters shall be converted to a valid character as part of the conversion to the IGC format. This is so that analysis programs designed for the IGC format do not have to recognise non-standard characters.

2.2 RECORD TYPES. The Record types are prefixed by upper case letters as follows:

IGC DATA FILE FORMAT - RECORD TYPE IDENTIFICATION LETTERS
A - FR manufacturer and identification
B - Fix
C - Task/declaration
D - Differential GPS
E - Event
F - Constellation
G - Security
H - File header
I - List of extension data included at end of each fix B record
J - List of data included in each extension (K) Record
K - Extension data
L - Logbook/comments
M, N, etc. - Spare

2.3 RECORD ORDER. The FR I/D (A) Record is always the first in the file and the last is the Security (G) Record. After the single-line A record is the multi-line Header (H) Record, followed by the I and J Records that list extension data which applies to later Record types in the file. These are followed by other Record types indicating that certain data is recorded in the file, including the task/declaration (C) Record, and the initial Satellite Constellation (F). Time-specific Records follow, placed in the file in time order using either GNSS fix-time (if the GNSS is locked on) or the FR Real Time Clock (RTC); these are B (fix), E (event), F (constellation change) & K (extension data). The logbook/comments (L) Record data may be placed anywhere after the H, I and J records and can have several lines throughout the file depending on the nature of the comments included.

The following sequence of Record types is typical, although in a real flight data file there will be many more fix B record lines than shown here:
IGC DATA FILE FORMAT - ORDER OF RECORD TYPES IN AN IGC FILE
A - FR manufacturer and identification (always first)
H - File header
I - Fix extension list, of data added at end of each B
record
J - Extension list of data in each K record line
C - Task/declaration (if used)
L - Logbook/comments (if used)
D - Differential GPS (if used)
F - Initial Satellite Constellation
B - Fix plus any extension data listed in I Record
B - Fix plus any extension data listed in I Record
E - Pilot Event (PEV)
B - Fix plus any extension data listed in I Record
K - Extension data as defined in J Record
B - Fix plus any extension data listed in I Record
B - Fix plus any extension data listed in I Record
F - Constellation change
B - Fix plus any extension data listed in I Record
K - Extension data as defined in J Record
B - Fix plus any extension data listed in I Record
E - Pilot Event (PEV)
B - Fix plus any extension data listed in I Record
B - Fix plus any extension data listed in I Record
B - Fix plus any extension data listed in I Record
K - Extension data as defined in J Record
L - Logbook/comments (if used)
G - Security record (always last)

2.4 UNITS.

Data in the IGC file shall use the following unit system:

Time - UTC, obtained from the same GNSS data package from which the recorded lat/long and GPS altitude are also obtained, or, if GPS is not locked on, from the Real-Time Clock in the recorder. Note that UTC is not the same as GPS internal system time that is different by 14 seconds in 2006 due to the addition of 'leap seconds' since the GPS system first became operational in January 1980. The correction to UTC available within the GPS system must be applied to time recorded in IGC files.(AL9)

Distance - Kilometres and decimal kilometres. For FAI/IGC conversions from feet and miles, see para 2.6.8
(AL6)
Speed - Kilometres per hour. For FAI/IGC conversions from nautical miles per hour (knots) and statute miles
per hour (mph), see para 2.6.8(AL6)
Date (of the first line in the B record) - UTC DDMMYY (day, month, year). See para 2.5.4(AL6)
Direction - degrees True, clockwise from 000 (North)
Latitude and Longitude - Degrees, minutes and decimal minutes with N,S,E,W designators
Altitude - Metres, separate records for GNSS and pressure altitudes.
Pressure - Hectopascals (the same as millibars) to two decimal places, for instance altimeter subscale setting, but
see * below under PPPPpp
The above items shall be recorded in the flight log as follows:

2.5 FILE NAMING

2.5.1 Short file name style: YMDCXXXF.IGC
Y = Year; value 0 to 9, cycling every 10 years
M = Month; value 1 to 9 then A for 10, B=11, C=12.
D = Day; value 1 to 9 then A=10, B=11, C=12, D=13, E=14, F=15, G=16, H=17, I=18, J=19, K=20, L=21, M=22, N=23, O=24, P=25, Q=26, R=27, S=28, T=29, U=30, V=31.
C = manufacturer's IGC code letter (see table below)
XXX = unique FR Serial Number (S/N); 3 alphanumeric characters
F = Flight number of the day; 1 to 9 then, if needed, A=10 through to Z=35

2.5.2 Long file name style. This uses a full set of characters in each field, a hyphen separating each field, the field order being the same as in the short file name. For instance, if the short name for a file from manufacturer X is 36HXABC2.IGC, the equivalent long file name is 2003-06-17-XXX-ABC-02.IGC. Long file names may be generated by software that is compatible with long file names, although the DOS versions of the DATA, CONV and VALI programs must continue to generate and use short file names. (AL3)

2.5.3 FR Serial Number (S/N). The three-character FR S/N must be used in the A record and be imprinted on the case of the recorder unless there is an easily-accessible electronic display which includes the S/N.

2.5.3.1 Existing FRs using serial numbers with coded systems where the XXX translates to a different five-number numerical code which is used in the A record, have "Grandfather Rights" and do not need to be changed. New FRs must use the three-alphanumeric system described above.

2.5.4. Date of flight - the date used in the file name and in the H record (DTE code) is the UTC date of the first valid fix in the flight log transferred after flight. That is, the date applicable to the time in the first line in the B (fix) record, not the date at the time of switching on, or of take-off. This is particularly important for recorders operated in time zones where they are switched on close to midnight UTC.(AL6)

2.5.5. Security of file name. The file name is not protected by the electronic security system, which only applies to data within the file itself (see chapter 2, para 2.8). File names may be changed for specific purposes such as competitions, where it may be found more convenient to change from the IGC name system in which the file is originally transferred from the FR (para 2.5), to a system using glider competition number or pilot name. No loss of data or security occurs, since all of the data in the IGC file name is repeated in the file itself in the A and H records. (AL2) Example: 16AFXYZ2.IGC = 10 June 2001, Filser FR number XYZ, Flight 2 of the day.

2.5.6 Manufacturer codes. Single- and three-character codes are tabulated below. Manufacturers applying and paying the fee for IGC-approval who are not listed should apply to the Chairman of GFAC for allocation of codes. Manufacturers using the IGC file format but not applying for IGC-approval should use the X and XXX codes, see note 2 at the end.

2.5.6.1 Name of Intermediate Format file. If a manufacturer chooses a system where data is download from the recorder in an intermediate format such as binary, the file name for the intermediate format shall be as for the IGC file but with the Manufacturer's three letter code used instead of the "IGC" after the dot. It shall then be possible to convert the intermediate format to the IGC ASCII format through the Conversion utility that is part of the manufacturer's IGC-XXX.DLL file or, for earlier systems, through the CONV-XXX.EXE program.(AL8) nbsp;
IGC DATA FILE FORMAT - CODES FOR MANUFACTURERS OF IGC-APPROVED FLIGHT RECORDERS(AL5)
Single Char. Code Three Char. Code Manufacturer's Name Single Char. Code Three Char. Code Manufacturer's Name
A GCS Garrecht S SDI Streamline Data Instruments
B T TRI Triadis Engineering GmbH
C CAM Cambridge Aero Instruments U
D DSX Data Swan/DSX V
E EWA EW Avionics W WES Westerboer
F FIL Filser X XXX Other manufacturers, see note below
G FLA Flarm (Flight Alarm) Y
H SCH Scheffel Z ZAN Zander
I ACT Aircotec 0
J 1
K 2
L LXN LX Navigation 3
M IMI IMI Gliding Equipment 4
N NTE New Technologies s.r.l. 5
O 6
P PES Peschges 7
Q 8
R PRT Print Technik 9

Notes:

  1. Where possible, the initial letter of a manufacturer's name will be allocated for the single-character code. Where this letter is already allocated, generally, the next letter in the manufacturer's name will be used, etc.
  2. X and XXX are general designations for IGC format files from manufacturers who do not produce an IGC-approved recorder. Such recorders will not have been tested and evaluated by GFAC and may not fulfil certain aspects of the IGC Specification such as security protections, recording of pressure altitude, ENL or other variables. There is no guarantee that the file will conform exactly to the IGC format, although specimen files will be checked for compliance with the IGC format if emailed to the GFAC chairman for evaluation. Even after this procedure, no compliance guarantee can be made because the type of recorder will not have completed a full GFAC evaluation. It should be noted that although the file name will not contain the information, the details of the manufacturer and the recorder model concerned will be identifiable (if the file conforms to the IGC standard) because they will be included in the H (Header) record, see below under H Record in the line: HFFTYFRTYPE:MANUFACTURERSNAME,FRMODELNUMBER CRLF
  3. The three-letter codes PFC, PLT and OOI will not be used since they could cause confusion in the L record.

2.5.7 Mandatory Records. Certain records are mandatory for any IGC file. They are summarised as follows:

Record type in file order Appendix 1 reference Remarks
A3.1Manufacturer and unique ID for FR
H3.3.1Header record
I3.4FXA extension is mandatory
B4.1Fix record (lat/long/alt etc.)
F4.2Satellites used in B records
G3.2Security record

3. SINGLE INSTANCE DATA RECORDS

These records only occur once in each IGC-format data file, but each record type may contain several lines prefixed with its type letter.

3.1 A RECORD - FR ID NUMBER. The A Record must be the first record in an FR Data File, and includes the three-character GNSS FR Serial Number (S/N) unique to the manufacturer of the FR that recorded the flight(AL3). Format of the A Record:

A M M M N N N T E X T S T R I N G CR LF
A record - DescriptionSizeElementRemarks
Manufacturer3 bytesMMMAlphanumeric, see para 2.5.6
Unique ID3 bytesNNNValid characters alphanumeric(AL3)
ID extensionOptionalTEXT STRINGValid characters alphanumeric

3.2 G RECORD - SECURITY. The G Record verifies that the data has not been altered during or following the flight. The FR manufacturer must provide a VALI program (see para 2.9.3.4 in the main body of this document) to check the integrity of the file with the security code. The security code must be generated by the FR, not by the computer extracting the flight data. Flight analysis software from sources other than the manufacturer should ignore the detailed data in this record, but can use the G record as a marker for the position of other data and records in the IGC file. All records must be included in the security mechanism, except the H records which have the O or P source, and any L records which do not have the Manufacturer ID (because some L records may be put in by the pilot).

Format of G Record:
G S S S S S S S S S S S S S S S S S S S S S S S S S S S S S CR LF
G S S S S S S S S S S S S S S S S S S S S S S S S S S S S S CR LF
etc
G record - DescriptionSizeElementRemarks
Security codeUp to 75 bytes per line SSSSSValid characters alphanumeric, see Chapter 2, para 2.8.3.1 on security key length.(AL3)

The G Record must not use any non-printing character, because whitespace is often removed when ASCII files are transmitted across data communication networks.

3.3 H RECORD - FILEHEADER

The H-Record is used to store data such as the date on which fixes are first recorded in the B-Record of the IGC file (that is, the day of a flight unless made in a time zone many hours from UTC), the name of the pilot, glider, the type of FR used, the type of GNSS receiver and pressure altitude sensor, amongst other things. There are several different subtypes of the H-Record which are recorded on separate lines prefixed H. All Three Letter Codes (CCC) that bear the H flag in section 7 are possible subtypes of the H-Record.

The line entries in the H-record may be created by the FR (source code F), or, for items such as pilot and glider names, by the Pilot or OO (P and O source records) after flight (see the line "Data Source" in the table below). Only H-Record data with source code F is covered by the security code and VALI check system.(AL10)

Appendix 1, Para 3.3, second paragraph. The words at the end to read The general format of the H-Record is: record identifier, source of information (S), record subtype identifer (CCC), long name of the record subtype, colon, actual information (TEXTSTRING). The long name is intended as an aid for people reading the file. For official purposes only the source of information, the record subtype (CCC) and the actual information are definitive.

GNSS Geodetic Datum. The long name, a colon and the name of the Geodetic Datum set (WGS84 = IGC number 100, see para 8) come after the IGC-assigned number for the GPS-Datum, which is located directly behind the record subtype identifer DTM.

3.3.1 Required records. The following H records are required, in the order given below:

HFDTEDDMMYY
HFFXAAAA
HFPLTPILOTINCHARGE:TEXTSTRING
HFCM2CREW2:TEXTSTRING
HFGTYGLIDERTYPE:TEXTSTRING
HFGIDGLIDERID:TEXTSTRING
HFDTMNNNGPSDATUM:TEXTSTRING
HFRFWFIRMWAREVERSION:TEXTSTRING
HFRHWHARDWAREVERSION:TEXTSTRING
HFFTYFRTYPE:MANUFACTURERSNAME,FRMODELNUMBER
HFGPS:MANUFACTURERSNAME,MODEL,CHANNELS,MAXALT(AL3)
HFPRSPRESSALTSENSOR:MANUFACTURERSNAME,MODEL,MAXALT(AL3)

plus you can have the following optional records:

HFCIDCOMPETITIONID: TEXTSTRING glider fin number
HFCCLCOMPETITIONCLASS: TEXTSTRING e.g. Standard, 15m, 18m, Open
RecordFormatSampleSummary
HFDTE
HFDTEDDMMYY
HFDTE280709

for 28th July 2009
UTC date this file was recorded
HFFXA
HFFXAAAA
HFFXA035

fix accuracy 35 meters
Fix accuracy in meters, see also FXA three-letter-code reference
HFPLT
HFPLTPILOTINCHARGE:TEXTSTRING
HFPLTPILOTINCHARGE: Bloggs, Bill D
Name of the competing pilot
HFCM2
HFCM2CREW2:TEXTSTRING
HFCM2CREW2: Smith-Barry John A
Name of the second pilot in a two-seater
HFGTY
HFGTYGLIDERTYPE:TEXTSTRING
HFGTYGLIDERTYPE: Schleicher ASH-25
Free-text name of the glider model
HFGID
HFGIDGLIDERID:TEXTSTRING
HFGIDGLIDERID: N116 EL
Glider registration number, e.g. N-number
HFDTM
HFDTMNNNGPSDATUM:TEXTSTRING
HFDTM100GPSDATUM: WGS-1984
GPS datum used for the log points - use igc code 100 / WGS84 unless you are insane.
HFRFW
HFRFWFIRMWAREVERSION:TEXTSTRING
HFRFWFIRMWAREVERSION:6.4
Any free-text string descibing the firmware revision of the logger
HFRHW
HFRHWHARDWAREVERSION:TEXTSTRING
HFRHWHARDWAREVERSION:3.0
Any free-text string giving the hardware revision number of the logger
HFFTY
HFFTYFRTYPE:MANUFACTURERSNAME,FRMODELNUMBER
HFFTYFRTYPE: Cambridge, FunkyLogger 77
Logger free-text manufacturer and model
HFGPS
HFGPSMANUFACTURER,MODEL,CHANNELS,MAXALT
HFGPSMarconi,SuperX,12ch,10000m
Manufacturer and model of the GPS receiver used in the logger. I think there's a TYPO in this section of the FAI document (2008), suggesting a colon is needed.
HFPRS
HFPRSPRESSALTSENSOR:MANUFACTURER,MODEL,MAXALT
HFPRSPRESSALTSENSOR: Sensyn,A32,11000m
Free-text (separated by commas) description of the pressure sensor used in the logger
HFCID
HFCIDCOMPETITIONID: TEXTSTRING
HFCIDCOMPETITIONID: B21
The fin-number by which the glider is generally recognised
HFCCL
HFCCLCOMPETITIONCLASS: TEXTSTRING
HFCCLCOMPETITIONCLASS:15m Motor Glider
Any free-text description of the class this glider is in, e.g. Standard, 15m, 18m, Open.

And here's the field descriptions from the original FAI document.

H record - DescriptionSizeElementRemarks
Data source1 byteF, O or PPlaced after leading H: F=FR,O=OO, P=Pilot. Use F if the data is transferred from the FR even though it was originally entered by a pilot or OO. This is to ensure that data that is entered before flight is protected by the security system in the recorder, and if it is changed after flight it will fail the VALI check.
Record subtype3 bytesCCCAlphanumeric, placed after data source, see para 7 for TLCs
UTC Date6 bytesDDMMYYValid characters 0-9
FXA accuracy category, metres 3 bytesAAAValid characters 0-9 (Default 500)
Lines on Glider Pilot in Charge and Crew Member 2 At least 30 characters Text StringAfter relevant TLC. PLT for name of Pilot in Charge, CM2 for name of Crew Member 2, if any(AL11)
GPS Datum3 bytesNNNWGS 84 must be used, 100 =WGS84 (see para 8)
Lines on FR name, firmware, hardware As required Text StringAfter relevant TLC (eg FTY for FR type) Para 3.3.1
FR Type lineAs required FIncludes detailed model data including sub-types. For instance, not only Model XXX 1 but 1a,1b, etc.(AL9)
HFGPS lineAs required Text StringGives the GPS engine manufacturer and type, number of channels, and the maximum GNSS altitude in metres that could be recorded in the IGC file. Use comma separators between each piece of information. For the Russian GLONASS system use the code GLO instead of GPS and for the European Galileo system use GAL (GLO and GAL are listed in para 7). If another GNSS system is used, apply to GFAC for an appropriate three-letter code. For equipment that receives data from more than one GNSS system, put the receiver maker and type first and then the three-letter code for the first GNSS system followed by the number of channels and the maximum GNSS altitude in metres, then the same data for the second GNSS system, and so forth for other systems.(AL11)
HFPRS lineAs required Text StringGives the pressure altitude sensor (Manufacturer and type) and maximum pressure altitude in metres that could be recorded in the IGC file. Use comma separators between each piece of information.(AL3)
HF FRS lineAs required Text StringFormat: HF FRS SECURITY SUSPECT USE VALI PROGRAM: TEXTSTRING Must be used where security is suspect, for instance if the recorder’s physical security system (microswitch) has operated. The words before the colon are mandatory. The reason for referring to the VALI program is that this is the only complete way of carrying out a full security check. This must not be seen as a replacement for the full VALI check, which also detects any changes after data transfer. The text string shall be a description of the likely fault, such as: "Security Microswitch operated, recorder needs to be re-set"(AL6)

3.3.2 Additional H records. These are optional. Additional data may be appended after the mandatory records. Two additional records (Comp ID and class) are shown below.

H S C I D C O M P E T I T I O N I D : T E X T S T R I N G CR LF
H S C C L C O M P E T I T I O N C L A S S : T E X T S T R I N G CR LF

Note - Ian Forster-Lewis: I think this is a TYPO: HSCID would not be valid format. The correct record should be HFCID. Same for HFCCL.

3.3.3 Names and identifications.

Similar names. Where there may be people with names which are similar or the same (Smith/Schmidt), full initials or other names should be used. In addition, a TLC of DOB for Date-of-Birth is available, and if used, this must be in the line following the pilot's name in the format DDMMYY (the same format as used for date of flight in the H record).

Name of Crew Member 2 (code CM2), family name first then other names or initials without punctuation but separated by spaces (for instance, SMITH B S, or SMITH BERNALD)

Sufficient characters should be made available to allow for long names and identifications. Such as, for glider registration, allow for a registration such as XXXX-AAAA (where XXXX is the designator of the Nation or National Airsport Body), requiring at least 9 characters to be available in this field. Manufacturers should provide for more rather than less characters in these fields so that flight declarations are easily made in full(AL3).

Club or organisation from which flown or operated (code CLB), with nation (for instance LASHAM UK, ELMIRA US). Where there is not space to put the Nation in full, the two-letter codes from the ISO 3166 list of National designators should be used (these are also used for Nations in Internet addresses). Some ISO 3166 two-letter National Codes are as follows(AL3):

ISO 3166 TWO-LETTER NATIONAL CODES
AR - ARGENTINA
AT - AUSTRIA
AU - AUSTRALIA
BE - BELGIUM
BR - BRAZIL
CA - CANADA
CH - SWITZERLAND
CL - CHILE
CN - CHINA
CO - COLOMBIA
CZ - CZECH REPUBLIC
DE - GERMANY
DK - DENMARK
EC - ECUADOREE - ESTONIA
EG - EGYPT
ES - SPAIN
FI - FINLAND
FR - FRANCE
GR - GREECE
HR - CROATIA (HRVATSKA)
HU - HUNGARY
ID - INDONESIA
IE - IRELAND
IL – ISRAEL
IN – INDIA
IS – ICELAND
IT – ITALY
JP – JAPAN
KR – KOREA (S)
LT – LITHUANIALV - LATVIA
MX – MEXICO
MY – MALAYSIA
NL - NETHERLANDS
NO - NORWAY
NZ - NEW ZEALAND
PL - POLAND
PT - PORTUGAL
RU - RUSSIA
SE - SWEDEN
SI - SLOVENIA
SK - SLOVAKIA
TR - TURKEY
TW- TAIWAN
UK - UNITED KINGDOM
US - UNITED STATES
UY - URUGUAYVE - VENEZUELA
ZA - SOUTH AFRICA

3.4 I RECORD - EXTENSIONS TO THE FIX B record. The I record defines any extensions to the fix B record in the form of a list of the appropriate Three-Letter Codes (CCC), data for which will appear at the end of subsequent B Records. Only one I-Record line is included in each file, located after the H record and before the first B Record. The Fix Accuracy (FXA) must be included, in the form of the Estimated Position Error figure (see Glossary under EPE). This shall be followed by SIU, ENL and RPM, if these are recorded in the FR concerned. Note that although the SIU number is optional in the B record, the F Record (satellite constellation used) is mandatory, see para 4.3. The format of the I Record is as follows:(AL11)

I N N S S F F C C C S S F F C C C CR LF
I record - DescriptionSizeElementRemarks
Number of extensions2 bytesNNValid characters 0-9
Start byte number2 bytesSSValid characters 0-9
Finish byte number2 bytesFFValid characters 0-9
3-letter Code3 bytesCCCAlphanumeric, see para 7 for list of codes

The first byte of the extension data always begins at byte position 36, because that's where the basic lat/long/alt stuff of the B record ends.

The byte count starts from the beginning of the B Record, taking the first B in the line as byte one. Example:

I 01 36 40 FXA CR LF

This shows that Fix Accuracy (FXA) is recorded between bytes 36 and 40 on each B-record line. And, for a device that also records Satellites In Use (SIU) and Engine Noise Level (ENL):

I 04 3638 FXA 3940 SIU 4143 ENL 4446 RPM CR LF

This shows that on each B-record line, Fix Accuracy (FXA) is recorded between bytes 36 and 38, Satellites In Use (SIU) between bytes 39 and 40, Engine Noise Level (ENL) between bytes 41 and 43 and RPM between bytes 44 and 46. To aid clarity, some spaces have been inserted in the example line above, these should not be used in the actual B record in the IGC file.(AL11)

3.5 J RECORD - EXTENSIONS TO THE K RECORD. The K record is used for data that needs to be updated as a flight progresses but is not required as often as fix B records. The J record is a single line that defines what data will be in subsequent K-record lines. It fulfils the same function for the K Record as the I Record (3.4 above) does for the fix B record, and operates in the same way. It is placed in the file immediately after the I record line, before the first B Record. The format of the J Record is as follows:

J N N S S F F C C C S S F F C C C CR LF
J record - DescriptionSizeElementRemarks
Number of extensions2 bytesNNValid characters 0-9
Start byte number2 bytesSSValid characters 0-9 (from start of K Record)
Finish byte number2 bytesFFValid characters 0-9
3-letter Code3 bytesCCCAlphanumeric, see para 7

Example:

J 0 1 0 8 1 2 H D T CR LF

This shows that True Heading (HDT) is recorded between bytes 8 and 12 on each K-record line.

3.6 C RECORD - TASK. (Pre-flight Declaration)

The C Record is used to specify tasks and to make preflight declarations. It is placed in the IGC file before the first fix B record and after the H, I and J records.

3.6.1 Lines in the C Record. The first line contains the UTC-date and UTC-time of the declaration, the local date of the intended day of flight, the task ID, the number of turn points of the task and a textstring which can be used to describe the task (500k triangle, etc). Optionally, the recorder may be configured so that a pilot can enter the intended flight date in local time, not the UTC date which will be different in countries with large time offsets from UTC (The Three-Letter Code for Time Zone Offset is TZN, see the list in para 7). The other lines contain the WGS84 lat/long coordinates and a textstring for the place or point concerned. These include the take-off airfield, start point, turn points, finish point and landing airfield. After the first line, the other lines contain the WGS84 lat/long co-ordinates of the point followed by a text string for the place or point concerned. The text describing the type of point (see example below) is mandatory so that the nature of the points can be clearly seen by viewing the IGC file.(AL6) & 11)

3.6.2 IGC terminology. "Waypoint or way point " refers to a either a start-, turn- or finish-point. The term "Turn Point" refers to a point in a measured course between the start and finish point. The points that must be specified exactly in an official IGC flight declaration are the intended start-, turn- and finish-points (Sporting Code Section 3, para 4.2). The number of turn points will be nil for a straight goal flight, one for an out-and-return, two for a triangle, three for 3-TP distance, more for some competition tasks.(AL6)

3.6.3 Takeoff and Landing. The two lines in the C-record format for takeoff airfield and landing airfield (or out-landing location if this applies), are for general information rather than being part of the official IGC Flight Declaration. They can be entered approximately or, if the co-ordinates are difficult to obtain or are not entered, the recorder shall default to 00000000N000000000E for these two lines.(AL6)

3.6.4 Number of Turn points and C-Record lines. From the above it can be seen that the number of turn points will be four less than the number of lines after line 1 (that is, those lines that contain lat/long data). These four non-turn point data lines are for takeoff airfield, exact start, exact finish, and landing airfield/location. The number of turn points is included as a sub-field in line 1 of the C-record and is placed immediately before the optional text string at the end of the line (in the form TT in the illustration below).(AL6)

3.6.5 Area Tasks. The incorporation of this facility in a Flight Recorder is optional. In some competitions, an area to be reached is specified with respect to a Waypoint in terms of distances and true bearings (radials) from the point. If a recorder has a facility to enter this in the C record, the following system shall be followed in the IGC file: At the end of the relevant Waypoint line in the C record, minimum and maximum distances follow in kilometers from the WP, followed by bearing 1 and bearing 2 in degrees true from the WP and then the word AREA after the type of point. In the case of competitions using units other than kilometres (such as statute or international nautical miles), a conversion must be made so that the IGC file continues to be in kilometres (and decimal kilometres as necessary). The area is clockwise from bearing 1 to 2. In the case of circular areas round a point the two bearings used shall be 000 to 360 and the minimum distance will be zero. Where an area referenced to a Waypoint is to be specified, after the C record line that defines the Waypoint but before CRLF at the end of the line, add:

"DDDDdddDDDDdddBBBbbbBBBbbbAREA"

The two distances Dd are first minimum distance from the WP in km and decimal kilometres, then maximum distance. The two bearings Bb are in degrees and decimal degrees true from the WP, the task area extending clockwise from bearing 1 to 2.

For instance: "C....0012000 0032000 122000 182000TURN AREA" would be an area from 12 to 32 km from the WP between the bearings 122 and 182 from the Point.(AL6)

The format of C Record is as follows, using N latitude and E longitude for the example:

C DD MM YY HH MM SS F D F M F Y IIII TT TEXT STRING CR LF
C DD MM MMM N DDD MMMMM E TAKEOFF TEXT STRING CR LF
C DD MM MMM N DDD MMMMM E START TEXT STRING CR LF
C DD MM MMM N DDD MM MMM E TURN TEXT STRING CR LF
C DD MM MMM N DDD MM MMM E TURN TEXT STRING CR LF
C DD MM MMM N DDD MM MMM E FINISH TEXT STRING CR LF
C DD MM MMM N DDD MM MMM E LANDING TEXT STRING CR LF

Spaces have been added between data fields in this example to aid clarity.

The Text String is intended to be the name and short description of the Point For an area referenced to a Turn Point:

C DD MMMMMN DDD MMMMME 0012000 0032000 122000 182000TURN AREA CR LF(AL6)
C record - DescriptionSizeElementRemarks
Date UTC6 bytesDDMMYYValid characters 0-9
Time UTC6 bytesHHMMSSValid characters 0-9
Flight date6 bytesFDFMFYValid characters 0-9. If not used, fill with zeros (AL2)
Task number on the day 4 bytesIIIIValid characters alphanumeric, may be an ID reference or a 1-2-3 sequence. ; if not used, the default is 0001. The last declaration before takeoff is the definitive declaration (a task need not be declared on the day of the flight, an electronic declaration is valid until superseded by another valid declaration).
Number of Task TPs 2 bytesTTValid characters 0-9. 1 for an out-and-return, two for a triangle, etc.
TO or A/F LatLon 17 bytes DDMMmmmN
DDDMMmmmE
to the WGS84 Geodetic Datum
The exact declared point is defined by the latitude and longitude.(AL11) Plus textstring for any local turn point code numbers, letters, name or brief description. The declared start point, turn points, and the finish point with their Latitude and Longitude are mandatory; the takeoff/landing or airfield data are not part of the IGC declaration requirement given in the Sporting Code for Gliding (SC3) but are useful extra data particularly where remote starts or finishes are used. If the coordinates of a point which is not part of the official task are difficult to include beforehand (such as takeoff, landing, or the fields for takeoff and landing), they should be set to 00000000N000000000E.
Start LatLon
T/P LatLon
T/P LatLon
Finish LatLon
Land or A/F LatLon

4.MULTIPLE INSTANCE DATA RECORDS

These are record types that can re-occur at different times in the course of the IGC file, unlike single instance records that occur in each file only in one place.

4.1 B RECORD - FIX. Not counting the last CRLF, this includes 35 bytes for its basic data plus those for characters that are defined in the I Record. Such as Fix Accuracy (FXA, in the form of the Estimated Position Error figure, see Glossary under EPE), Satellites In Use (SIU), Engine Noise Level (ENL for all motor gliders), RPM (additional for motor gliders with quiet engines). The required basic data is: UTC, WGS84latitude,WGS84 longitude, fix validity, Fix Accuracy, pressure altitude and GNSS-altitude. All of the information within each B-record must have a data issue time within 0.1 seconds of the time given in the B-record. Where NMEA data is used within the FR, fix data should be taken either from the GGA or GNS sentences. GGA is specific to the US GPS system. GNS is intended for all GNSS systems (GPS, GLONASS, Galileo and future systems), and should be used if it is available from the GNSS board installed. In the B Record FXA should be recorded as a three-figure group in metres and SIU as a two group number. SIU is an optional record and may be used to back up the more detailed satellite data in the mandatory F record. Leading zeros should be included as necessary. Because earlier IGC-approved GNSS FRs may not have FXA and SIU in their B-records, the position of this data in each B record line must be indicated (for instance to analysis programs) by including them in the I record which designates the positions of additional fields in the B record. FXA should be placed after the two groups for altitude, followed by optional fields such as SIU and then ENL for Motor Gliders. In each B-record line, FXA would therefore normally occupy bytes 36, 37 and 38, SIU bytes 39 and 40, ENL either 39-41 or 41-43 depending whether SIU is used. The format of the basic data is:(AL11)

B H H M M S S D D M MM MM N D D D M MM MM E V P P P P P G G G G G CR LF
B record - DescriptionSizeElementRemarks
Time UTC6 bytesHHMMSSValid characters 0-9. When a valid GNSS fix is received, the UTC time in a B-record line must be obtained directly from the same GNSS data package that was the source of the Lat/long and GNSS altitude that is recorded in the same B-record line. Other sources for the time in a B-record line (such as the Real-Time Clock in the recorder) must only be used to provide time-continuity where GNSS fixes are not available(AL9)
Latitude8 bytesDDMMmmmN/SValid characters N, S, 0-9. Obtained directly from the same GPS data package that was the source of the UTC time that is recorded in the same B-record line. If no latitude is obtained from satellite data, pressure altitude fixing must continue, using times from the RTC. In this case, in B record lines must repeat the last latitude that was obtained from satellite data, until GPS fixing is regained.(AL11)
Longitude9 bytesDDDMMmmmE/WValid characters E,W, 0-9. Obtained directly from the same GPS data package that was the source of UTC time that is recorded in the same B-record line. If no longitude is obtained from satellite data, pressure altitude fixing must continue, using times from the RTC. In this case, in B record lines must repeat the last longitude that was obtained from satellite data, until GPS fixing is regained.(AL11)
Fix validity1 byte.A or VUse A for a 3D fix and V for a 2D fix (no GPS altitude) or for no GPS data (pressure altitude data must continue to be recorded using times from the RTC) .(AL11)
Press Alt.5 bytesPPPPPAltitude to the ICAO ISA above the 1013.25 HPa sea level datum, valid characters 0-9 and negative sign "-". Negative values to have negative sign instead of leading zero
GNSS Alt.5 bytesGGGGGAltitude above the WGS84 ellipsoid, valid characters 0-9

To append the Fix Accuracy (FXA, mandatory), Satellites in Use (SIU), Engine Noise Level (ENL) and RPM (RPM) or any other variable to each fix, these have to be defined earlier in the I Record (so that, for instance, they will be recognised by analysis programs). For instance:

I 04 3638 FXA 3940 SIU 4143 ENL 4446 RPM CR LF

This shows that on each B record line, Fix Accuracy is recorded between bytes 36 and 38, Satellites In Use between bytes 39 and 40, Engine Noise Level between bytes 41 and 43, and engine RPM between bytes 44 and 46.

The resulting B Record becomes (with spaces for clarity in this example):

BHH MM SS DD MMMMM N DDD MMMMM E V PPPPP GGGGG AAA SS NNN RRR CR LF"
B record - DescriptionCodeSizeElementRemarks
Fix AccuracyFXA3 bytesAAAValid characters 0-9, metres, mandatory parameter after Amendment 4
Satellites in UseSIU2 bytesS SValid characters 0-9
Engine noiseENL3 bytesNNNValid characters 0-9

Note (Ian Forster-Lewis): This section of the document looks to be in error - this B record should contain RPM

4.2 E RECORD - EVENTS.

The E-record is used to record specific events on the IGC file that occur at irregular intervals. Such events include a pilot-initiated event (PEV code) or, for recorders fitted with proximity sensing devices, a proximity event using one of the appropriate Three-Letter Codes followed by the appropriate data as defined under the appropriate TLC in section 7. The E Record is placed before the individual fix B record for the same time that shows where and when the event occurred. Events must have a Three Letter Code (TLC) from section 7. More than one event record may be used at the same time, but Events initiated within the FR (as opposed to by the pilot) are only expected to be occasional in the time-history of the flight file and should not be used for making additional records with every fix. This may confuse the analysis programs designed for use with this file format, which often search for and highlight event records. If a FR manufacturer wishes to insert additional information with each fix, this should be through an extension to the B record, first listing the information Code (CCC) in the I record. (amended (AL9)

If a manufacturer wants to add a new type of event, a new Three Letter Code (para 7) should be requested from GFAC. The manufacturer must provide an exact definition of the event and a proposed coding. GFAC may decide that the proposal should not be treated as an event but that the information should be incorporated into the B- or K record in the normal way for these records by listing in the I and J records.

The form of the E-Record is record identifer, time, TLC, textstring. Some examples follow:

E 1 0 4 5 3 3 P E V CR LF
B 1 0 4 5 3 3 4 9 4 5 3 3 3 N 0 1 1 3 2 4 4 4 E A 0 1 3 5 7 0 1 5 0 1 CR LF

This indicates a pilot initiated event (PEV) at 10:45:33 UTC, and the associated B record shows the location 49:45.333 N 11:32.444 E, at the pressure altitude 1357 metres and GNSS altitude 1501 metres.

Some events require more than just the TLC for interpretation:

E 1 0 4 5 4 4 A T S 1 0 2 3 1 2 CR LF

The altimeter setting in a display device connected to the FR was changed to 1023.12 hPa at the time 10:45:44

E 1 0 4 5 5 5 E O N CR LF
B 1 0 4 5 5 5 4 9 4 5 3 3 3 N 0 1 1 3 2 4 4 4 E A 0 1 3 3 7 0 1 5 6 7 CR LF

The engine was turned on (EON) at 10:45:55 UTC, and the B record shows the location 49:45.333 N 11:32.444 E, at the pressure altitude 1337 metres and GNSS altitude 1567 metres.

E 1 0 4 7 3 3 C G D 1 0 3 CR LF

The geodetic datum was changed to Bessel (IGC number 103, see para 8) at 10:47:33 UTC. This would invalidate the recording for IGC purposes, for which WGS84 must be used.

4.3 F RECORD - SATELLITE CONSTELLATION.

This is a mandatory record. However, there is no requirement to update the F-record at intervals of less than 5 minutes, so that transient changes of satellites received due to changing angles of bank, flying in valleys, etc do not lead to frequent F-record lines. For the US GPS system, the satellite ID for each satellite is the PRN of the satellite in question, for other satellite systems the ID will be assigned by GFAC as the need arises. Where NMEA data is used within the FR, the ID should be taken from the GSA sentence that lists the IDs of those satellites used in the fixes which are recorded in the B record. The F Record is not recorded continuously but at the start of fixing and then only when a change in satellites used is detected.(AL4)

Format of F Record:
F HH MM SS AA BB CC DD EE FF GG CR LF
F record - DescriptionSizeElementRemarks
Time UTC6 bytesHHMMSSValid characters 0-9
Satellite ID2 bytes for each satellite used AABBCC Or 01, 02 etc Valid characters alphanumeric

4.4 K RECORD - DATA NEEDED LESS FREQUENTLY THAN FIXES.

The K record is for data that may be needed less frequently than fix B records. The K record should have a default interval of 20 seconds. As an example, if the B record records every 5 seconds, the K-record could be set to record every 20 seconds, for instance containing true heading (HDT). The contents of the K record are listed in the J record. The following J Record specifies the information in the K Record in the next line:

J 0 8 1 2 H D T CR LF
K H H M M S S 0 0 0 9 0 CR LF

This K Record states that the true heading (TLC = HDT) is 090 (East).

4.5 L RECORD - LOG BOOK/COMMENTS. L-Records can be placed anywhere in the file after H, I and J records but before the G record. The L-Record allows multiple free format text lines to be added to the flight data records at any time in the time-sequence, although this record is not itself time-stamped. It can be initiated by a program in the FR, by pilots or official observers, and the term "comment record" may be more descriptive rather than "logbook". The FR Manufacturer three-letter ID (para 2.5) should be used in the case of data initiated by the FR, and in this case the manufacturer should state how to interpret this type of L-Record for the benefit of writers of software for the IGC format. In other cases this field (MMM below) will also be three spaces, initiated by the pilot (code PLT) or OO (OOI) as required. In the case of Free Flights where waypoints are claimed post-flight by the pilot, the PFC (Post-Flight Claim) code shall be used followed by the Waypoints in the same format as the C Record (Pre-flight declaration). It is expected that this data will be inserted by a software program (for instance, after transfer of the flight data to a PC immediately after flight, by a program outside the FR) rather than added manually, so that it is in the correct format and can be recognised by analysis programs that are designed to read Post-Flight Claim data and present the flight on screen together with the PFC waypoints. Note that L records when originated by a pilot or OO must not affect the VALI check for the rest of the file data. The format of the L Record is as follows:(AL5)

L MMM T E X T S T R I N G CR LF
L PLT T E X T S T R I N G CR LF
L PFC TEXT AS C RECORD CR LF
L record - DescriptionSizeElementRemarks
Manufacturer input3 bytesMMMManufacturer's code, see para 2.5
Pilot input3 bytesPLTText string after PLT
OO input3 bytesOOIText string after OOI
After flight pilot input3 bytesPFCFor free flight after-flight choice of course

The L records which have the FR Manufacturer's ID MMM must be included in the digital signature (security system) for the file. Other L records (eg those put in by the pilot (PLT) or an OO (OOI)) will not be covered by the digital signature for the file, see para 3.2. Examples of pilot inputs:

LPLT This flight was my second 1000km attempt
LPLT from Eagle Field

4.6 D RECORD - DIFFERENTIAL GPS.

This indicates that differential GPS is being used and can be a multiple-instance record if, during the flight, more than one differential beacon is used. It is placed in the IGC file before the first fix B record after the H, I, J and C records. The format of the D Record is as follows. (AL8)

D Q S S S S CR LF
L record - DescriptionSizeElementRemarks
GPS Qualifier1 byteQUse 1=GPS, 2=DGPS
DGPS Station ID4 bytesSSSS 

These parameters correspond to the NMEA GGA GPS quality indication. The absence of a D Record indicates that differential GPS was not used. Any use of DGPS is subject to GFAC approval, and it must be shown that the use of GPS preserves the integrity of basic lat/long and other flight data.

5. DEFINITIONS


airspeed - The true airspeed of the aircraft in kph, for systems with air data input.
Alphnumeric - Valid alpha and/or numeric character from the list of valid characters (para 6).
competition class - The IGC/FAI competition class of the aircraft.
constellation - The precise satellites from which data was used to determine the GNSS fix. This may be used to verify the validity of the flight data.
course - The direction between two points expressed as degrees magnetic or true.
datum - The GNSS datum (co-ordinate system) in use.
engine down - The Means of Propulsion (MoP) (eg engine and propeller) is stowed and not in a position to generate thrust.
Engine Noise Level (ENL) - Ambient noise at the FR expressed as three numbers, maximum 999. This continuously-recorded active parameter registers a positive baseline level (ie not a zero level) even when the MoP is not in operation, and so produces a continuous check of the integrity of the MoP-recording system.
engine off - The Means of Propulsion (MoP) is in a condition where thrust cannot be generated.
engine on - The Means of Propulsion (MoP) is in a condition when thrust could be generated.
engine rpm - This is a parameter related to engine RPM, see the Three-Letter Code RPM.
engine up - The propulsion unit pylon is extended or the engine or propeller doors are open, in a condition in which thrust can be generated on starting the engine.
equipment events - These are events generated solely by the FR (such as detecting takeoff), as opposed to events generated after flight by the analysis of the FR flight data (such as establishing presence in a Turn Point Observation Zone or crossing a start or finish line).

finish - The end of a task, such as crossing a finish line, entering a finish observation zone, or (for some distance flights) landing. Definitions, Sporting Code (SC3) main volume.
fix accuracy - The accuracy of the fix concerned expressed as EPE in metres, normally to a 2-sigma (95.45%) probability. See EPE in the Glossary.
fr serial number - a three-character alphanumeric which is unique within all FRs of all types from that manufacturer, and is allocated by the manufacturer to identify an individual FR. It is used in the first (A) record (see this appendix, para 3.1) and in the IGC file name (para 2.5).
glider id - The unique registration alphanumeric of the individual aircraft.
glider type - The manufacturer and precise model number of the aircraft.
gnss altitude - A five numeric character group indicating the GNSS altitude in metres above the ellipsoid.
gnss connect - Where a separate GNSS unit is used, indicates GNSS connection to the FR module
gnss disconnect - Where a separate GNSS unit is used, indicates GNSS disconnection from the FR module.
ground speed - The speed over the ground in kph.
heading - The direction in which the aircraft is pointed (the longitudinal axis) in degrees true or magnetic.
latitude - A seven character alphanumeric group expressed as two figures for the degrees, two figures for the minutes and three figures representing tenths, hundredths and thousandths of minutes followed by the N or S character. Where this is inserted into a FR such as part of a flight declaration, the N/S character must be capable of being entered in either upper or lower case. For IGC purposes lat/long must be referenced to the WGS84 Geodetic Datum.
longitude - An eight character alphanumeric group expressed as three figures for the degrees, two figures for the minutes and three figures representing tenths, hundredths and thousandths of minutes followed by the E or W character. Where this is inserted into a FR such as part of a flight declaration, the N/S character must be capable of being entered in either upper or lower case. For IGC purposes lat/long must be referenced to the WGS84 Geodetic Datum.

on task - The pilot is attempting a Task.
oo id - A series of alphanumerics that is entered by an OO into the FR before flight. It consists of a minimum of four characters and is confidential to the OO.
photo - A photograph has been taken, such as of a turn point.
Pilot Event (PEV code) – Where the pilot has marked a particular time. This may represent a number of different occurrences or events such as crossing a start line (or marking the intention to cross shortly) or arriving at a point. A sequence of fast fixes follows (para 2.6.7.3).(AL8)
pressure altitude - A five numeric group indicating the pressure altitude in metres above the 1013.25 HPa sea level datum and the ICAO ISA above.
raim - Receiver Autonomous Integrity Monitoring (when used) - This is used to indicate the quality of GNSS navigation data, see the Glossary section.
record extension - This allows extra information to be added to the fix (B) and extension (K) data records.
Security data (Digital Signature) - This is used to verify that the flight data has not be altered during or since the flight.
start - The start of an official soaring performance. For definitions, see the Sporting Code (SC3).
supplemental data fix - The use of external non-satellite data to assist the GNSS unit determine the position, such as a ground.-based beacon
task - The main points of an intended flight. Normally an intended start, turn points and finish.
total energy altitude - The combination of the gliders potential and kinetic energy expressed in metres of effective altitude.
track - The true track (flight path) over the ground that the aircraft has achieved.
turn point validation - Proof of presence in the relevant Observation Zone for the point concerned.

6. VALID CHARACTERS

These consist of all printable ASCII characters from Hex 20 to Hex 7E, except those tabulated below as reserved. A text string is a sequence of valid characters. The following table shows the character first and then the hexadecimal code, and the second table presents the same information in hex order:

NUMBERS LETTERS SYMBOLS
Res = reserved
RESERVED
CHARACTERS
Upper Case Lower Case

0 = Hex 30
1 = 31
2 = 32
3 = 33
4 = 34
5 = 35
6 = 36
7 = 37
8 = 38
9 = 39

A = Hex 41
B = 42
C = 43
D = 44
E = 45
F = 46
G = 47
H = 48
I = 49
J = 4A
K = 4B
L = 4C
M = 4D

N = 4E
O = 4F
P = 50
Q = 51
R = 52
S = 53
T = 54
U = 55
V = 56
W = 57
X = 58
Y = 59
Z = 5A

a = Hex 61
b = 62
c = 63
d = 64
e = 65
f = 66
g = 67
h = 68
i = 69
j = 6A
k = 6B
l = 6C
m = 6D

n = 6E
o = 6F
p = 70
q = 71
r = 72
s = 73
t = 74
u = 75
v = 76
w = 77
x = 78
y = 79
z = 7A

Space = Hex 20
Res = 21
" = 22
# = 23
Res = 24
% = 25
& = 26
' = 27
( = 28
) = 29
@ = 40
` = 60
Res = 2A
+ = 2B
Res = 2C
- = 2D
. = 2E

, = 2C
/ = 2F
: = 3A
; = 3B
< = 3C
= = 3D
> = 3E
? = 3F
[ = 5B
Res = 5C
] = 5D
Res = 5E
_ = 5F
{ = 7B
| = 7C
} = 7D
Res = 7E

CR = 0D
LF = 0A
$ = 24
* = 2A
! = 21
\ = 5C
^ = 5E
~ = 7E
These characters are reserved (not to be used) because they could be confusing if used in a text string, for instance due to other meanings or alternative keystrokes

7. THREE-LETTER CODES (TLC)

These are shown as CCC in the formats earlier in this appendix. Their meanings are listed below together with the Records in the IGC file in which they can be used. If a manufacturer wants to add a new type of event, a new TLC should be requested from GFAC. The manufacturer should provide an exact definition of the event and a proposed coding.

CODERecord Letter(s) TLC is used withTLC meaning, notes on how it is to be used
ATSH,EAltimeter pressure setting in hectoPascals with 4 numbers and one decimal point (for instance, 1013.2, 0995.7). Although an altimeter pressure setting may be recorded (for instance where the FR feeds a cockpit display), it must not be used to change the pressure altitude recorded with each fix, which must remain with respect to the ISA sea level datum of 1013.25 mb at all times(AL8)
CCLHCompetition class
CCNECamera Connect
CCOJ,KCompass course (from the aircraft compass sensor). Three numbers based on degrees clockwise from 000 for north.(AL8)
CDCECamera Disconnect
CGDEChange of geodetic datum
CIDHCompetition ID
CLBHClub or organisation, and country, from which flown or operated (eg Elmira US, Lasham UK). For Nation, use the ISO 3166 two-letter codes, some of which are given in para 3.3.3 of Appendix A
CM2HSecond Crew Member's Name, family name first then given name(s) as required (same format as PLT for pilot-in-charge). For aircraft with more than two crew, use CM3 and so forth if required.(AL8)
DAEI,B,J,KDisplacement east, metres. For West use negative sign
DANI,B,J,KDisplacement north, metres. For South use negative sign
DB1HDate of Birth of the pilot-in-charge (aircraft commander) in the previous line of the H record (DDMMYY)(AL8)
DB2HDate of Birth of second crew member in format DDMMYY. For aircraft with more than two crew, use DB3 and so forth if required.(AL8)
DOBHObsolete code, now use DB1. Was Date of Birth of the pilot in the previous line of the H record (DDMMYY)(AL8)
DTEHDate, expressed as DDMMYY DTM H Geodetic Datum in use for lat/long records (for IGC purposes this must be set to WGS84)
EDNEEngine down. See note on line for EON
ENLI,BEngine Noise Level, recorded from 000 to 999. This is the preferred MoP recording method because it requires no cables or sensors external to the FR, and is selfvalidating, recording a positive value with each fix.
EOFEEngine off. See note on line for EON
EONEEngine on. Note: Where ENL or RPM are not used as the primary indicator of MoP operation, event records and the EON/EOF or EUP/EDN codes shall be used. A combination of the two methods may be used, eg EON/EOF based on a parameter such as ignition ON/OFF, a minimum generator output, EUP/EDN for engine bay doors open/closed or pylon up/down; plus RPM based on prop or engine rpm, or ENL for noise level at the FR.
EUPEEngine up. See note on line for EON
FINEFinish
FLPEFlap position, three characters such as FLP060 for 60 degrees of positive flap. If negative, use a negative sign before the numbers, such as FLP-20 for minus 20 degrees flap.(AL8)
FRSHFlight Recorder Security. To be used where a security fault has been detected such as the recorder internal security system (microswitch) having operated.(AL6)
FTYHFR Type (Manufacturer's name, FR Model Number)
FXAI,B,J,KFix accuracy. When used in the B (fix) record. This is the EPE (Estimated Position Error) figure in metres (MMMM) for the individual fix concerned, to a 2-Sigma (95.45%) probability(AL8)
FXAHFix Data Accuracy Category. When used in the header record, this is a general indication of potential fix accuracy and indicates a category of receiver capability rather than an exact figure such as applies to each recorded fix in the B, I, J or K records, see above. If in doubt, use a three figure group in metres that refers to a typical EPE radius achieved by the receiver in good reception conditions.(AL3)
GALHGalileo (European GNSS system), followed by receiver maker, type & version letter/number. See 3.3.1 above.(AL11)
GCNEGNSS (Separate module) Connect
GDCEGNSS (Separate module) Disconnect
GIDHGlider ID
GLOHGLONASS (Russian GNSS system), followed by receiver maker, type & version letter/number. See 3.3.1 above(AL11)
GPSHGPS (US GNSS system), followed by receiver maker, type & version letter/number. See 3.3.1 above.(AL11)
GSPI,B,J,KGroundspeed, three numbers in kilometres per hour(AL8)
GTYHGlider type, manufacturer, model
HDMI,B,J,KHeading Magnetic, three numbers based on degrees clockwise from 000 for north (AL8)
HDTI,B,J,KHeading True, three numbers based on degrees clockwise from 000 for north(AL8)
IASI,B,J,KAirspeed, three numbers in kilometres per hour(AL8)
LADI,BThe last places of decimal minutes of latitude, where latitude is recorded to a greater precision than the three decimal minutes that are in the main body of the B record. The fourth and any further decimal places of minutes are recorded as an extension to the B record, their position in each B record line being specified in the I record. (AL8)
LODI,BThe last places of decimal minutes of longitude, where longitude is recorded to a greater precision than the three decimal minutes that are in the main body of the Brecord. The fourth and any further decimal places of minutes are recorded as an extension to the B record, their position in each B record line being specified in the I record.(AL8)
LOVELow voltage. Must be set for each FR at the lowest voltage at which the FR will operate without the possibility of recorded data being degraded by the voltage level. Not to be used to invalidate a flight if the flight data appears correct when checked in the normal way, but a warning to check fix data particularly carefully. (AL1)
MACEMacCready setting for rate of climb/speed-to-fly (m/sec)(AL8)
OA1 OA2 OA3 EtcEPosition of other aircraft (if this is recorded by the system), data fields after the Codes being separated by colons. Format after the Three Letter Code is the identification of the aircraft concerned (if this is recorded by the system, otherwise insert NK for not known) followed by a colon, letter P for polar or C for Cartesian followed by the co-ordinates. Polar co-ordinates are with respect to the recorder. Format is numbers for horizontal distance in metres from the recorder followed by a colon, followed by 3 numbers of degrees clockwise from 000 for north, followed by a colon and vertical distance in metres from the recorder, a negative sign before the numbers meaning negative vertical distance. After the numbers for vertical distance, the letter G should be used for GNSS data and P for Pressure Altitude, both can be used if the data is available. Alternatively, Cartesian co-ordinates can be used for the 3D position of the Other Aircraft (for instance from ADS-B and similar position reporting systems). Format is lat/long followed by pressure and GPS altitudes (if these are recorded by the system) in the same order and format as for the B record (para 4.1), omitting the fix validity character. Where a type of altitude is not recorded, zeros should be substituted.(AL10)
OATJ,KOutside air temperature (Celsius). If negative, use negative sign before the numbers.
ONTEOn Task – attempting task
OOIHOO ID – OO equipment observation
PEVEPilot EVent - Pilot initiated action such as pressing a button. A sequence of fast fixes follows (para 2.6.7.3).(AL8)
PFCLPost-Flight Claim. For Free Flights where waypoints are claimed post-flight.(AL5)
PHOEPhoto taken (shutter-press)
PLTHPilot-in-charge (aircraft commander), family name first then given name(s) as required(AL8)
PRSHPressure Altitude Sensor, manufacturer, model, etc.(AL3)
RAII,B,J,KRAIM - GPS Parameter, see Glossary
REXI,B,J,KRecord extension - Manufacturer defined data defined in the I or J record as appropriate, normally in the form of a TLC (which, if a new variable is agreed, may be a new TLC allocated by GFAC at the time). Any use must be approved by GFAC, and published so that there will be no doubt on how it is being used.(AL4)
RFWHFirmware Revision Version of FR
RHWHHardware Revision Version of FR
RPMI,BA group of three numbers from 000 to 999 associated with the generation of forward thrust. Examples include propellor or engine RPM or another MoP variable agreed with GFAC that varies in a similar way. Such variable must always be recorded and must not be able to be switched off by the pilot, for instance through a cockpit switch, circuit-breaker or fuse. The whole range of numbers up to 999 shall be used. For instance, if RPM is recorded and maximum RPM is 3000, this shall be recorded in the B record as 999 or close to it. The baseline minimum value must produce positive but low RPM numbers on the IGC file (such as 010 but not above 025) as a continuous check that the circuit is still live. GFAC will look particularly at the recording of lower powers that give forward thrust and ensure that they produce high enough numbers to clearly show any use of engine.(AL10)
SCMHObsolete code, now use CM2. Was Second Crew Member's Name(AL8)
SECGSecurity - Log security data
SITHSite, Name, region, nation etc.
SIUI,BSatellites in use. A two-character field from the NMEA GGA or GNS sentences, as appropriate, or equivalent data agreed by GFAC.(AL4)
STAEStart event
TASI,B,J,KAirspeed True, give units (kt, kph, etc.)
TDSI,B,J,KDecimal seconds of UTC time, for use with systems recording time to this accuracy. Time in seconds is recorded in the main body of the B record and decimal seconds are recorded as an extension to the B record, their position in each B record line being specified in the I record. Similarly with the K and J records.(AL8)
TENI,B,J,KTotal Energy Altitude in metres
TPCETurn point confirmation - Equipment generated event (not valid for flight validation which requires independent checking of fixes and relevant Observation Zones)
TRMI,B,J,KTrack Magnetic. Three numbers based on degrees clockwise from 000 for north (AL8)
TRTI,B,J,KTrack True. Three numbers based on degrees clockwise from 000 for north(AL8)
TZNHTime Zone Offset, hours from UTC to local time.
UNDEUndercarriage (landing gear), recorded as UP or DN, in the format UNDUP or UNDDN.(AL8)
UNTHUnits of Measure
VARJ,KUncompensated variometer (non-total energy) vertical speed in metres and decimal metres. If negative, use negative sign before the numbers.(AL8)
VATJ,KCompensated variometer (total energy/netto) vertical speed in metres and decimal metres. If negative, use negative sign before the numbers.(AL8)
VXAI,B,J,KVertical Fix Accuracy, Three characters in metres from the VDOP part of the NMEA GSA sentence, or equivalent data agreed by GFAC.(AL4)
WDII,B,J,KWind Direction (the direction the wind is coming from). Three numbers based on degrees clockwise from 000 for north(AL8)
WSPI,B,J,KWind speed, three numbers in kilometres per hour(AL8)
XN*As AppropriateA manufacturer-selected code where N is the manufacturer's single-character IGC name (Appendix 1 para 3.5.6) and * can be any character. The manufacturer must specify its meaning and usage in the documentation for the recorder and its use must be approved by GFAC before IGC-approval of the recorder. The X prefix is intended to allow a trial with a provisional new code before deciding whether it is worthwhile adding to the full list.(AL8)

8. GNSS GEODETIC DATUMS

The Sporting Code for gliding states that the WGS 84 Geodetic Datum (serial 100 below) shall be used for all lat/long co-ordinates that are recorded and transferred from the FR after flight. Other Geodetic Datums have been numbered by IGC as follows.

Note from Ian Forster-Lewis: I skipped this section - just use WGS84 IGC code 100.

9. EXAMPLE IGC-FORMAT FILE

9.1 The IGC file format starts with the A Record and is followed by the H (header) and other records. The record letter is always at the start of the appropriate line in the file when it is viewed in text format. For more details of formats for individual records, see the relevant paragraphs earlier in this Appendix.

9.2 In this example, spaces have been used between subject fields to make the layout and sequence clearer to a reader. In a real IGC-format file there should be no spaces in any record except within a text string as a word separator.

9.3 CRLF = line terminator, not flight data.

9.4 In a real file there would be many more B records at the preset fix intervals for cruise and fast fix rates.

9.5 In the example below, some notes appear in brackets. These are not part of the file format itself. Also, for clarity, some spaces are used in B record lines between different variables that are recorded, but no spaces should be used in the IGC file itself.

AXXXABC FLIGHT:1
HFFXA035
HFDTE160701
HFPLTPILOTINCHARGE: Bloggs Bill D
HFCM2CREW2: Smith-Barry John A
HFGTYGLIDERTYPE: Schleicher ASH-25
HFGIDGLIDERID: ABCD-1234
HFDTM100GPSDATUM: WGS-1984
HFRFWFIRMWAREVERSION:6.4
HFRHWHARDWAREVERSION:3.0
HFFTYFRTYPE: Manufacturer, Model
HFGPSMarconiCanada: Superstar,12ch, max10000m
HFPRSPRESSALTSENSOR: Sensyn, XYZ1111, max11000m CR LF
HFCIDCOMPETITIONID: XYZ-78910
HFCCLCOMPETITIONCLASS:15m Motor Glider
I033638FXA3940SIU4143ENL (note: I corrected a TYPO from the original document that had RPM on this record)
J010812HDTCRLF
C150701213841160701000102 500K Tri
C5111359N00101899W Lasham Clubhouse
C5110179N00102644W Lasham Start S, Start
C5209092N00255227W Sarnesfield, TP1
C5230147N00017612W Norman Cross, TP2
C5110179N00102644W Lasham Start S, Finish
C5111359N00101899W Lasham Clubhouse
F160240040609123624221821
B1602405407121N00249342WA002800042120509950
D20331
E160245PEV
B1602455107126N00149300WA002880042919509020
B1602505107134N00149283WA002900043221009015
B1602555107140N00149221WA002900043020009012
F1603000609123624221821
B1603005107150N00149202WA002910043225608009
E160305PEVCRLF
B1603055107180N00149185WA002910043521008015
B1603105107212N00149174WA002930043519608024
K16024800090 (AL7)
B1602485107220N00149150WA 00494 00436 190 08 018
B1602525107330N00149127WA 00496 00439 195 08 015
LXXXRURITANIAN STANDARD NATIONALS DAY 1
LXXXFLIGHT TIME: 4:14:25, TASK SPEED:58.48KTS
GREJNGJERJKNJKRE31895478537H43982FJN9248F942389T433T
GJNJK2489IERGNV3089IVJE9GO398535J3894N358954983O0934
GSKTO5427FGTNUT5621WKTC6714FT8957FGMKJ134527FGTR6751
GK2489IERGNV3089IVJE39GO398535J3894N358954983FTGY546
G12560DJUWT28719GTAOL5628FGWNIST78154INWTOLP7815FITN