EliteG19s Manual

version 3.7

Welcome and thank you for using my companion app for Elite Dangerous!

As I am building this app, more and more functionality is included. I try to make as much of it optional, so that you do not feel forced to use it. This does mean however that lots of functionality is hidden in options, settings and secret key combinations.

The purpose of this manual is to shine some light on all the possibilities the EliteG19s companion app offers.

(Click here if you have trouble running the app after upgrading)


  1. FAQ
  2. Installation
    1. Previous Version
  3. Controls
    1. Keyboard Controls
    2. Mouse Controls
    3. VoiceAttack
    4. Hotkeys
    5. Orrery View
    6. GPS View
    7. Philips Hue
    8. Lua Scripting Support
  4. Options File
    1. Editing Radio Stations
    2. Editing Youtube Channels
    3. Editing Spotify Playlists
    4. Editing Websites
  5. Windows 10 Additional Voices
  6. Troubleshooting
  7. Contact


Q: What does this app offer me?
A: a lot!

Q: Is a Logitech keyboard required?
A: No! Although the app was originally created for use with a Logitech LCD keyboard, this hasn't been a requirement for a long time. The app will happily display the information on a regular window on your screen.

Q: Does this work with Logitech Arx (second screen for mobile)?
A: Yes! If you have installed the latest Logitech Gaming Display software, and have the Logitech Arx app on your phone or tablet, you can see the information there as well.

Q: Are there more voices available?
A: The app uses the SAPI5 Text-To-Speech voices that you have installed on your PC. There are excellent voices available for purchase, but if you have Windows 10 there are methods of installing additional voice packs to provide more voices. For more details check the section Windows 10 Additional Voices.

Q: Can I display this in my VR set?
A: Yes! Thanks to CMDR MacDaddyB who figured this out. Using a special piece of software you can now position the EliteG19s window in your cockpit! There is also a reddit post on Oculus Dash that may be of interest to you.

Q: But I don't have a VR set, can I still display it in my cockpit?
A: You sure can! Try OnTopReplica.

Q: Do you store my account information?
A: Only if you decide so to facilitate linking to external services. All information is securely stored on your harddrive and is never sent to other destinations than the intended one.
Also, the information is heavily encrypted when it is stored in the Windows Credential Manager to prevent anyone to be able to retrieve your password from the app.

Q: Can I open multiple windows?
A: Yes! In the Windows system tray (next to the clock) you will find the EliteG19s icon. Right clicking this gives you the option to open a new window. You can have as many as you like. As from version 3.1 the app can remember open windows and reopen them when you restart the app.

Q: Do I need a Spotify Premium account?
A: Only for the Spotify bits!

Q: Why does the orrery view not match up with the in game position of planets?
A: Simply because planets do not move fast enough to make pretty animations! I like the idea of an orrery that moves around. That's why in the orrery view one real second equals to one Earth day by default. But, using the buttons on screen you can control time and make it as quick or slow as you want.

Q: The orrery is not correct! How come?
A: Unfortunately, not all information that's available in the game's Stellar Forge is available for third party apps. That means that the algorithms I have created make some assumptions, and do quite a bit of the physics calculations themselves to approximate the in-game results. For instance, one of the things I simply don't know is how the planets are positioned relative to each other at any given time. But, as there is time compression in effect anyway, that does not really matter. :)
If you notice systems where the orrery is way off, please let me know!

Q: Why can't I find my POIs in the GPS view?
A: Because there are so many planets in the game and thus potentially many different Points of Interest, the app only lists the POIs that are on the planet that you fly over, or have landed on.
To make it somewhat easier to find what you are looking for, when you are not a planet, the POI list will show the list of POIs for the current system, sorted per planet.

Q: Why doesn't the GPS know about all those in game locations, such as INRA bases?
A: I keep a manually curated list of waypoints that you can download through the GPS, simply choose the option "Download Public POIs". I try to keep this up to date to the in game discoveries. However, if you find I have missed one, please let me know so that others can find it too!

