Release Elite Dangerous X52 Pro Light Control - EDXLC

To run EDXLC version 1.13 download and unzip the following file then run edxlc.exe.
https://github.com/andrewdsmith/edxlc/releases/download/v1.13/edxlc_v1.13.zip


EDXLC is a companion app for the game Elite Dangerous that controls the button lights on your Saitek X52 Pro joystick so that they reflect the current state of your ship in the game.

Download the latest zip file, unzip, and run edxlc.exe. The app runs in a console window. Exit with Ctrl+C or just close the console window.

On first run the app creates a simple text file called edxlc.toml. Edit this file to change how the app behaves. Restart the app after making any changes to this file. To reset to defaults delete the file.

The app detects the following:
  • Landing gear deployed
  • Cargo scoop open
  • External lights activated
  • Frame shift drive (FSD) charging
  • Silent running activated
  • Hardpoints deployed
  • Night vision activated
Where a game control is bound in game to a button on the joystick, the button light will indicate the following states:
  • Inactive - Green (Off) - Not currently activated but can be activated
  • Active - Amber (On) - Currently activated
  • Blocked - Red (Off) - Cannot be activated
  • Alert - Flashing Red/Amber (Flashing) - May need to be activated urgently
An example blocked state is FSD charging while mass-locked or landing gear deployed. Examples of alert states include heat sinks when overheating and landing gear when docking permission has been granted.

When hardpoints are deployed or night vision is activated the app switches to an alternative configuration.

The default configurations in edxlc.toml are:

Code:
[default]
inactive = ["off", "green"]
active = ["on", "amber"]
blocked = ["off", "red"]
alert = ["flash", "amber-flash"]

[hardpoints-deployed]
inactive = ["off", "red"]
active = ["on", "amber"]
blocked = ["off", "off"]
alert = ["flash", "amber-flash"]

[night-vision]
inactive = ["off", "off"]
active = ["on", "green"]
blocked = ["off", "off"]
alert = ["flash", "green-flash"]

The hardpoints-deployed and night-vision sections are optional and will fall back to the values in default if missing.

For each state you specify the light mode for boolean and red/amber/green lights. For boolean lights, the supported modes are:
  • off
  • on
  • flash
For red/amber/green lights, the supported modes are:
  • off
  • red
  • amber
  • green
  • red-flash
  • red-amber-flash
  • red-green-flash
  • amber-flash
  • amber-green-flash
  • amber-red-flash
  • green-flash
  • green-amber-flash
  • green-red-flash
To use an alternative configuration file specify it as a command line argument:

edxlc.exe C:\Path\To\My\config.toml

By default the app reads the game control bindings from the Custom.4.0.binds bindings file used by Odyssey. You can use a different bindings file (e.g. Custom.3.0.binds for Horizons) by specifying the full path to the file in the bindings value in the [files] section of config.toml, e.g.

Code:
[files]
bindings = 'C:\Users\DavidB\AppData\Local\Frontier Developments\Elite Dangerous\Options\Bindings\Custom.3.0.binds'

Important: Due to the way the TOML file format works, you should use single quote characters around the path (as shown above).

This video shows a very early prototype in action.

 
Last edited:
Nice idea you have here!
I'm interested in this tool but I have many questions

What does the interface look like? (the tool i mean)
What are the options, can you specify what is changed?
What are the prerequisite to make the tool work?

Could you add to a little video to present how it works?

I have already set some colors and I do like it, is it possible to make it so that only one thing gets the said behavior?
 
Nice idea you have here!
I'm interested in this tool but I have many questions
I agree, a video would be useful to see the LEDs change, but just try it. For those not familar with the github interface the latest release can be found on the right hand side. Just download the zip file, extract the executable and run it. Everything is detected automatically from your binds.

You don't need to worry about the interface. It just shows a log of what it is detecting from the journal, and just runs in the background. It's not used to configure anything. You could get into that by editing the config file, but I haven't, and it's not necessary.
Screenshot 2021-10-09 194456.jpg
 
