Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue with ELRS Module Display After Updating FrSky X-Lite to EdgeTx Centurion v2.10.5 #5848

Open
1 task done
edilsoncorrea opened this issue Jan 27, 2025 · 80 comments
Open
1 task done
Labels
bug 🪲 Something isn't working triage Bug report awaiting review / sorting

Comments

@edilsoncorrea
Copy link

Is there an existing issue for this problem?

  • I have searched the existing issues

What part of EdgeTX is the focus of this bug?

Transmitter firmware

Current Behavior

I recently updated my FrSky X-Lite to EdgeTx Centurion v2.10.5 (release date: 2024-10-13 09:54:55, firmware: edgetx-xlite). I am using an ELRS 2.4TX module, specifically the AION 2.4TX NANO 500mW model, which is updated to version 3.5.3. My X-Lite is also running the latest Lua script, elrsV3.lua.

When using OpenTx, the ELRS module’s display would power on normally whenever CRSF was enabled on the selected model. However, after updating to EdgeTx, while communication with receivers is working flawlessly, the module’s display no longer powers on.

The only scenario where the display turns on is when I disable CRSF on the model and re-enable it. If the X-Lite remains powered on, the display stays on and correctly shows when the module is connected to the receiver. However, if I power off the X-Lite and turn it back on, the display stops working again.

Expected Behavior

The ELRS module’s display should power on automatically whenever CRSF is enabled on the selected model in EdgeTx, just as it did in OpenTx. The display should remain on and function normally, showing the connection status with the receiver, without requiring any additional steps like toggling CRSF on and off.

Steps To Reproduce

Update the FrSky X-Lite to EdgeTx Centurion v2.10.5 (firmware: edgetx-xlite).
Use an ELRS 2.4TX module (e.g., AION 2.4TX NANO 500mW) updated to version 3.5.3.
Ensure the Lua script elrsV3.lua is installed and up to date on the X-Lite.
Enable CRSF on a selected model in EdgeTx.
Power on the X-Lite and check if the ELRS module’s display turns on automatically.
If the display doesn’t turn on, toggle CRSF off and then back on.
Observe that the display works normally while the X-Lite remains powered on.
Power off the X-Lite and turn it back on, then check if the ELRS display powers on again.

Version

2.10.5

Transmitter

FrSky X9 Lite / Lite S

Operating System (OS)

Windows

OS Version

Windows 10

Anything else?

No response

@edilsoncorrea edilsoncorrea added bug 🪲 Something isn't working triage Bug report awaiting review / sorting labels Jan 27, 2025
@pfeerick
Copy link
Member

pfeerick commented Jan 27, 2025 via email

@edilsoncorrea
Copy link
Author

I still believe there might be something related to EdgeTx, mainly because the issue with the ELRS display started right after I updated to EdgeTx. The only change I made was updating to EdgeTx, as the ELRS module was already running version 3.5.3 prior to the update.

@3djc
Copy link
Collaborator

3djc commented Jan 28, 2025

There is no mechanism for EdgeTX to control module display at all, even if we wanted to

@mha1
Copy link
Contributor

mha1 commented Jan 28, 2025

I think display not turning on needs to be understood as module is not working at all = not powered. Powering the module is solely under EdgeTX control.

@edilsoncorrea please try to reproduce the problem. If the module's display hasn't turned on remove the module from the radio and measure the voltage between the GND and VCC pins if you can.

@3djc
Copy link
Collaborator

3djc commented Jan 28, 2025

I think display not turning on needs to be understood as module is not working at all = not powered. Powering the module is solely under EdgeTX control.

@edilsoncorrea please try to reproduce the problem. If the module's display hasn't turned on remove the module from the radio and measure the voltage between the GND and VCC pins if you can.

Yes, but he says:
"However, after updating to EdgeTx, while communication with receivers is working flawlessly, the module’s display no longer powers on."

which strongly suggests module in ON

@mha1
Copy link
Contributor

mha1 commented Jan 28, 2025

True, maybe @edilsoncorrea can confirm again that the module is indeed working, ie communicating with the receiver and the lua script is loading even if the display didn't turn on.

@edilsoncorrea
Copy link
Author

Yes, everything works normally except for the display on the module.