Q: I want to buy you a cup of coffee, what's your Paypal link?
A: https://paypal.me/MagicMau


Installation is easy, you can simply click this link to install and run the app.

Often when you download and start this file, Windows Smartscreen will warn you about unverified sources. This is because I have not digitally signed the app with an official developer's certificate. Feel free to click 'Run anyway'.

The installer itself will also help you provide the necessary details to log in to the Frontier API, EDSM, Inara and Elite Galaxy Online where applicable. If you choose to opt out here, you can always opt back in by going through the options screens of the app.

Previous Versions

If for some reason the current version gives you errors, please make sure that you let me know. If I don't know about the issue, I can't fix it! Download the previous version by clicking on this link. Please make sure that you have uninstalled any existing versions of EliteG19s before installing an older version. Also, I cannot guarantee that all your settings can be restored when downgrading, but most should still work.


If you have a Logitech LCD keyboard you can use the corresponding buttons to control the app. If you do not have such a keyboard and display a regular window you can use the mouse and keyboard to control the app. Using voice commands (through VoiceAttack) or hotkeys, you can control the app as well.

Tray icon

When you start the app you will see its icon in the system tray, next to the clock and volume icons. Right clicking the icon gives you options to open a new window, in a different size, or exit the app.

Keyboard controls

You can also set hotkeys to control various functions of the app. This can also be helpful for instance if you want to bind a knob or a button on your HOTAS to a function in the app. See the Hotkey section for more details.

Mouse controls

Tip: if you click on the header bar (where the clock is), you go up a menu level. Very helpful when navigating the menus.

VoiceAttack plugin

If you want to use the app together with the awesome VoiceAttack software, you will need the plugin to create the necessary interface.

In the installation folder you will also find a VoiceAttack folder (this is usually at %LocalAppData%\Programs\EliteG19s\VoiceAttack or C:\Users\You\AppData\Local\Programs\EliteG19s\VoiceAttack). You will want to copy the contents of the Apps folder there to your VoiceAttack's Apps folder (usually at C:\Program Files (x86)\VoiceAttack\Apps). This will allow the app and VoiceAttack to communicate.

Also make sure that you have ticked the box 'Enable Plugin Support' in VoiceAttack's settings screen.

In the app's VoiceAttack folder you will also find an example VAP profile that you can import to see some examples on how you can use the plugin. The reference sheet is found here.

The VoiceAttack plugin supports the following commands, that you provide as the context:

