Troubleshooting the X9D(+)
For quite some time we had the impression that the X9D(+) radio works well with the high baud rates, needed for ExpressLRS. However, some users report it's not working as it should with ExpressLRS. For example:
- ExpressLRS Lua script just shows
Loading...
- ExpressLRS Lua script shows unstable behavior, especially on the higher packet rates, showing values different from
0/[SELECTED PACKET RATE]
- Constant Telemetry Lost/Telemetry Recovered Notification.
Potential Problem¶
It is possible that the X9D(+) radio also suffers from a slow inverter circuit that messes up the 400000 baud UART signals.
As you may know, for the Taranis QX7(S) you can do the Crossfire inverter mod or select a lower baud rate in the Hardware menu (Page 6/7) of OpenTX to fix the issue.
Troubleshoot¶
Well, the final verdict is not out yet, but the following may help to resolve the issue:
- Do a hardware mod as well on your X9D(+) as you can read all about here in PR# 59 for EdgeTX. This requires changing the 10k resistor
R82
to a 1k resistor. - Download a OneBit_Status firmware using this OpenTX version, based on OpenTX(2.3.12 or 2.3.14) and enable
ONEBIT
Sample Mode (System Menu -> Hardware). One Bit Sample Mode is also available on EdgeTX.
- Select
115200 baud
using the above OpenTX version. (ExpressLRS will lock you out of 500Hz packet rate with 2.4GHz, but any packet rate below that should be stable now.)
The nice thing about the OpenTX build above is that it also adds two additional Sync
lines to show the current OpenTX/UART behavior. This will show in your Model Setup (Page 2/11) where you select the external module type (where you selected CRSF to enable ELRS):
- The first
Sync
line shows something likeL00002R04000u
.L
andR
indicate the microseconds of Lag and Rate.- The
L
is how much OpenTX is trying to compensate to nail the rate you selected. (The closer to 0 the better) - The
R
is just the Packet Rate you selected using the ExpressLRS Lua script.
- The
- The second
Sync
line shows something likeG11 C00 F00
. This stand forG
(good packets),C
(CRC error),F
(Framing error). The goal is to have zero errors here. (Don't forget to power your receiver so a link is established!)
If this has helped you in any way (good or bad) with your X9D(+) radio, let us know on the ExpressLRS discord!