@3djc
Copy link
Collaborator

3djc commented Jan 28, 2025

@mha1, assuming module work, wouldn't arming toggle display on module?

@mha1
Copy link
Contributor

mha1 commented Jan 28, 2025

No, the display should be on as soon as the module is powered and stay on regardless of the arming status. I have two of the same modules and never saw anything like you describe. Have you ever messed with modifying the hardware configuration of the module (hardware.html)?

@edilsoncorrea
Copy link
Author

I will carry out the requested tests, measuring the voltage on VCC. I should note that the module is functioning normally, with the main LED operating correctly and even changing colors. However, the display does not turn on.

@3djc
Copy link
Collaborator

3djc commented Jan 28, 2025

Then I hardly see how Etx could be the cause at this point

@mha1
Copy link
Contributor

mha1 commented Jan 28, 2025

@edilsoncorrea you don't need to do that. The module is powered if the LED works and it communicates.

@mha1
Copy link
Contributor

mha1 commented Jan 28, 2025

@3djc I agree

@edilsoncorrea
Copy link
Author

I was wondering if the module, in addition to receiving voltage on VCC, also requires some sort of command, like an "AT Command," to turn on the display, which might not be sent by EdgeTx.

@3djc
Copy link
Collaborator

3djc commented Jan 28, 2025

No, there is nothing Etx does have access to that can control the display at all

@mha1
Copy link
Contributor

mha1 commented Jan 28, 2025

@edilsoncorrea please try to get it into the no display problem, then open the ELRS LUA script on the radio. Does it open? Does the display on the module turn on?

@edilsoncorrea
Copy link
Author

No, the display does not turn on when I open the LUA script. The only thing that makes the module's display turn on is when I go into the model configuration, turn off the external "CRSF" module by setting it to OFF, and then turn it back on.

@mha1
Copy link
Contributor

mha1 commented Jan 28, 2025

@3djc do you by any chance know what the FrSky X-Lite outputs on the module connector VCC? 5V?

@3djc
Copy link
Collaborator

3djc commented Jan 28, 2025

What FrSky calls VMAIN, with is VBAT. As X-Lite are 2S Lion, anywhere between say 6.6 and 8.4.

@mha1
Copy link
Contributor

mha1 commented Jan 28, 2025

I can reproduce the problem by just powering the stand alone module via the USB-C connector. No display but after 1min the green LED turns on indicating it wants to go to WiFi mode, ie the module is alive. The label on the module states "Voltage 6-8.4V". I believe 5V is not enough. And I remembered the NV14 outputs 5V. Same behavior as @edilsoncorrea describes with the NV14.

I'm sure this is a module specific behavior in conjunction with a low or weak power supply.

Specification:

Product: 2.4G ELRS TX module jumper
Model Name: AION TX NANO
Screen: OLED screen
MCU: ESP32
RF output power: 10-500mw
Frequency range: 2.4GHz-2.5GHz
Firmware: ExpressLRS
Antenna: Directivity diamond antenna for better signal input
Working voltage: DC5-8.4v
Receive Max Refresh Rate: 500Hz
Menu button: 5 direction button
Voltage: DC6-8.4V <-------------------
Current: <400mA
Port: S port.
Firmware update: via Wifi, UBC-C or Blue tooth

@edilsoncorrea
Copy link
Author

Let me remind you that the module was working normally when Opentx was installed. This bug started happening when I updated to Etx.

@3djc
Copy link
Collaborator

3djc commented Jan 28, 2025

And I think we are trying to tell you that we (Etx and ELRS devs) think it is not possible, and are looking for something else that could explain that coincidence. What is current voltage reading on main screen?

@edilsoncorrea
Copy link
Author

And I think I'm trying to explain to you that if it worked with OpenTx and stopped working with Etx, it's not a coincidence. Etx changed the behavior of the power pin, which, if similar to the Taranis X9D+, is controlled by a FET.

@mha1
Copy link
Contributor

mha1 commented Jan 28, 2025

I will carry out the requested tests, measuring the voltage on VCC

@edilsoncorrea Change in plan, I'd be interested in a voltage measurement directly at the module connector

@edilsoncorrea
Copy link
Author

7.6v

@mha1
Copy link
Contributor

