-
Notifications
You must be signed in to change notification settings - Fork 59
Advanced Topics
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.
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.
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 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.
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.
Some ESC protocols support auto-detection:
- Detects ESC model and firmware
- Sets scaling parameters automatically
If auto-detect fails, parameters must be set manually.
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.
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 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
Some receivers boot faster than MSRC.
If the receiver polls before MSRC is ready, telemetry will fail.
Solutions:
- Power receiver after MSRC
- Use manual clock stretch (switch)
- Use transistor-based clock stretch
- Enable XBUS Clock Stretch
The RP2040 ADC range is:
0β3.3V
Input voltage must not exceed this limit.
To measure higher voltages:
Vout = Vin Γ R2 / (R1 + R2)
Ensure:
- Vout < 3.3V
- Total impedance < 10kΞ©
Use metal resistors for accuracy.
Two types are supported:
- Hall effect sensors (e.g. ACS773, ACS756)
- Shunt resistor sensors
Calibration is done using the Current Multiplier.
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 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.
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.
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 mode can be enabled in MSRC Link.
It provides:
- Sensor data logs
- Communication status
- Error information
Useful for diagnosing issues.
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
MSRC can be built from source using command-line tools.
Clone the GitHub repository:
git clone https://github.com/dgatf/msrc.git
cd msrcBuild the firmware from the project directory:
cmake -S . -B build
cmake --build buildThe generated firmware files will be created inside the build directory.
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