Note: This plugin is still a work-in-progress and may contain bugs
This is a High Level Analyzer for Saleae Logic 2.x software. It supports the decoding of a couple of Serial communication formats used by Spektrum in their DX and iX series of Surface and Air Transmitters and Receivers.
- Decode bootloader messages between Spektrum Programmer software for Windows and compatible Spektrum Receivers and Transmitters.
- Decode UART messages between an Android-based Spektrum Radio (DX6R, iX12, iX14, iX20), and it's corresponding Channel Processor (CP).
Communication is done via serial communication over a single wire.
- Use a
Spektrum TX/RX USB Programming Cable (SPMA3065) - Use a standard
Y-Harnessconnector for servo cables. (Example:SPMA3058) - Connect the programming cable to your computer's USB port.
- Connect the servo end of the programming cable to one of the two shrouded connectors on the Y-Harness.
- Connect the servo end of the Y-Harness to your compatible TX/RX.
- Connect your Logic Analyzer's Ground to the Ground pin of the leftover shrouded connector.
- Connect one of your Logic Analyzer's Pins to the Signal pin of that same connector.
- Create an
Async SerialAnalyzer with the speed115200and rest leave as default. - Create a new
Spektrum TX/RX Bootloader and SG3 DecoderAnalyzer and link it with theAsync SerialAnalyzer you used in the previous step.
Flash new firmware to compatible Spektrum TX or RX using Spektrum Programmer software.
%% NOTE: View rendered diagrams on GitHub repo
sequenceDiagram
actor U as User
participant SP as Spektrum Programmer
participant TX as Compatible TX / RX
U->>SP: Connect
SP->>TX: CABLE_SYN
TX->>SP: CABLE_ACK
SP->>TX: ID_REQUEST
TX->>SP: ID_RESPONSE
U->>SP: Flash Firmware
SP->>TX: SAX_ERASE
TX-->>TX: Erase Data
TX->>SP: SAX_ERASE_RESPONSE
loop For each block of SAX file
SP->>TX: SAX_WRITE
TX-->>TX: Write Data
TX->>SP: SAX_WRITE_RESPONSE
end
SP->>TX: SAX_EOF
TX->>SP: SAX_EOF_RESPONSE
SP->>U: Success
The Android based iX12, iX14, and iX20 Air Transmitters and DX6R Surface Transmitter communicate from the Android application to the
Channel Processor (CP) using a custom Spektrum C/C++ Library called LibSG3, which uses UART on port /dev/ttyS0 @ 115200 baud rate.
- Probe the various Test Points on the PCB for anything sending Serial communication
- On a DX6R, the UART is on
TP35andTP36
- Create 2
Async SerialAnalyzers with the speed115200and rest leave as default. - Create a new
Spektrum TX/RX Bootloader and SG3 DecoderAnalyzer for eachAsync SerialAnalyzer you created in the previous step.
Example communications of a DX6R radio
%% NOTE: View rendered diagrams on GitHub repo
sequenceDiagram
actor U as User
box Android
participant AW as AirWare / RaceWare (C#35;)
participant SG3 as Lib SG3 (C/C++)
end
participant CP as Channel Processor (CP)
U->>AW: Open RaceWare
AW->>SG3: initLibSG3()
SG3->>CP: DISCOVER
CP->>SG3: DISCOVER_RESPONSE
SG3->>AW: SG3ERR_SUCCESS
AW->>SG3: enableRadio()
SG3->>CP: SET_RF_MODE
CP->>SG3: ACK
CP->>SG3: SET_RF_MODE_RESPONSE
SG3->>CP: ACK
SG3->>AW: SG3ERR_SUCCESS
loop Every 50ms
CP->>SG3: SurfaceRuntimeData
SG3->>AW: SurfaceRuntimeData Event
end
U->>AW: Set Brake Rate
AW->>SG3: setBrakeRate()
SG3->>CP: WRITE_FIELD
CP->>SG3: ACK
CP->>SG3: WRITE_FIELD_RESPONSE
SG3->>CP: ACK
SG3->>AW: SG3ERR_SUCCESS
SG3-->>SG3: Wait for timeout
SG3->>AW: ModelSavedToFlash