mha1 commented Jan 28, 2025

sounds good

@edilsoncorrea
Copy link
Author

As @mha1 requested, I measured the GND and VMain pins. The voltage at this moment is 7.616V. What I believe has changed in Etx compared to OpenTx is that the "Heart Beat" data pin might have changed its initial value when the X-Lite powers on. For example: In OpenTx, it was high, and now in Etx, it’s low, or vice versa.

@edilsoncorrea
Copy link
Author

I'll make a cable with just VCC and GND and connect the module to the X-Lite with only that, isolating the Heart Beat pin, to see if the module powers on in this scenario.

@mha1
Copy link
Contributor

mha1 commented Jan 28, 2025

Trying to understand the root cause. Look at my zoomed in screenshot and you'll see SPort is 100us prior to power on of the module low. I can't resolve this in your first picture. Anyhow, I'm trying to get to the root cause. I'm sure the case is clear for you but it really isn't.

And for that reason, I'm out.

@edilsoncorrea
Copy link
Author

@edilsoncorrea
Copy link
Author

I redid the test with a Taranis X9D+, and the module powers on normally. I connected both oscilloscope channels to the extension pins and verified that the S. Port pin stays low when the Taranis X9D+ is powered on and remains low until communication starts, right after the boot is completed.

I tried capturing with the oscilloscope on the modified X-Lite, adjusting the time for a better "zoom," but it wasn’t enough to determine if the S. Port pin goes back to a low state moments before VCC is powered on.

@edilsoncorrea
Copy link
Author

I was able to capture the states of the VCC and S.Port pins during the boot process of the FrSky X-Lite using a Logic Analyzer. I recorded the data similarly to what @mha1 did. I believe this data might help in understanding what may have changed in EdgeTx compared to the previous behavior in OpenTx.

Image
Image
Image

@mha1
Copy link
Contributor

mha1 commented Feb 5, 2025

Picture 3 shows an idle high data stream which is different to your scope video https://www.youtube.com/watch?v=N1OrlgIignA. Does polarity change after doing the CRSF OFF and ON again?

Anyhow. if this is CRSF the module auto detects polarity.

@edilsoncorrea
Copy link
Author

This happens when CRSF is turned off and back on in the module. I noticed that the time until data starts being transmitted is much longer.

Image

@edilsoncorrea
Copy link
Author

This image is from the boot process of the Taranis X9D+. The time it takes to start transmitting data after the module is powered on is much longer.
Image

@mha1
Copy link
Contributor

mha1 commented Feb 6, 2025

This image is from the boot process of the Taranis X9D+. The time it takes to start transmitting data after the module is powered on is much longer.

The dT between power on and data stream starting is 4ms (your measurement). The module itself is busy booting for at least 1/2s before it even starts looking at incoming CRSF data packets. Immediately after power power on of the module or 4ms after power on of the module doesn't make doesn't make any difference to the modules ability to auto-detect polarity and baud rate before actually starting to work with the incoming data-

@edilsoncorrea
Copy link
Author

It really doesn’t make a difference in the module’s ability to start processing data. I mentioned in one of my comments above that the module works normally. The problem is not that the module doesn’t work. The issue is that with the changes made in EdgeTx regarding these timings, the DISPLAY no longer turns on during the boot of the X-Lite. And this used to work fine with OpenTx.

@mha1
Copy link
Contributor

mha1 commented Feb 7, 2025

It really doesn’t make a difference in the module’s ability to start processing data. I mentioned in one of my comments above that the module works normally. The problem is not that the module doesn’t work. The issue is that with the changes made in EdgeTx regarding these timings, the DISPLAY no longer turns on during the boot of the X-Lite. And this used to work fine with OpenTx.

I understand that it's a display only issue and also discussed your issue with the team. Turning on the display is done independent of the incoming serial data. It's turned on regardless of serial data being present or not which by the observed by the "no handset" displayed if the module is just connected to GND and VCC.

Do you have other modules, preferably of the same type to try?

Please enter WiFi mode of the module and enter 10.0.0.1/hardware.json, click save and attach the file.

@edilsoncorrea
Copy link
Author