What does the interface look like? (the tool i mean)
As Millstone shows (thanks!) it's just a console app that outputs some basic diagnostics. You configure it by editing a simple text file.

What are the options, can you specify what is changed?
The concept is that the meaning of your chosen colours for inactive, active, blocked and alert remain consistent and relate to the ship control(s) bound to the button in question. So for instance you know that a flashing amber button means that the control is at "alert" regardless of whether it's bound to landing gear (and you're currently docking) or to heatsinks (and you're currently overheating).

You can change which colours (or flashing combinations) are used for each of the states inactive, active, blocked and alert. Right now you can have separate settings for these colour mappings that apply in normal flight, when hardpoints are deployed, and when you have night vision on. By default, for example, the inactive state changes from green to red when you deploy hardpoints. It would be easy enough to extend this to other modes like when in supercruise.

I'll update the original post to contain all the details.

What are the prerequisite to make the tool work?
You have to have an X52Pro joystick! 😉 You also have to install the X52Pro drivers in the default install location; the joystick works without drivers but this tool needs a library that comes with the specific drivers in order to work. I should probably add a link that to the description in the README.

Could you add to a little video to present how it works?
This video is a bit old (and I've rewritten and hugely expanded capabilities since then) but it shows the basic premise.


I should probably add that to the README until I get something better recorded.

I have already set some colors and I do like it, is it possible to make it so that only one thing gets the said behavior?
Did you have something specific in mind?
 
Thank you both for this detailed reply!
I know console info is easier to make, but do you know if in the future you'll make a basic interface? I mean similar to the drivers interface.
Did you have something specific in mind?
this is my default configuration, based on what each control is used for
1633874485075.png

T1= shaff
T2= thermal
T3= light
T4= cargo
T5= nrj cell
T6= landing gear
based on that I'd like to keep it with these colors and only use flashing for example.
Everything is detected automatically from your binds.
well I guess this will be the issue ... the saitek tool used for bindings never worked, so the binding is set ingame only...

Edit: Gosh, could you add an option to set driver location? as for me it's "C:\Program Files\Saitek\DirectOutput"
1633876765876.png

This is all I get :
1633876949585.png
 
Last edited:
I know console info is easier to make, but do you know if in the future you'll make a basic interface? I mean similar to the drivers interface.
Sorry, I'm unlikely to get to a UI like that any time soon; not something I'm particularly skilled in and not where I want to put my time right now. Someone else could build a UI separately and have it update the config file. I appreciate that's not the answer you're looking for.

based on that I'd like to keep it with these colors and only use flashing for example.
I will think about if it's possible to keep the default settings from the driver UI. This may not be possible as I don't think the drivers have a way to read those values. What you want is basically at odds with the way I approached the tool. But... I will think about this.

well I guess this will be the issue ... the saitek tool used for bindings never worked, so the binding is set ingame only...
When we said bindings we meant the in-game bindings, so it should work. :)

Edit: Gosh, could you add an option to set driver location? as for me it's "C:\Program Files\Saitek\DirectOutput"
Ah! I didn't know this. I think if you uninstall and re-install the newest drivers it will move them to the expected location. But this is a bit crap so I will endevour to make this an option over the next few days.

This is all I get

Ah! You downloaded the source code, not the exe. Here's the link you want:
 
Last edited:
When we said bindings we meant the in-game bindings, so it should work. :)
Many thanks for your reply, i'm quite relieved that in-game bindings are fine to work :)
Sorry, I'm unlikely to get to a UI like that any time soon; not something I'm particularly skilled in and not where I want to put my time right now. Someone else could build a UI separately and have it update the config file. I appreciate that's not the answer you're looking for.
It's fine, as you said, there may be a UI designer out there that may help :D
I will think about if it's possible to keep the default settings from the driver UI but it may not be possible as I don't think it's possible to have no way to read those values. What you want is basically at odds with the way I approached the tool. But... I will think about this.
I'm pretty sure these values are kept either in registry or in a config file...
Ah! I didn't know this. I think if you uninstall and re-install the newest drivers it will move them to the expected location. But this is a bit crap so I will endevour to make this an option over the next few days.

