Frame Format

The XLRS protocol uses a fixed packet length of 33 bytes for the main channel data message (MSG_CHANNELS).

Message Types

TypeIDDescription
MSG_CHANNELS0x018-channel control data (encrypted)
MSG_BATTERY0x02Battery telemetry from RX to TX
MSG_PAIRING0x03Pairing request with binding UID
MSG_PAIRING_ACK0x04Pairing acknowledgment
MSG_SYNC0x05Connection sync packet
MSG_SYNC_ACK0x06Sync acknowledgment

Channel Frame (MSG_CHANNELS)

The main control frame consists of:

  • Message Type: 1 byte
  • Device ID: 8 bytes
  • Channel Data: 16 bytes (8 channels × 2 bytes, big-endian)
  • Sequence Number: 2 bytes
  • HMAC-SHA256: 4 bytes (truncated)
  • Total: 31 bytes payload + 2 bytes overhead = 33 bytes

Battery Telemetry (MSG_BATTERY)

The RX receives battery telemetry from the flight controller via CRSF and sends it to the TX over radio.

FieldFormatDescription
VoltageV × 10 (16-bit BE)Battery voltage in 0.1V units
CurrentA × 10 (16-bit BE)Battery current in 0.1A units
Remaining8-bitBattery percentage (0-100)

UART Protocol (RC ↔ TX)

The UART protocol between the RC board and TX module uses a similar frame-based structure with CRC8 checksums.

Commands (RC → TX)

CommandIDDescription
UART_MSG_CMD_PAIR0x10Enter pairing mode
UART_MSG_CMD_BOND0x11Check bonding status
UART_MSG_CMD_RESTART0x12Restart TX module
UART_MSG_CMD_STATUS_REQ0x13Request status update