I only have this module with a display, but I tested it on the Taranis X9D+, and it works. The high value on the S. Port at the moment the module is powered on is what is preventing the display from turning on. This is easy to test even outside of the X-Lite. I powered it with 8V and used a voltage divider with two 10k resistors to drop 4V on the S. Port pin, and the display didn’t turn on.

I’ll save the file later today and attach it here.

@edilsoncorrea
Copy link
Author

Here is the Hardware.json file:

hardware.json

@mha1
Copy link
Contributor

mha1 commented Feb 7, 2025

Your hardware.json looks ok.

I tried to reproduce the issue using your S.Port high theory on both of my Jumper AION nano TX modules (one on 3.5.2, the other on 3.5.3). A 2s LiFe (6.6V) for VCC and a two 10k resistor voltage divider to provide 3.3V at the S.Port pin. Both modules boot just fine and turn on the OLED display as they should. So far I can only conclude you might have module hw issue and recommend trying another module of the same type.

Don't scratch your head about the outgoing colors. Red and GND are swapped to provide SPort, GND, VCC in the right order for the module. Outgoing red = GND, black = VCC (6.6V), yellow = S.Port (3.3V)

Image

@edilsoncorrea
Copy link
Author

edilsoncorrea commented Feb 8, 2025

If there is something wrong with my AION, then why did it work fine on OpenTx, and why does it work normally on the Taranis X9D+? I showed the timings on both the X-Lite and the Taranis X9D+. Clearly, they exhibit different behaviors.

@edilsoncorrea
Copy link
Author

I believe it is now clear that the development team will not analyze what has changed in the behavior of the S.Port value for the X-Lite on EdgeTx compared to its behavior on OpenTx. I appreciate the help.

In my measurements using a Logic Analyzer, there is clearly not the same interval presented by @mah1 in his measurements. Thank you for all your help, @mah1.

I will give up trying to get my module's display to work. I still hope that in future updates, this bug will be fixed and it will work again AS IT DID ON OPENTX.

@mha1
Copy link
Contributor

mha1 commented Feb 8, 2025

You presented a scenario to fail your module without any connection to a radio. I spent time and effort to setup the exact scenario and tested two modules identical to yours with no issues. So what do you expect? The test results - two of my modules working, your module not working - hint at a problem with your module. Besides that no one ever reported any similar issues. Get yourself another one of those module, they are cheap.

If you can provide a better test scenario to reproduce the problem I'd be happy to try it. Until there is a way to reproduce this issue there can't be a fix.

@edilsoncorrea
Copy link
Author

I forgot to mention a detail in the test with the resistors forming a divider. The goal is to simulate what the X-Lite does: it pulls the S.Port pin high before powering up.

If you connect everything at the same time, as in your test, the module powers on. I redid the test here, simulating exactly your scenario with a bench power supply at 6.6V.

When I turned on the power supply with all three terminals already connected, the display worked. However, when I connected GND and S.Port with the divider, then powered on the supply, and only afterward connected VCC, the display did not turn on.

@mha1
Copy link
Contributor

mha1 commented Feb 8, 2025

However, when I connected GND and S.Port with the divider, then powered on the supply, and only afterward connected VCC, the display did not turn on.

I tried this. Both of my modules still boot and turn on the the display,

@edilsoncorrea
Copy link
Author

edilsoncorrea commented Feb 8, 2025

This video clearly demonstrates the situation. I included two switches in the circuit. The left switch cuts off the VCC going to the module. The right switch cuts off the voltage (divided by the resistors) going to the S. Port. When I turn on the left switch with the right switch off, the display powers on normally. When I turn on the right switch first and then turn on the left switch, the display does not turn on because the S. Port pin is already in a high state before the module is powered.

https://www.youtube.com/shorts/9NLjeNzM8iQ

@pfeerick
Copy link
Member

pfeerick commented Feb 9, 2025

If I am understanding the test setup correctly, you are saying when SPort is high at time of power on for the module, the display doesn't work? I can't reproduce that with my module either (running3.5.1) whether at or before power on.

I tried both high and low at power on, high before power on (and also low, but not on video) - module and display started up fine each time.

https://youtube.com/shorts/bKBpP2UERvs

@3djc
Copy link
Collaborator

3djc commented Feb 9, 2025

