Skip to content

Advanced Topics

DanielGeA edited this page Jun 2, 2026 · 4 revisions

This section covers advanced concepts and internal behavior of MSRC.
It is intended for users who want a deeper understanding of telemetry, sensors, and system performance.


Telemetry Architecture

MSRC supports different telemetry protocols, which may use either polling or push mechanisms.

  • Polling protocols (e.g. Smartport, XBUS, Jeti EX)
    The receiver requests telemetry data at fixed intervals.

  • Push protocols (e.g. CRSF/ELRS)
    MSRC sends telemetry data continuously without explicit requests.

Update Rates

Telemetry update rates depend on:

  • The selected protocol
  • The type of sensor
  • Available bandwidth

MSRC automatically adjusts update rates to fit protocol limitations.
Some sensors (e.g. GPS) use slower update rates than fast-changing data like RPM.


GPS Deep Dive

Fix, Home Position, and Distance

GPS data is only valid when a fix is available.

  • Fix = valid GPS position
  • Home position is set when the first valid fix is received
  • Distance to home may be calculated:
    • In MSRC (depending on protocol)
    • In the transmitter (e.g. OpenTX/EdgeTX)

Small variations in position (1–3 meters) are normal due to GPS accuracy.

UBLOX Auto Configuration

When UBLOX protocol is selected:

  • Baud rate and update rate are configured automatically at boot
  • Configuration is stored in the GPS module (persistent)

Requirements:

  • GPS RX connected to GPIO 14
  • Supported baud rates:
    • 115200, 57600, 38400, 9600

After configuration, the RX line may be disconnected.


ESC Deep Dive

Auto Detect

Some ESC protocols support auto-detection:

  • Detects ESC model and firmware
  • Sets scaling parameters automatically

If auto-detect fails, parameters must be set manually.

Voltage and Current Scaling

ESC telemetry may provide raw values.

To obtain correct readings:

  • Use Voltage Divisor
  • Use Current Multiplier

Calibration in MSRC is recommended over transmitter calibration for better resolution.

ESC Init Delay

Some ESCs require a delay before telemetry is available.

If the ESC does not arm:

  • Enable ESC Init Delay
  • Or power MSRC after the ESC is initialized

I2C Deep Dive

Pull-ups

I2C lines (SDA/SCL) require pull-up resistors.

  • Typical values: 4.7kΞ© – 10kΞ©
  • Some receivers already include pull-ups

Incorrect pull-ups may result in:

  • No telemetry
  • Unstable communication

Boot Timing and Clock Stretch (XBUS)

Some receivers boot faster than MSRC.

If the receiver polls before MSRC is ready, telemetry will fail.

Solutions:

  1. Power receiver after MSRC
  2. Use manual clock stretch (switch)
  3. Use transistor-based clock stretch
  4. Enable XBUS Clock Stretch

Analog Sensors and Airspeed

ADC Limits

The RP2040 ADC range is:

0–3.3V

Input voltage must not exceed this limit.

Voltage Divider

To measure higher voltages:

Vout = Vin Γ— R2 / (R1 + R2)

Ensure:

  • Vout < 3.3V
  • Total impedance < 10kΞ©

Use metal resistors for accuracy.

Current Sensors

Two types are supported:

  • Hall effect sensors (e.g. ACS773, ACS756)
  • Shunt resistor sensors

Calibration is done using the Current Multiplier.

Airspeed Measurement

A differential pressure sensor (MPXV7002) is used.

  • Sensor must be powered at 5V
  • Output must remain within 3.3V ADC range

Maximum measurable airspeed is approximately 131 km/h.

Airspeed Calculation

Airspeed is calculated as:

TAS = sqrt(2 Γ— Ξ”P / ρ)

Where:

  • Ξ”P is differential pressure
  • ρ is air density

If a barometer is present, air density is calculated dynamically.


Multi-Module Setup

INA3221 (LiPo Monitoring)

Each INA3221 supports 3 cells.

Multiple modules can be connected via I2C:

  • Address 0x40 β†’ cells 1–3
  • Address 0x41 β†’ cells 4–6

Addresses must be unique.

Multiple MSRC Boards

Some protocols limit the number of telemetry values (e.g. Jeti EX).

If more sensors are required:

  • Use multiple MSRC boards
  • Connect to different telemetry ports
  • Or use a telemetry expander

Debug and Performance

Debug Mode

Debug mode can be enabled in MSRC Link.

It provides:

  • Sensor data logs
  • Communication status
  • Error information

Useful for diagnosing issues.

CPU Load

Each enabled sensor consumes processing time.

To optimize performance:

  • Disable unused sensors
  • Avoid unnecessary calculations
  • Reduce telemetry load if needed

High CPU load may result in:

  • Delayed telemetry
  • Missed packets

Building from Source

MSRC can be built from source using command-line tools.

Download the Source Code

Clone the GitHub repository:

git clone https://github.com/dgatf/msrc.git
cd msrc

Build from Command Line

Build the firmware from the project directory:

cmake -S . -B build
cmake --build build

The generated firmware files will be created inside the build directory.

VS Code

MSRC can also be built using VS Code, provided that the RP2040 build environment is already configured.

Open the repository folder in VS Code and run the configured build task.

← Sensors
β†’ Troubleshooting

Clone this wiki locally