Ah! You downloaded the source code, not the exe. Here's the link you want:
thx for the link, I'll try as soon as you make the driver location selectable, I had so many issues installing it, that I'd prefer to keep as it is and not mess up everything :rolleyes:
 
Does this work for the non pro version of the x52 or is there a way to get it to work properly?
As far as I'm aware the X52 lights are not programmable, at least not via the DirectOutput SDK that EDXLC is built on. Unfortunately this means that EDXLC isn't going to be much use for you, sorry. Also, I only have the X52 Pro, so I can't experiment to see if it works with the X52. I assume that EDXLC probably just crashes if you have an X52.
 
Greetings, did a little cleaning on my PC and was testing this app, but I wondered what could cause a false positive here on Virustotal, any idea?
This happens from time to time because the edxlc.exe file (or the zip itself) randomly matches the hashes (patterns) of certain viruses, just through blind (bad) luck. Some earlier versions triggered Windows Defender in the same way. It's not a virus, it just has a fingerprint that looks similar to a virus.

As far as I'm aware there's nothing I can do to stop this happening apart from digitally signing the app but this requires hundreds of dollars a year in registration fees that I'm not prepared to pay.

You could try downloading v1.13 instead to see if that passes the virus scan: https://github.com/andrewdsmith/edxlc/releases/download/v1.13/edxlc_v1.13.zip

Ultimately, though, regardless of virus scan results, you need to decide if you trust some random guy on the internet (me!) to run code on your machine! 😮
 
This happens from time to time because the edxlc.exe file (or the zip itself) randomly matches the hashes (patterns) of certain viruses, just through blind (bad) luck. Some earlier versions triggered Windows Defender in the same way. It's not a virus, it just has a fingerprint that looks similar to a virus.

As far as I'm aware there's nothing I can do to stop this happening apart from digitally signing the app but this requires hundreds of dollars a year in registration fees that I'm not prepared to pay.

You could try downloading v1.13 instead to see if that passes the virus scan: https://github.com/andrewdsmith/edxlc/releases/download/v1.13/edxlc_v1.13.zip

Ultimately, though, regardless of virus scan results, you need to decide if you trust some random guy on the internet (me!) to run code on your machine! 😮
no worries, I'm aware it's a false positive!

Nice, you got a new ver. maybe just update this post when you add a version :)
If needed and if i'm note sure, i'll just use a sandbox, (and I did) after looking at behavior, nothing that I've seen was worrying !

Edit you changed the name on link, not the link (link goes to v1.12)
 
Last edited:
Evening, so I'm not very tech savvy..
I downloaded the zip (the exe file) extracted it. Tried to run it and it briefly loads a window for a split second and dissapears. Does anyone know what that could be? I'm giving it permissions to run. And I'm a X52pro user..

Cheers!
 
Evening, so I'm not very tech savvy..
I downloaded the zip (the exe file) extracted it. Tried to run it and it briefly loads a window for a split second and dissapears. Does anyone know what that could be? I'm giving it permissions to run. And I'm a X52pro user..

Cheers!
Hi! Thanks for getting in touch and sorry for the delay, I didn't think anyone was posting on this thread any more.

If the window is disappearing it probably means it can't connect to the joystick for some reason. Here's how to get more info:

1. Open a Command Prompt window; the quickest way to do this should be to hit your Windows key on your keyboard, type "cmd", then hit the Enter key.
2. Change to the directory where you downloaded and extracted the exe, e.g. "cd C:\User\JeanBelo\Downloads\edxlc-1.13".
3. Enter "edxlc" to run the tool.

Copy and paste the output here and I'll see if I can help you.
 
Back
Top Bottom