29 September 2018

Avionics: Adding a lot more voice alerts on GRT EFISs!

GRT EFIS Audio Alerts


Update 15-Mar-23:  Added alarm #289.
Update 16-Apr-19:  Added alarm #288.


Executive summary: At least 80 undocumented audio alerts are available on most GRT EFISs. This post explains what they are and how to enable most of them.

Background

The GRT HXr, HX, Sport and Horizon EX, Sport SX, Mini-GA and (I think) Mini Series EFISs have an audio output to provide audio alerts to your intercom using audio files that you must provide.  The output is found on pin B24 with ground on B25 for all but the Minis.  GRT has disclosed only 17 special alerts which use predefined filenames (shown in parentheses below) which are typically copied on to the EFIS from a USB drive using the Set Menu on the EFIS:
  • Minimum oil pressure (oil_pressure.wav)
  • Minimum fuel pressure (fuel_pressure.wav)
  • AoA tone near stall, repeats more frequently closer to stall (filename unknown)
  • Obstacle alarm (obstacle.wav)
  • New traffic within alert criteria (traffic.wav)
  • Autopilot disconnect 
    • Manual (ap_disconnect_advisory.wav)
    • Automatic(ap_disconnect_warning.wav)
  • Maximum oil temperature (oil_temperature)
  • Maximum CHT (cht.wav)
  • Low/High voltage (low_volts.wav and high_volts.wav)
  • Maximum fuel flow (fuel_flow.wav)
  • Vne exceeded (speed.wav)
  • Trim alert from GRT pitch servo, repeats every 30 seconds (trim.wav)
  • SAP height above runway at 500, 200, and 100 feet (500.wav, 200.wav,1500.wav)
  • Minimums if decision altitude is set (minimums.wav)
  • Approaching minimums when 200 feet above decision altitude (approaching_minimums.wav)
  • Waypoint sequence (waypoint.wav)
However, I recently became aware of this post on GRT's forums which explains that "every unique alarm can have its own audio file using an internal alarm number".  The format that GRT uses for those files is alarm####.wav where #### is the four digit number of the alarm.  Unfortunately, GRT did not originally provide documentation of the alarm numbers since releasing the initial firmware update for audio support in 2015 and to date, still has not.   But, that information lead me to identifying nearly 60 undocumented alarms.

Below I...
  1. Explain how the EFIS manages audio alerts.
  2. Explain how to add the additional alerts.
  3. Show the additional undocumented alerts I've identified thus far
  4. Provide audio files for you to use.
  5. Explain the process I used to determine the undocumented alarms.

GRT EFIS Alert Process

First, it's helpful to understand how the EFIS alert annunciation process works.

Short version:
  1. Alarm occurs.
  2. EFIS looks for associated file.
  3. EFIS plays the file.
Long version:
  1. Alarm occurs with unique internal four-digit alarm number..
  2. EFIS looks for the associated alarm####.wav or predefined file in the Alerts folder first on the USB drive, then on the EFIS itself.  
  3. If the file is found, it is played.  
    • If there are duplicate files then the USB file is played first, immediately followed by the EFIS file resulting in a double alert. 
      • This would occur with the predefined special alarms like obstacle.wav which is also alarm0091.wav.
    • To avoid double alerts, don't provide both files.
      • For example you may have already placed obstacle.wav on your EFIS, so don't provide alarm0091.wav also unless you want to hear both wav files:  "obstacle, obstacle".
How to Add Your Own Voiced Alerts