volumevolume:+5Change the overall volume in EliteG19s
mutemuteMute/Unmute EliteG19s
traffic volumetraffic volume:-5Change the volume of Space Traffic Control
screenscreen:OrrerySwitch EliteG19s to the specified screen
radioradio:Lave RadioPlay a specific radio station
spotifyspotify:Elite DangerousPlay a specific Spotify playlist
podcastpodcast:Lave RadioPlay the latest episode of the specified podcast
stream urlstream url:https://xxxStream music from a url (can also be a link to soundcloud, or youtube)
play folderplay folder:C:\MusicPlay music from a folder on disk
youtubeyoutube:IsinonaPlay a YouTube preset
next tracknext trackGo to next track
previous trackprevious trackGo to previous track
skip backskip backSkip back 30 seconds in the current track
skip forwardskip forwardSkip forward 30 seconds in the current track
pause musicpause musicPause/resume the current music track
shuffle musicshuffle musicToggle shuffling of music tracks
stop musicstop musicStop all currently playing music
what's playingwhat's playingCheck what's currently playing and store this information in the following VoiceAttack text variables: EliteG19s_Current_Station, EliteG19s_Current_Artist, EliteG19s_Current_Album, EliteG19s_Current_Title.
statusstatusRetrieve status information and store this information in the following VoiceAttack text variables: EliteG19s_CommanderName, EliteG19s_Credits, EliteG19s_CombatRank, EliteG19s_CQCRank, EliteG19s_ExplorationRank, EliteG19s_TradeRank, EliteG19s_FederationRank, EliteG19s_EmpireRank, EliteG19s_GameMode, EliteG19s_IsGameInBeta, EliteG19s_IsInSuperCruise, EliteG19s_Ship, EliteG19s_ShipName, EliteG19s_ShipId, EliteG19s_CurrentSystem, EliteG19s_IsDocked, EliteG19s_IsLanded, EliteG19s_ClosestStation, EliteG19s_ClosestBody, EliteG19s_BodyLatitude, EliteG19s_BodyLongitude, EliteG19s_AssignedLandingPad, EliteG19s_IsCockpitBreached, EliteG19s_IsInCrew.
traffictraffic:onTurn Space Traffic Control on or off
traffic volumetraffic volume:+5Change the volume of Space Traffic Control
npc volumenpc volume:+5Change the volume of NPCs
orrery zoom inorrery zoom inZoom in on the orrery view
orrery zoom outorrery zoom outZoom out on the orrery view
orrery time fasterorrery time fasterSpeed up time on the orrery view
orrery time slowerorrery time slowerSlow down time on the orrery view
orrery reset vieworrery reset viewReset zoom on the orrery view
visualizationvisualization:StarfieldSwitch to one of the visualization modes: Cassette, Orrery, Starfield, Equalizer, Spectrogram, Waveform, Full Screen Equalizer, Full Screen Cover Art
buttonbutton:menuSimulate button press of a button. Choose from up, down, left, right, menu, ok, cancel.
show messageshow message:textDisplay a text on the EliteG19s display

Valid screen names are:

The what's new variables:

Variable NameTypeContents
EliteG19s_Current_StationTextThe current (radio) station
EliteG19s_Current_ArtistTextThe artist of the current track (if known)
EliteG19s_Current_AlbumTextThe album title for the current track (if known)
EliteG19s_Current_TitleTextTitle of the current track

The status variables:

Please note that BodyLongitude/BodyLatitude have been renamed to CurrentLongitude/CurrentLatitude.