Anyhow, if anything, it would not be an EdgeTX fault, a change yes maybe, a fault no. We are entitled to power the way we want as long as we are within the required spec, and we are since the module is working perfectly control and telemetry wise. The issue is either hardware with this module, or within ELRS.

@pfeerick
Copy link
Member

pfeerick commented Feb 9, 2025

After a few more repeats, I got another fault scenario, which suggests it is indeed a design fault in the AION... it looks like something is backfeeding via the SPort pin, hence the OLED is not initialising/reset properly (you can see the last frame is displayed instantly if not enough power off time)... and the startup timing is pretty important... if you leave SPort high long enough, it will startup fine.

https://youtube.com/shorts/hbKwo1TJE_c

@mha1
Copy link
Contributor

mha1 commented Feb 9, 2025

After a few more repeats, I got another fault scenario, which suggests it is indeed a design fault in the AION... it looks like something is backfeeding via the SPort pin, hence the OLED is not initialising/reset properly (you can see the last frame is displayed instantly if not enough power off time)... and the startup timing is pretty important... if you leave SPort high long enough, it will startup fine.

https://youtube.com/shorts/hbKwo1TJE_c

Thanks for trying this too. It really looks like there's some backfeeding through the SPort pin keeping some parts zombie alive. This should never happen. Unfortunately I don't have schematics of this rather old module to verify. I also tried with various timings but couldn't reproduce any of this on my two modules so I think there even might even be different revisions.

Best advice is probably to scrap the module and get a decent one.

@pfeerick
Copy link
Member

pfeerick commented Feb 9, 2025

I think there even might even be different revisions.

Quite possible... I'm pretty sure I got this as soon as it was available locally.

@pkendall64
Copy link
Contributor

There are 2 revisions of this module in the mix as well. The original one, which powers on from USB and the second which does not.

@edilsoncorrea
Copy link
Author

@pfeerick, I'm not sure if you have exactly reproduced one of the tests I did that precisely simulates the behavior of EdgeTx on the X-Lite during boot. When I watched your video, I noticed that. When I set up the scenario, I failed to prepare the circuit to exactly reproduce the X-Lite's behavior.

I'll try to describe the sequence as accurately as possible:
The bench power supply needs to be turned on, and the S. Port and GND pins must be connected. The S. Port pin will receive the voltage reduced by the voltage divider (resistors). Only after the S. Port pin is at a high level should the VCC pin receive power from the supply.

Could you confirm if you reproduced this scenario? Thank you very much for your willingness to help identify what is happening.

@pfeerick
Copy link
Member

pfeerick commented Feb 9, 2025 via email

@edilsoncorrea
Copy link
Author

edilsoncorrea commented Feb 10, 2025

The behavior of your module is different from mine in this aspect. My module always keeps the display off if the S. Port pin is high when the module is powered on. My module is running version 3.5.3, but I have already reverted to version 3.5.1, and the behavior was the same.
When I bought this module, my X-Lite was running OpenTx 2.3, and the display always turned on.

@pfeerick
Copy link
Member

That is simply a timing issue / specific to the OLED IC itself... if it inits improperly it will simply show what is still in it's buffer... which could be nothing, random noise, or a full frame. This is why a disconnecting the VCC and then reconnecting while maintaining the parasitic power up via SPort will immediately show "NO HANDSET" on power up, even though the display doesn't actually get set to that until the module has been powered up for several seconds (i.e. it should be showing the ELRS logo and version first, and then after it doesn't see a signal on the SPort for for a couple of seconds it gets set to that - but instead you get "No Handset", ELRS logo, and then "No Handset").

When I bought this module, my X-Lite was running OpenTx 2.3, and the display always turned on.

This doesn't change the fact this is a design flaw of the module, exposed by a minor timing change that should have no effect as it is still being controlled well within spec on the EdgeTX side.

@edilsoncorrea
Copy link
Author

Do you think it would be possible to modify EdgeTX to replicate this small timing adjustment that OpenTX applied? If you don't find it convenient to include it in the official version, could you inform me where I can apply it? I can compile a version of EdgeTX with this modification.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug 🪲 Something isn't working triage Bug report awaiting review / sorting
Projects
None yet
Development

No branches or pull requests

5 participants