You can find the undocumented alarms in the table shown below in the section "Alarms I Have Identified".  Here are the steps to expand your voiced alarms on your EFIS:
  1. Decide what message you want your EFIS to voice for each alarm you're interested in having.
  2. Create the voices using an online text-to-voice service.  
  3. Save each message with the proper filename (alarm####.wav - must use four digits).
  4. Copy your new alarm####.wav files onto your USB drive into a folder named Alerts.
  5. Plug the USB drive into your EFIS. 
  6. You're done.  Verify it works on the ground with engine off, prior to flight.
    • I don't suggest copying the files to your EFIS since I'm not clear on how to delete them without wiping all settings on the EFIS.
  7. Consider carrying the full set of alarm files to help identify additional alarms as explained in the "Files You Can Use for Alerts" section below.
Additional items to consider:
  • If you decide to copy your alarm files to your EFIS, your collection of selected audio files should not exceed 100 MB in size as the EFIS will not copy more than that.
  • Keep in mind that the EFIS will play the entire file when the alarm triggers, so very terse messages are probably best.
    • For example, "hey, pilot in command, your cylinder head temperature on cylinder 2 is too high, do something about it!" is not a wise choice for alarm 76.  
  • Not all alarms get a preceding tone (a "blip" or "whoop").  If you want your alarms to have a preceding tone, you may need to add the tone to the wav file you plan to use.
  • My AUX inputs probably don't match yours.  Be sure to use messages that match your configuration.
  • I make mistakes.
Alarms I Have Identified

If you find additional alarms or errors, contact me.  Thanks to user "R" for finding several additional alerts.

Columns:
  • Alarm:  Alarm number (remember, the number in alarm####.wav needs to be four digits).
  • Message:  My suggested voice message for the alarm.  You can use something different if you prefer.  
    • Note:  Your AUX inputs are probably different than mine so you will need to change the associated messages to match your configuration.
  • Description:  What the alarm represents.
  • Predefined:  If it is also a predefined alarm, the associated special filename. 
Alarm Message Used Description Predefined?
0 Avionics data, unavailable. Serial and EthLink no data
2 Flight time limit Flight time limit
3 Interval elapsed Interval alarm
5 Oil pressure high. Max Oil Pressure oil_pressure.wav
6 Oil pressure, low. Min Oil Pressure oil_pressure.wav
8 Oil temperature high. Max Oil Temp
9 Oil temperature, low. Min Oil Temp
10 RPM high RPM High
11 RPM low RPM Low
12 Total fuel low. Min Fuel
13 Manifold pressure high. EIS1 Max AUX1
14 Left fuel tank high. EIS1 Max AUX2
15 Right fuel tank high. EIS1 Max AUX3
16 Alternator current high. EIS1 Max AUX4
17 Battery current high. EIS1 Max AUX5
18 Fuel pressure high. EIS1 Max AUX6
19 Manifold pressure, low. EIS1 Min AUX1
20 Left fuel tank, low. EIS1 Min AUX2
21 Right fuel tank ,low. EIS1 Min AUX3
22 Alternator current, low. EIS1 Min AUX4
23 Battery current, low. EIS1 Min AUX5
24 Fuel pressure, low. EIS1 Min AUX6
25 Coolant temperature high Max Coolant Temp
26 Coolant temperature low Min Coolant Temp
27 EIS voltage high Max EIS Voltage
28 EIS voltage low Min EIS Voltage
29 EFIS bus one voltage high Max EFIS Voltage Bus 1 high_volts.wav
30 EFIS bus one voltage low Min EFIS Voltage Bus 1 low_volts.wav
31 EFIS bus two voltage high Max EFIS Voltage Bus 2
32 EFIS bus two voltage low Min EFIS Voltage Bus 2
33 EFIS bus three voltage high Max EFIS Voltage Bus 3
34 EFIS bus three voltage low Min EFIS Voltage Bus 3
35 Carburetor temperature Carb temp between upper and lower limit
36 Exhaust 1 temperature high. Max EGT1
37 Exhaust 2 temperature high. Max EGT2
38 Exhaust 3 temperature high. Max EGT3
39 Exhaust 4 temperature high. Max EGT4
40 Exhaust 1 temperature, low. Min EGT1
41 Exhaust 2 temperature, low. Min EGT2
42 Exhaust 3 temperature, low. Min EGT3
43 Exhaust 4 temperature, low. Min EGT4
72 EGT span high EGT Span Too Large
75 Cylinder 1 temperature high. Max CHT1
76 Cylinder 2 temperature high. Max CHT2
77 Cylinder 3 temperature high. Max CHT3
78 Cylinder 4 temperature high. Max CHT4
79 Cylinder 1 temperature, low. Min CHT1
80 Cylinder 2 temperature, low. Min CHT2
81 Cylinder 3 temperature, low. Min CHT3
82 Cylinder 4 temperature, low. Min CHT4
85 Cylinder 1 cooling fast EIS1 CHT1 Cooling Too Fast
86 Cylinder 2 cooling fast EIS1 CHT2 Cooling Too Fast
87 Cylinder 3 cooling fast EIS1 CHT3 Cooling Too Fast
88 Cylinder 4 cooling fast EIS1 CHT4 Cooling Too Fast
91 Obstacle Obstacle obstacle.wav
92 Altitude deviation Check Altitude
93 Analog input 1 too high

94 Analog input 2 too high

95 Analog input 3 too high

96 Analog input 4 too high

97 Analog input 5 too high

98 Analog input 6 too high

99 Analog input 7 too high

100 Analog input 8 too high

101 Analog input 1 too low

102 Analog input 2 too low

103 Analog input 3 too low

104 Analog input 4 too low

105 Analog input 5 too low

106 Analog input 6 too low

107 Analog input 7 too low

108 Analog input 8 too low

121 CO guardian unit failure CO Guardian Unit Failure
122 CO level unsafe Carbon Monoxide Level Unsafe
123 Cabin pressure unsafe Cabin Pressure Unsafe
124 Check bio data Life Guardian periodic bio data check
288 Roll trim required Roll trim required
289 Pitch trim required Pitch trim required
302 RPM range limit TachHi/Lo alarm


*Note:  "Traffic", "Speed", "Autopilot disconnect", G maximum limits and the "AoA" tone do not appear to have an associated alarm number.

Files You Can Use for Alerts

Here are the files with voiced alarms in an 8 MB zip file (let's call these the messaged alarms) and the files for the predefined alerts in a 1.1 MB zip file that I use, if you wish to use them too.

How You Can Help Identify Additional Alarms

I'm also giving this link which has the 10,000 alarm files that I assembled in a 318 MB 7z file that just voices the number of the associated alarm (let's call these the numbered alarms).  For example, alarm1293.wav simply says "one thousand two hundred and ninety three".  To decompress a 7z file you will need to use 7zip (for Windows) or Keka (for Mac).

Why do I provide those numbered alerts files?  If you use them, when your system triggers an alarm I haven't documented yet (e.g., I don't have three props, TIT sensor, etc., so I don't plan to find what their alarm numbers are), you'll hear the number and you can contact me with the information so I can add it to the list. 

To use these numbered alarms and still keep your messaged alarms:
  1. Copy the 10,000 numbered alarms onto the USB drive's Alerts folder.
  2. Copy the messaged alarm files.
    • Overwrite the associated numbered alarms from Step 1 so you still get the messages you want instead of hearing numbers.
  3. Delete any file with an associated alarm you're not interested in hearing.
    • For example
      • Maybe you don't want to hear when your RPM gets too low so delete alarm0011.wav.  
      • You already copied obstacle.wav to your EFIS so you don't need alarm0091.wav.
  4. Plug the USB drive into your EFIS. 
  5. You're done.  If you find additional alarms, please contact me.
The Process I Used To Determine Alarm Numbers

Short version:
  1. Created 10,000 wav files, each which voices the numbers 0-9,999.
  2. Placed them in the Alerts folder on a USB drive connected to the EFIS.
  3. Artificially caused as many alarms as I could.
  4. Wrote down the number I heard for each alarm.
  5. Noted duplicates (i.e., when predefined alarms were followed by a number too).
  6. Created alarm files with the messages I want to hear.
  7. Updated numbered alarm files with messaged alarm files.
  8. Keep numbered alarm files on USB drive to facilitate identification of alerts in the future.
Long version: 

Armed with the file format, it was trivial to decode most of the alarms that were relevant to my installation and setup.  All I needed to do was create 10,000 audio files that announce numbers, then each alarm would annunciate as a number and I could simply write down what each corresponded to.

So, to save myself the time of manually creating one thousand wav files I downloaded pre-recorded number files (0-99, x00, x000).  These represented only 118 of the files I need.  I needed the remaining 9,882 audio files.  But with those 118 files, I could use ffmpeg and some simple basic DOS scripts that I quickly wrote to automatically create and assemble files "alarm0000.wav" through "alarm9999.wav" giving me the complete collection of 10,000 files, each of which annunciates the associated number.  I further used ffmpeg to ensure each had the file format Windows PCM, 44,100 Hz, mono, 16-bit (as that's what I used for the voice alerts defined above, so I knew that format would work) and was amplified 5 dB to make them louder without too much clipping.

Next, knowing that the EFIS will first look for audio files on the USB drive and then use the internal ones, I created an "Alerts" folder with those 10,000 alarm wav files on a USB drive and connected it to my EFIS.  I then sat in the plane in my hangar and forced as many alarms as I could (by adjusting the criteria in the various settings pages), and as I heard each number in my headset, I wrote down what alarm each corresponded to.  Next, I flew the aircraft and forced the remainder of the alerts.  Then I assembled what I learned in a spreadsheet.

Finally, I went home and decided which alarms I actually wanted voiced, typed out what I wanted for each then had them voiced by ivona.  I then took those voices, dumped them into separate wav files with the correct filenames, as determined by their associated alarm numbers, and placed them on the USB drive that stays with my EFIS (it also has the charts and approach plates).

Whilst I would have preferred GRT's documentation, they gave enough information for me to create it for myself.

4 comments:

  1. After loading your 1000 numbers, I've found that #289 is "Roll Trim Required"

    ReplyDelete
  2. Thank you! That's really interesting as that means that either #289 and #288 are the same or I made a mistake originally and #288 is perhaps something else. I will investigate more. For now, you can overwrite "alarm0289.wav" with "alarm0288.wav". Thanks again and please let me know if you find anything else!

    ReplyDelete
  3. Is it possible that 288 and 289 are left or right roll trim required?

    ReplyDelete
    Replies
    1. Greetings. On my HXr, 288 is "roll trim required". I haven't seen it throw 289. To my knowledge, GRT EFISs don't support separate roll trims. If you get 289, please let me know which EFIS and firmware version you have. Thank you!

      Delete