Variable NameTypeContents
EliteG19s_AssignedLandingPadIntLanding pad assigned during docking procedure
EliteG19s_ClosestBodyTextName of closest planet (if known)
EliteG19s_ClosestStationTextName of closest station (if known)
EliteG19s_CombatRankTextCurrent combat rank (updated on load)
EliteG19s_CommanderNameTextName of current Commander
EliteG19s_CQCRankTextCurrent CQC rank (updated on load)
EliteG19s_CreditsDecNumber of credits (updated on load)
EliteG19s_CurrentSystemTextName of current star system
EliteG19s_EmpireRankTextCurrent Empire rank (updated on load)
EliteG19s_ExplorationRankTextCurrent exploration rank (updated on load)
EliteG19s_FederationRankTextCurrent Federation rank (updated on load)
EliteG19s_GameModeTextCurrent game mode (Open / Private / Solo)
EliteG19s_IsCockpitBreachedBoolHas the cockpit been breached
EliteG19s_IsGameInBetaBoolIs the game currently in beta
EliteG19s_IsInCrewBoolAre you in a multicrew session
EliteG19s_IsInWitchspaceBoolAre you in witchspace
EliteG19s_ShipTextCurrent type of ship
EliteG19s_ShipNameTextCurrent name of ship
EliteG19s_ShipIdTextCurrent identifier of ship
EliteG19s_TradeRankTextCurrent trade rank (updated on load)
EliteG19s_IsDockedBoolAre you currently docked
EliteG19s_IsLandedBoolAre you currently landed
EliteG19s_IsInSuperCruiseBoolAre you flying in supercruise
EliteG19s_CurrentLongitudeDecCurrent Longitude (or 999 if unknown)
EliteG19s_CurrentLatitudeDecCurrent Latitude (or 999 if unknown)
EliteG19s_CurrentAltitudeDecCurrent Altitude (or -1 if unknown)
EliteG19s_CurrentHeadingDecCurrent Heading (if available)
EliteG19s_FiregroupIntActive firegroup
EliteG19s_GuiFocusTextShip's GUI element that has the focus
EliteG19s_PipsSystemIntPips to system (0-8, in halves)
EliteG19s_PipsEngineIntPips to engine (0-8, in halves)
EliteG19s_PipsWeaponsIntPips to weapons (0-8, in halves)
EliteG19s_IsDockedBoolDocked, (on a landing pad)
EliteG19s_IsLandedBoolLanded, (on planet surface)
EliteG19s_IsLandingGearDownBoolLanding Gear Down
EliteG19s_IsShieldsUpBoolShields Up
EliteG19s_IsFlightAssistOffBoolFlightAssist Off
EliteG19s_IsHardpointsDeployedBoolHardpoints Deployed
EliteG19s_IsInWingBoolIn Wing
EliteG19s_IsCargoScoopDeployedBoolCargo Scoop Deployed
EliteG19s_IsSilentRunningBoolSilent Running
EliteG19s_IsScoopingFuelBoolScooping Fuel
EliteG19s_IsSrvHandbrakeBoolSrv Handbrake
EliteG19s_IsSrvTurretBoolSrv Turret
EliteG19s_IsSrvUnderShipBoolSrv UnderShip
EliteG19s_IsSrvDriveAssistBoolSrv DriveAssist
EliteG19s_IsFsdMassLockedBoolFsd MassLocked
EliteG19s_IsFsdChargingBoolFsd Charging
EliteG19s_IsFsdCooldownBoolFsd Cooldown
EliteG19s_IsLowFuelBoolLow Fuel ( < 25% )
EliteG19s_IsOverHeatingBoolOver Heating ( > 100% )
EliteG19s_HasLatLongBoolHas Lat Long
EliteG19s_IsInDangerBoolIs In Danger ( /!\ icon )
EliteG19s_IsBeingInterdictedBoolBeing Interdicted
EliteG19s_IsInMainShipBoolIn MainShip
EliteG19s_IsInFighterBoolIn Fighter
EliteG19s_IsInSrvBoolIn SRV

Hotkey support

The app also supports hotkeys. This makes it a lot easier to map buttons to control the app directly. For instance, on my X-55 I have set a dial button to control the volume, and a switch to select the status screen. You set the hotkeys in the options.json file (see below). Each hotkey setting is either a button press or a function.

Button presses look like this:

  "Function": "Up",
  "UseAlt": true,
  "UseCtrl": true,
  "UseShift": true,
  "UseWin": false,
  "Key": "F5",
  "IsEnabled": false

This maps the Alt+F5 to the Up button in the app. The UseAlt/Ctrl/Shift/Win modifiers describe if the key needs to pressed with one of these keys in unison.

The Key parameter is the technical name for the key. You can find the full list here. This list also includes codes for multimedia keyboards (keys for volume control, next track, etc.)

