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.
What's New in Version 4.2:
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: Do I need the Logitech Gaming Software?
A: No! There is a Direct USB mode (requires a little extra configuration) that replicates
most of the functionality of LGS: display, G-keys and LED lighting.
Q: I want to change some settings, how do I get the Settings Wizard back?
A: Just hold down the Shift-key when starting up EliteG19s, and the Settings Wizard will reappear!
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: What's new with the voice engine in version 4.2?
A: Version 4.2 introduces the Microsoft Edge TTS voice engine, which provides significantly improved voice quality and full localization support. Space Traffic Control and Ship AI now sound much more natural and are available in English, German, and French. The new voice engine also offers better pronunciation of Elite Dangerous terminology and ship names.
Q: What is UDP Journal Reception and why should I use it?
A: UDP Journal Reception allows the app to receive journal events directly from Elite Dangerous in real-time via UDP protocol, instead of continuously reading journal files from disk. This provides much faster response times, reduces system overhead, and enables immediate processing of game events as they happen. The feature automatically falls back to traditional file monitoring if UDP is unavailable.
Q: How does the Bass Shaker support work?
A: The Bass Shaker module provides tactile feedback for various in-game events like engine vibrations, weapon fire, explosions, and atmospheric entry. You can connect compatible bass shaker hardware to your PC and configure the app to send appropriate signals for an immersive gaming experience. The intensity and types of effects can be customized in the options.
Q: What can I do with MQTT integration?
A: MQTT integration allows you to connect EliteG19s to your home automation system. You can trigger smart lights, displays, or other IoT devices based on in-game events. For example, you could have your room lights flash red when under attack, change color when jumping to hyperspace, or display your current system name on a smart display.
Q: Can I display this in my VR set?
A: Yes! EliteG19s now provides an overlay view that allows you to view and interact with the EliteG19s screen from within your space ship! See the SteamVR Overlay manual for details
Q: But I don't have a VR set, and just a single monitor! 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: Which languages are supported?
A: Version 4.2 includes full localization support for English, Spanish, German, and French. This includes Space Traffic Control voices, Ship AI messages, and all text-to-speech functionality. The app automatically detects your Elite Dangerous language setting, but you can also manually configure the language in the options.
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.
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.
Older releases and their notes can be found on the downloads page; consult the release notes there for details about previous updates.
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.
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.
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.
Tip: if you click on the header bar (where the clock is), you go up a menu level. Very helpful when navigating the menus.
Use your VR controller to navigate the overlay, trigger is a left click, grab is right click. When you move the controller below the screen, a toolbar appears that allows you to position the overlay to your liking. Click on icon to enable the mode, move your controller to position, the pull the trigger again to save that location. There is a default location that is used when in the main menu or when you're not in game. As soon as you enter a vehicle, any changes to location are saved for that particular vehicle and restored next time you get in it!
EliteG19s ships with a dedicated VoiceAttack integration. The standalone guide in EliteG19s-VoiceAttack.html covers installation, the full command catalogue, supported variables, and troubleshooting tips.
Quick start:
%LocalAppData%\Programs\EliteG19s\VoiceAttack\Apps into C:\Program Files (x86)\VoiceAttack\Apps.EliteG19s-Profile.vap (optional) or wire your own commands using the plugin contexts described in the guide.Read the VoiceAttack integration guide
The app supports hotkeys; configure them in options.json under HotKeys.
Button press example (matches HotKeyOptions in the app):
{
"Function": "Up",
"UseAlt": true,
"UseCtrl": true,
"UseShift": true,
"UseWin": false,
"Key": "F5",
"IsEnabled": false
}
Function example (maps to named functions handled by the app):
{
"Function": "Screen Status",
"UseAlt": true,
"UseCtrl": true,
"UseShift": true,
"UseWin": false,
"Key": "F6",
"IsEnabled": true
}
Common functions: Volume Up, Volume Down, Mute, Next Screen, Previous Screen, Show, Visualization <Name>, Screen <Name>, Next Track, Previous Track, Pause, Shuffle, Orrery Zoom In/Out, Orrery Time Faster/Slower, Orrery Reset 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.
| Key | Effect |
|---|---|
| W | Move Up |
| A | Move Left |
| S | Move Right |
| D | Move Down |
| Up | Move Forward |
| Down | Move Backward |
| Left | Rotate view left |
| Right | Rotate view right |
| + | Zoom in |
| - | Zoom out |
| < | Slow down time |
| > | Speed up time |
| Home | Reset 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!
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).
New in version 4.2! The app now includes support for bass shaker (tactile transducer) hardware to provide immersive tactile feedback during gameplay.
A bass shaker is a device that converts audio signals into physical vibrations, allowing you to "feel" the action in Elite Dangerous. Instead of just hearing engine rumbles, weapon fire, or explosions, you can physically feel them through your chair or flight simulator setup.
The bass shaker system responds to various in-game events:
You'll need compatible bass shaker hardware connected to your PC. Popular options include:
Bass shaker settings can be configured in the options.json file (fields match BassShakerOptions):
{
"BassShaker": {
"IsEnabled": true,
"DeviceName": "ButtKicker",
"MaxGain": 0.8,
"MinFrequency": 35.0,
"MaxFrequency": 65.0,
"IsBassRemappingEnabled": true,
"BassRemapRumbleMultiplier": 4.0,
"UpdateIntervalMs": 100
}
}
Configuration Options:
IsEnabled: Enable/disable bass shaker functionalityDeviceId: Audio output device Id for bass shaker (usually 1)MaxContinuousGain: For effects that run continuously (FSD charging, fuel scooping)MaxBurstGain: For short burst effects (docking, jumps, impacts)MaxPulseGain: For pulsing effects (overheating, interdiction)MinFrequency: Minimum frequency for bass shaker effectsMaxFrequency: Maximum frequency for bass shaker effectsIsBassRemappingEnabled: Enable bass frequency remapping from captured audioThe EliteG19s app allows you to create Lua scripts to add functionality. For a full description of this option, see the Scripting page.
Version 4.2 introduces several advanced features that enhance the app's capabilities and integration with Elite Dangerous and external systems.
EliteG19s supports user-defined macros — ordered lists of action steps you can trigger from a hotkey, hardware button, or game event. For detailed information about available action step types, parameters, JSON examples, and how to use the Settings Wizard to create and edit macros, see the dedicated guide:
New in version 4.2! The app now supports receiving journal data directly from Elite Dangerous via UDP protocol for real-time, low-latency event processing.
Elite Dangerous version 3.3+ supports broadcasting journal data via UDP. When enabled:
Add the following to your options.json file (fields match UdpJournalOptions):
{
"UdpJournal": {
"IsEnabled": true,
"ListenAddress": "127.0.0.1",
"ListenPort": 31000,
"AutoConfigureElite": true
}
}
Configuration Options (from UdpJournalOptions):
IsEnabled: Enable/disable UDP journal receptionListenAddress: IP address to listen on (usually "127.0.0.1")ListenPort: Port to listen on for UDP packetsAutoConfigureElite: Automatically configure Elite's AppConfig filesIf AutoConfigureElite is enabled, EliteG19s will automatically configure Elite's files. Otherwise, manually add to Elite's AppConfig.xml:
<AppConfig>
<Journal address="127.0.0.1" port="31000" />
<Network VerboseLogging="1" />
</AppConfig>
Elite's config files are typically located at:
%LocalAppData%\Frontier Developments\Elite Dangerous\Products\{PRODUCT_ID}\AppConfigLocal.xml
If you have the Steam or Epic Games version of Elite Dangerous, the AppConfig.xml file is typically found in one of these locations:
%LocalAppData%\Frontier Developments\Elite Dangerous\Products\elite-dangerous-64\AppConfig.xml%LocalAppData%\Frontier Developments\Elite Dangerous\Products\elite-dangerous-64-epic\AppConfig.xmlReplace %LocalAppData% with the path to your local app data folder, usually C:\Users\<YourUsername>\AppData\Local.
The system operates in three intelligent modes:
The system automatically transitions between modes based on Elite's availability and connection status.
If you own a Logitech G19s, G19, G15 or G510 keyboard you can connect the app directly to the keyboard over USB instead of using the Logitech Gaming Software (LGS). This can be helpful on Windows 11 where LGS/Logitech software is known to be unstable.
NOTE: I have only tested this on a G19s keyboard. Let me know if you run into issues on other devices.
How it works
How to install it
G19s Gaming Keyboard (Composite Parent) with USB ID 046D C229.List All Devices and then UNcheck Ignore Hubs or Composite Parents.libusbK (not WinUSB).When to use it
Enable Direct USB Mode
%AppData%\EliteG19s\options.json and set:{
"LogitechSettings": {
"UseDirectUSBConnection": true,
"SetBackgroundColor": true,
"PlayEffects": true,
"Ambilight": false,
"ShowKeyBindings": false
}
}
Don't forget to restart the app.
Security and safety
New in version 4.2! Connect EliteG19s to your home automation system using the MQTT protocol.
MQTT (Message Queuing Telemetry Transport) is a lightweight messaging protocol perfect for IoT and home automation systems. EliteG19s can publish game events to MQTT topics, allowing your smart home to react to in-game activities. You can also send messages back using MQTT, see the MQTT Remote page.
EliteG19s publishes the following information via MQTT:
Configure MQTT in your options.json file (fields match MqttOptions):
{
"Mqtt": {
"IsEnabled": true,
"Broker": "homeassistant.local",
"Port": 1883,
"Username": "eliteg19s",
"Password": "your_password",
"TopicBase": "eliteg19s/journal"
}
}
Configuration Options (from MqttOptions):
IsEnabled: Enable/disable MQTT functionalityBroker: IP address or DNS name of your MQTT brokerPort: MQTT broker port (usually 1883)Username / Password: MQTT authentication credentialsTopicBase: Base topic for all messages (e.g., "eliteg19s/journal")Smart Lights: Change room lighting based on ship status
Display Integration: Show current system on smart displays
Audio Alerts: Use smart speakers for notifications
EliteG19s automatically creates Home Assistant entities via MQTT discovery:
# Example: Monitor commander credits
sensor:
- name: "Elite Commander Credits"
state_topic: "elitedangerous/CMDR_NAME/sensor/credits/state"
icon: "mdi:currency-usd"
# Example: Automation for jump events
automation:
- alias: "Elite Hyperspace Jump"
trigger:
platform: mqtt
topic: "elitedangerous/CMDR_NAME/event/jump"
action:
service: light.turn_on
entity_id: light.office_lights
data:
color_name: "blue"
brightness: 255
New in version 4.2! Drive EliteG19s from scripts and automation tools over HTTP. When the webhook service is enabled in options.json, the app starts an HTTP listener (default http://localhost:32123/) that accepts POST requests for any IRemoteControl command.
/remote-control (or /) containing a command name plus optional parameters.Example payload:
{
"command": "ChangeVolume",
"delta": 10
}
Try it with curl (PowerShell):
curl http://localhost:32123/remote-control -Method Post -ContentType application/json -Body '{"command":"ChangeVolume","delta":10}'
For a full walkthrough—including enabling the feature, request/response formats, security considerations, and recipes for curl, classic PowerShell, and Postman—open the EliteG19s Webhook Guide.
Security note: If you enable webhooks, prefer binding to localhost and keep the port firewalled. For remote access, enable TLS and require an authentication token in the JSON payload or an Authorization: Bearer <token> header. Avoid exposing the webhook port to the public internet without a reverse proxy and proper auth.
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:
| Option | Description |
|---|---|
Version |
The current version of the app |
Logging |
Options for logging to a log.txt file: "Logging": { "IsEnabled": true, "IsVerbose": false } Set both values to true for maximum logging when you encounter errors |
EliteFolder |
Where to find the E:D installation (is found automatically in most cases) |
JournalsFolder |
Optional setting to explicitly set the folder where the Journal files can be found |
ScreenshotFolder |
New in version 4.2! Optional setting to explicitly set the folder where Elite Dangerous screenshots are stored |
ScriptsFolder |
Where Lua scripts are stored for the scripting functionality |
Music |
Music player settings and options |
Spotify |
Spotify integration settings and authentication |
InitialVolume |
The initial volume level of the app (between 0.0 and 1.0) |
IsSyncConstructionDepotWithShoppingList |
(true/false) synchronize construction depot materials with shopping list functionality |
DisplayOptions |
Display settings are stored here (see below) |
AudioVisualizationOptions |
Options for audio visualizations |
OrreryOptions |
Enhanced in version 4.2! Settings for the orrery view and 3D system display |
GPSOptions |
Enhanced in version 4.2! Settings for GPS functionality and waypoint management |
FavoriteStarSystems |
A list of favorite star systems for the orrery screen's Favorites menu |
RadioStations |
A list of radio stations to use (see below) |
SpotifyPlaylists |
A list of Spotify playlists to use (see below) |
Podcasts |
A list of podcasts that you can listen to |
Websites |
A list of websites that can be accessed through the app |
RacingMusic |
A list of urls to Soundcloud or MP3 files to use when racing with the GPS view |
TwitchChannels |
Removed: Twitch channel presets are no longer supported. |
OnTopReplica |
Options to automatically start the OnTopReplica app (see below) |
SpaceTrafficControlOptions |
Options for space traffic control and NPC voices (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. |
CustomColorMatrix |
You 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" }, |
LogitechSettings |
Settings to control Logitech keyboards (see below) |
IsScriptingEnabled |
(true/false) enable or disable Lua scripting functionality |
IsUseGameTime |
(true/false) display game time or local time in the app's display |
QuitWhenEliteExits |
(true/false) automatically close EliteG19s when Elite Dangerous exits |
IsUseDiscordRichPresence |
(true/false) show your current position in Discord |
DefaultTTSVoice |
If 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 |
HotKeys |
Map hotkeys to app functions (see above) |
NewsTicker |
Set different RSS tickers to use in the news ticker |
PhilipsHue |
Enhanced in version 4.2! Settings for Philips Hue lights (see below) |
AmbilightUpdateInterval |
The delay between reads of the screen by the Ambilight routine |
IPCamera |
Setting to display view of MJPEG IP Camera (see below) |
BassShaker |
New in version 4.2! Settings for bass shaker tactile feedback (see above) |
Mqtt |
New in version 4.2! Settings for MQTT home automation integration (see below) |
Webhooks |
New in version 4.2! Settings for the webhook remote control listener (see above) |
UdpJournal |
New in version 4.2! Settings for UDP journal reception (see below) |
LastCommander |
Information about the last commander that was active (used for session restoration) |
EliteG19s assumes CMDRs use the set language to chat. However, there is some logic that when the app suspects that a different language is spoken, a multilingual voice is selected that can probably speak that languge.
You can override the voice used for specific CMDRs by editing the SpaceTrafficControl.CMDRVoiceOverrides dictionary in your options.json. This cannot currently be changed via the UI and must be edited manually.
Example options.json snippet demonstrating both name and locale entries:
"SpaceTrafficControl": {
"CMDRVoiceOverrides": {
"MagicMau": "nl",
"Example": "en-GB-GeorgeNeural",
"Aussie": "en-AU"
}
}
Notes:
nl-NL, en-US) or a two-letter language code (nl, en).en-US-AvaNeural, en-GB-GeorgeNeural, nl-NL-FemkeNeural, etc.). If the specified voice is not available, the app will fall back to the configured default voice (SpaceTrafficControl.DefaultVoiceName).options.json you must restart EliteG19s for changes to take effect.The radio stations list can be edited to add or remove internet radio sources. See the RadioStations section in the options file for examples.
The DisplayOptions section of the options.json file controls how and when windows are opened automatically. Saved window positions are stored here as well when the app exits.
This section contains the following settings:
The LogitechSettings section of the options file contains settings for Logitech keyboards.
Enhanced in version 4.2! The PhilipsHue section of the options file contains settings for Philips Hue lights.
The IPCamera section of the options file contains settings for IP cameras.
New in version 4.2! The Mqtt section of the options file contains settings for MQTT home automation integration.
Smart Lights: Change room lighting based on ship status
Display Integration: Show current system on smart displays
Audio Alerts: Use smart speakers for notifications
EliteG19s automatically creates Home Assistant entities via MQTT discovery:
# Example: Monitor commander credits
sensor:
- name: "Elite Commander Credits"
state_topic: "elitedangerous/CMDR_NAME/sensor/credits/state"
icon: "mdi:currency-usd"
# Example: Automation for jump events
automation:
- alias: "Elite Hyperspace Jump"
trigger:
platform: mqtt
topic: "elitedangerous/CMDR_NAME/event/jump"
action:
service: light.turn_on
entity_id: light.office_lights
data:
color_name: "blue"
brightness: 255
Thank you for using EliteG19s! If you have questions, feedback, or need support, here are the best ways to reach out:
Join our active Discord community for:
Discord Server: https://discord.gg/Ew7Baq5
For detailed technical issues or private matters:
For bugs and enhancement ideas:
If you enjoy EliteG19s and want to support continued development:
Help make EliteG19s better:
EliteG19s receives regular updates with:
Stay Updated:
Special thanks to:
Elite Dangerous is a trademark of Frontier Developments plc. EliteG19s is an independent third-party application and is not affiliated with or endorsed by Frontier Developments.
Safe travels, Commander!
Fly safe, fly far, and may your fuel tank never run dry.
o7