Most of the time it is exactly what you would suspect, but sometimes there can be small differences (D7 for the 7 key in the top row of your keyboard for instance, but it's NumPad7 for the 7 key on the Num Pad). Check the list above to make sure!

Finally, the IsEnabled property just enables or disables the hotkey. Make sure to set IsEnabled to true if you want to use the hotkey!

Apart from button presses, you can also activate certain functions in the app with a hotkey.

A function looks like this:

  "Function": "Screen Status",
  "UseAlt": true,
  "UseCtrl": true,
  "UseShift": true,
  "UseWin": false,
  "Key": "F6",
  "IsEnabled": true

This maps Ctrl+Alt+Shift+F6 to switch the app to the Status screen. For valid screen names, check out the section above.

Other functions that are currently available are:

Orrery view

On the Orrery screen you can use the cursor keys to control the pitch and zoom of the view. These changes are subsequently also used when you switch to the orrery audio visualization.

On the screen you will notice that bodies are highlighted to show specific information on them: is a planet landable, can a star be scooped, how far away is it from the main star?

If you are close to a body, or if you've just scanned one, it will be highlighted by a blue marker.

You can click on a star or planet to highlight it.

The hamburger icon (activate it by pressing Enter, OK, or clicking on it) opens a menu where you can zoom in and out, speed up or slow down time and even open up a custom orrery view, other than the system you're currently flying in.

There is also experimental keyboard support. This will need some finetuning, but feel free to play around with it and give me your feedback.

WMove Up
AMove Left
SMove Right
DMove Down
UpMove Forward
DownMove Backward
LeftRotate view left
RightRotate view right
+Zoom in
-Zoom out
<Slow down time
>Speed up time
HomeReset view

GPS view

The GPS screen allows you to see where you need to go when you're in your SRV or in low orbital flight. You can set waypoints, or complete itineraries, which can be saved in a file waypoints.json (in the same location as the options file mentioned below).

It can be very helpful when you found that place where a bunch of canisters have been dumped and you need a couple trips to your ship to retrieve them all. Or when you want to take that particular scenic route that you like. Or when there is a mysterious location you want bookmarked and not bothered by looking up the coordinates all the time.

A helpful arrow will point you in the right direction.

Note however that you will need to manually enable the GPS functionality. When enabled, the app will push F10 every two seconds. This creates a screenshot AND logs the coordinates in the player's journal. The app will automatically delete this temporary screenshot and use the location info to determine the correct heading you will need to find your destination.

There is also a race option. When you have selected an itinerary, the waypoints act as checkpoints for either a timed run, or an outrun-like checkpoint-race. You can even select some wacky music to accompany your race!

Philips Hue support

The app now also supports Philips Hue. For this to work you will first need to create an entertainment zone. You can do this in the Hue app, for instance on your mobile phone or tablet.

After that, you can enable Philips Hue support in the app, by checking the Enabled option in the options screen for Hue.

The app will then search for a Hue bridge. If it can find one it will try to connect. Sometimes you will need to set the Hue bridge IP address manually in the options file (see here), because the app can't find the bridge.

When the app has found a bridge, the first time it will ask you to push the Link button within the next 60 seconds. If you do, the app and the bridge will exchange an AppKey and EntertainmentKey. These are stored in the options file and the connection has been successfully established.

The app uses Hue to set overall colors (either by sampling the colors on screen, or by using an in-theme color), and can be used when playing light effects. For example, a pulsing red light is shown when the game finds that you are in danger (near a star, under attack).

Lua scripting support

The EliteG19s app allows you to create Lua scripts to add functionality. For a full description of this option, see the Scripting page.

Options.json file

The EliteG19s app uses the %AppData%\EliteG19s\options.json (usually C:\Users\You\AppData\Roaming\EliteG19s\options.json) file to store its options. This is a json file which has a specific notation. Feel free to use a JSON validator to check you haven't made any typos before saving any changes to the options file.

Before you start editing these files manually, most options can be set in the options screen of the app itself. That's usually the easiest solution!

This is a list of all options:

VersionThe current version of the app
LoggingOptions for logging to a log.txt file: "Logging": { "IsEnabled": true, "IsVerbose": false } Set both values to true for maximum logging when you encounter errors
EliteFolderWhere to find the E:D installation (is found automatically in most cases)
MusicFolderWhere do you store your music files?
JournalsFolderOptional setting to explicitly set the folder where the Journal files can be found
InitialVolumeThe initial volume level of the app (between 0.0 and 1.0)
DisplayOptionsDisplay settings are stored here (see below)
AudioVisualizationOptionsOptions for audio visualizations
IsShowGPSInSRVAutomatically switch to GPS when in SRV
FavoriteStarSystemsA list of favorite star systems for the orrery screen's Favorites menu
RadioStationsA list of radio stations to use (see below)
TVStationsA list of YouTube playlists to use (see below)
SpotifyPlaylistsA list of Spotify playlists to use (see below)
PodcastsA list of podcasts that you can listen to
RacingMusicA list of urls to Soundcloud or MP3 files to use when racing with the GPS view
TwitchChannelsA list of Twitch channels to show always
OnTopReplicaOptions to automatically start the OnTopReplica app (see below)
SpaceTrafficControlOptionsOptions for space traffic control (see below)
IsConvertScreenshots(true/false) allows the app to automatically convert the game's screenshots to a much smaller JPG format and include metadata on where the shot was taken.
CustomColorMatrixYou can set a custom color matrix here to change the app's colors. This overrides any setting you might have in Elite. Look here to sample the options. This entry should look like this:
"CustomColorMatrix": { "Red": "0.31, 0, 1", "Green": "0, 1, 0", "Blue": "1, 0, 0" },
LogitechSettingsSettings to control Logitech keyboards (see below)
IsUseGameTime(true/false) display game time or local time in the app's display
IsUseDiscordRichPresence(true/false) show your current position in Discord
DefaultTTSVoiceIf you have a preferred default text-to-speech voice, set it here, otherwise leave it at Default
ArxWidthHeightRatio(number) set the ratio of the Arx screen width as a percentage of the height (100 is square, 105 is a bit wider, 95 is a bit smaller). Remove the option to use the full width of the screen.
ArxAnimationLevel(none/semi/full) can the Arx app use animation, choose one of the options
HotKeysMap hotkeys to app functions (see above)
NewsTickerSet different RSS tickers to use in the news ticker
GracenoteIdDo not change - used to retrieve album art
PhilipsHueSettings for Philips Hue lights (see below)
AmbilightUpdateIntervalThe delay between reads of the screen by the Ambilight routine
IPCameraSetting to display view of MJPEG IP Camera (see below)

Setting the display options

The DisplayOptions section of the options.json file controls how and when window are opened automatically. Saved window positions are stored here as well when the app exits.

This section contains the following settings:

UseWindowStart with a regular window showing (never/always/auto)
InitialScreenThe name of the screen to start the app with
IsUseDirect3D(true/false) Use Direct3D for the non-Logitech windows (true improves performance but sometimes causes compatibility issues
SaveWindowsOnExit(true/false) remember open windows when exiting and restore them when the app restarts
DisplayMessages(all, primary, secondary) where to display messages (such as when friends come online, or when displaying an interactice traffic control message)
WindowsThis is where saved windows are stored. Use the SaveWindowsOnExit option to have the app create these automatically

Updating the radio stations

There is not yet an option in the app itself to edit the list of online radio stations. For this you will need to open the options.json file and look for the section marked "RadioStations". You will find several sections there, marked by curly braces. An example is:

  "Name": "Radio Sidewinder",
  "Url": "http://www.radiosidewinder.com/radiosidewinder.m3u"

Sometimes you will also see a setting called "OriginalUrl" in there. This is added automatically if the radiostation forwards to a different url. The original is saved just in case the forwarding is ever updated.

You can edit the radio stations here. Make sure that you use a direct link to the MP3 stream. Often this is the link you get for the ".pls" or ".m3u" file from the station's site. If you cannot find that, look for a link that offers to listen to the station in an external media player such as VLC or iTunes.

Also, please make sure that the stream is offered as an MP3 stream. This is the only type of audio stream that the app currently understands. AAC or other types of streams will not play.

Updating the tv stations (Youtube channels)

There is not yet an option in the app itself to edit the list of Youtube channels or videos. For this you will need to open the options.json file and look for the section marked "TVStations". You will find several sections there, marked by curly braces. An example is:

  "Name": "Isinona",
  "PlaylistId": "UUjgBlzLxsgbVuHfZPe0AeIg",
  "Randomized": false

The PlaylistId is basically the bit in the url after https://www.youtube.com/channel/. If Randomized is set to true, it will shuffle the videos in the playlist.

You can also link directly to specific videos:

  "Name": "Elite Dangerous Space Legs leaked video",
  "VideoId": "4M8ZeHZSZ3o"

Updating the Spotify playlists

You can define a set of playlists in the options file itself if you like to have a very specific list of Elite playlists. However, there is not yet an option in the app itself to edit the list of Spotify playlists that you can choose from. For this you will need to open the options.json file and look for the section marked "SpotifyPlaylists". You will find several sections there, marked by curly braces. An example is:

  "Name": "Hot New Dance Tracks",
  "SpotifyLink": "spotify:user:spotify:playlist:37i9dQZF1DWWrJKwf0q9nn"

In the Spotify app you can click the Share button to copy the Spotify URI, which is what you put in the "SpotifyLink" in this option. You can also put in a Spotify URL that looks like this: https://open.spotify.com/user/spotify/playlist/37i9dQZF1DWWrJKwf0q9nn.

Options to automatically start OnTopReplica

The OnTopReplica section of the options contains settings to be able to automatically start OnTopReplica when the first window is opened:

AttachFirstWindow(true/false) attach OnTopReplica to the first window
ExePathPath to OnTopReplica.exe, eg. "C:\\Path\\OnTopReplica.exe" (note that the JSON format requires backslashes to be doubled)
ParametersHow to call OnTopreplica, eg. "--windowId=$HWND$ --size=$WIDTH$,$HEIGHT$}
Sensible defaults are provided (using the default install location and showing the window semi-transparent top right), but you are free to change them. Use the placeholders $HWND$, $WINDOW_TITLE$, $WIDTH$, and $HEIGHT$ where necessary.

Options for Space Traffic Control and NPC voices

The SpaceTrafficControlOptions section of the options file contains settings to control Space Traffic Control and NPC voices.

EnableOnStart(true/false) to enable Space Traffic Control upon startup
Volume(0.0-1.0) the volume of Space Traffic Control
Densityincrease or decrease the amount of Space Traffic Control
UseSoundEffects(true/false) enable sound effects on Space Traffic Control voices
OnlyInSuperCruise(true/false) only have Space Traffic Control active while in Supercruise
ShowTrafficSubtitles(true/false) show Space Traffic Control subtitles
StartDelaya delay (in milliseconds) before Space Traffic Control starts transmitting - use this if you want another app to finish its script first for instance
TrafficControlLocalized(true/false) localize space traffic control in the game's language where avaiable (currently English and Spanish)
NPCVoicesEnabled(true/false) enable NPC voices
NPCVolume(0.0-1.0) the volume of NPC and CMDR voices
CMDRVoicesEnabled(true/false) enable CMDR voices
CMDRVoicesLocalized(true/false) localize CMDR voices (eg if you play in German, all CMDR speech will use a German text to speech voice)
CMDRVoiceLanguage(Game | EN | DE | FR | ES | RU) specifically set the language to use for CMDR text-to-speech. Use this for instance to force it to English if you run a non-English game.
VoiceOptionsspecific options to be set per installed voice (see below)

Options for Logitech keyboards

The LogitechSettings section of the options file contains settings for Logitech keyboards.

SetBackgroundColorAllow the app to set an overall "background" in-theme color for the LED lights
PlayEffectsAllow the app to play LED light effects when certain events occur (such as jumping into witchspace)
AmbilightThe LEDs will use the average color of the screen to set the background color

Options for Philips Hue

The PhilipsHue section of the options file contains settings for Philips Hue lights.

IsEnabled(true/false) enable Philips Hue interface
BridgeIPthe IP address of the Philips Hue bridge to communicate with. The app will try to find it by querying the local network. Because this sometimes fails, you can also set it here manually.
AppKeyThis is set automatically by the app when a connection with the Bridge has been set up
EntertainmentKeyThis is set automatically by the app when a connection with the Bridge has been set up
Intensity(0.0 - 1.0) How bright should the light bulbs get
AmbilightSample the game screen to determine a color setting for the Hue lights
PlayEffectsAllow the app to play Hue light effects when certain events occur (such as jumping into witchspace)

Options for IP Cameras

The IPCamera section of the options file contains settings for Philips Hue lights.

MJPEGCameraUrlSet this to the video feed of an MJPEG IP camera and have the app act as a motion detector. Useful if you have tiny CMDRs at home.
CameraMotionSensitivity(0-1) A number between 0 and 1 that says how sensitive the motion detection is. The closer to 0 the quicker it alerts you.
AutoStartAutomatically connect with the camera when the app starts.

Windows 10 Additional Voices

This section is copied from a relevant Reddit post here.

When Microsoft released Windows 10, they included the Text-to-Speech voices that were created for Windows Mobile.
Additionally, when you install some of the language packs from the Region and Language options in windows, you are also given the option to download a related voice pack for that language that includes both a male and a female mobile voice.

As an example, windows 10 comes with the following two mobile voicepacks if your region is English/United States:

For English you can also additionally install the following language packs and download the speech library for it, each one includes at least 1 new male and 1 new female voice pack:

In order to make these additional voices available for the companion app, you will need to copy some information. You can do this manually (see the Reddit post for this), or use this handy PowerShell script.

  1. Click Start
  2. Type Powershell
  3. Right click the search result and choose Run as Administrator.
  4. Copy and paste the script into the console. Press Enter.

$sourcePath = 'HKLM:\software\Microsoft\Speech_OneCore\Voices\Tokens' #Where the OneCore voices live
$destinationPath = 'HKLM:\SOFTWARE\Microsoft\Speech\Voices\Tokens' #For 64-bit apps
$destinationPath2 = 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens' #For 32-bit apps
$listVoices = Get-ChildItem $sourcePath
foreach($voice in $listVoices)
$source = $voice.PSPath #Get the path of this voices key
copy -Path $source -Destination $destinationPath -Recurse
copy -Path $source -Destination $destinationPath2 -Recurse


If you run into any trouble with my little companion app for Elite, please check the following:

App will not start after an upgrade

If the app does not start after upgrading to the new version, it could be that files from the previous version have not been completely removed by the installation procedure. This happens most often if the new version is installed in a different location than before.

In this case, please manually remove all other files from previous versions of the app.

  1. First uninstall the current version of the app using "Add/Remove Programs" or "Settings>Apps".
  2. Manually delete any files that have not been removed automatically. The default location for the application is C:\Users\[YourName]\AppData\Local\Programs\EliteG19s, unless you specified a custom location during the installation process.
  3. Reinstall the latest version of the app using this link.

Reinstall the latest version

If everything seems to fail, try a full reinstall by manually deleting all existing files first. This sometimes solves some unexplainable issues :)

First, uninstall normally (through Programs & Features). Optionally, also remove any remaining files by following the step below.

However, as this step involves manually deleting files, be careful and do this at your own risk!

You can do this by deleting the files in the folder C:\Users\[YourName]\AppData\Roaming\EliteG19s as well as deleting the files in C:\Users\[YourName]\AppData\Local\Programs\EliteG19s.

Send log files

If that does not resolve the problem, allow me to help you. If the app crashes, it tries to produce a log file, which you can find in the following folder: C:\Users\[YourName]\AppData\Roaming\EliteG19s.

From that folder, please email me the log.txt and options.json file. You can send them to magicmau [at] gmail.com.

If at all possible, please also enable additional logging before you capture the log.txt file.

You can do this by opening the options.json file in the folder above. At the top you will see the following. Please make sure both options are set to true:

"Logging": {
  "IsEnabled": true,
  "IsVerbose": true

Another way to enable it is through the options in the app itself. Scroll down to enable the options "Error Logging" and "Verbose Logging".

After you've restarted the application, additional debugging information is recorded in the log.txt file. Please send me that file :) You can then turn the logging options off if you want.

Contact me

The easiest way to get in touch is through the Elite forum post for this app, or find me on the EliteG19s Discord channel.

If you want to contact me, either send me an email (magicmau at gmail dot com), find me on Twitter (@MagicMau) drop me a PM on Reddit (/u/MagicMau), or message me in-game (MagicMau).