Home

Awesome

<p align="left"><a href="https://raw.githubusercontent.com/olliw42/mLRS-docu/master/logos/mLRS_logo_long_w_slogan_1280x768.png"><img src="https://raw.githubusercontent.com/olliw42/mLRS-docu/master/logos/mLRS_logo_long_w_slogan_1280x768.png" align="center" height="153" width="256" ></a>

mLRS

The mLRS project offers an open source 2.4 GHz & 915/868 MHz & 433 MHz/70 cm LoRa-based high-performance long-range radio link, which provides bidirectional serial connection combined with full remote control.

The 'm' in the project name alludes to 'MAVLink', as it has features which optimizes performance for MAVLink systems. However, it always will also provide a transparent serial link and hence will be of wider use and not be limited to MAVLink systems only. The 'LR' in the project name alludes to 'long range', which however should not be understood in terms of an absolute range, like 100 km, but - of course - as the best possible range under the given conditions. Physical laws simply say that the higher the data rate the shorter the range. So, mLRS cannot compete range-wise with systems which achieve their range by reducing data rate to a minimum, at the cost of the resulting compromises. The goal of mLRS is to achieve a high range under the condition of a relatively high data rate.

Typical specs could be 'plenty' of full-resolution RC channels, with 50 Hz update rate and serial data rates of about 3-5 kBytes/s at 2.4 GHz.

Many LRS or radio links with telemetry exist, among them open source projects such as SiK radios, OpenLRS, ExpressLRS, but also befinitiv wifibroadcast based projects like OpenHD or Ruby, closed source hobbyist projects such as UltimateLRS, QczekLRS, as well as commercial systems such as DragonLink, RFD900, Dronee Zoon, Siyi, and also TBS Crossfire and alike.

However, while all these systems are truely excellent and achieve their goals, and some of them are indeed close to what the project aims at, none of them checks all boxes, like

The mLRS project fills this gap.

Disclaimer

You of course use the project fully at your own risk.

Project Status

There is still plenty of room for ideas and improvement, and in this sense the project is work in progress. It is however fair to call it stable and robust, and to perform quite well.

The mLRS system also provides a high level of usability such as a variety of options for input/output, parameter setting via the mLRS transmitter, optimization for ArduPilot/PX4 systems, wireless connection to ground control stations like MissionPlanner or QGC, or support of the Yaapu telemetry app without extra hazzles. It also integrates well with the mTX (formerly MAVLink for OpenTx) project, which yields a most fluid user experience.

It supports the SX1280/1, SX1276, SX1262 and LLCC68 Semtech chips, and thus the 2.4 GHz, 915/868 MHz and 433 MHz/70 cm frequency bands.

It provides 16 RC channels with the following layout (layout is equal in all operation modes):

It provides these operation modes:

50 Hz31 Hz19 HzFLRC (111 Hz)FSK (50 Hz)
frequency<br>bands2.4 GHz2.4 GHz<br>915/868 MHz<br>433 MHz/70 cm2.4 GHz<br>915/868 MHz<br>433 MHz/70 cm2.4 GHz915/868 MHz<br>433 MHz/70 cm
chip setsSX128xSX128x,<br>SX126x/LLCC68SX128x,<br>SX126x/LLCC68,<br>SX1276SX128xSX126x/LLCC68
downlink<br>serial rate4100 Bytes/sec2562 Bytes/sec1547 Bytes/sec9111 Bytes/sec4100 Bytes/sec
uplink<br>serial rate3200 Bytes/sec2000 Bytes/sec1207 Bytes/sec7111 Bytes/sec3200 Bytes/sec
receiver<br>sensitivity-105 dBm-108 dBm-112 dBmnot for LRnot for LR

Further features:

Community

Discussion thread at rcgroups: https://www.rcgroups.com/forums/showthread.php?4037943-mLRS-Lora-based-Mavlink-oriented-open-source-radio-link

Discord server: https://discord.gg/vwjzCD6ws5

Facebook group: https://www.facebook.com/groups/mlrslink/

Range

The range which one may expect can be estimated from the standard math; the ImmersionRc RF Link Range calculator comes in very handy here. Let's assume: power = 20 dBm (100 mW), antenna gain = 2 dBi, link margin = 12 dB (note: 12 dB link margin is conservative). Then, for the three LoRa modes:

50 Hz31 Hz19 Hz
2.4 GHz7 km10 km15 km
868/915 MHz-26 km42 km
433 MHz/70 cm-55 km87 km

For the 2.4 GHz band, the available range test reports consistently exceed the above estimated ranges (e.g., 8.3 km were reported for 2.4 GHz, 50 Hz, 9 dBm (8 mW), which translates to 29 km at 100 mW). For the other frequency bands less information is available(e.g. 5.4 km and 9.2 km were reported for 868 MHz, 31 Hz and 19 Hz, 0 dBm (1 mW), which would translate to 54 km and 92 km at 100 mW). Note that mLRS supports full diversity, which when enabled has been found to significantly improve performance at lower link budget, i.e., allows you to operate at larger ranges.

The FLRC and FSK modes are not intended for long range.

Hardware

The STM32 chipsets were chosen as main platform, and a good number of STM32 based devices are supported. The widely available ExpressLRS hardware, which uses ESP chipsets, is not ideal for mLRS, but also a good number of ExpressLRS devices are supported.

The code currently supports:

MatekSys offers a good selection of high quality mLRS boards, which are currently simply the best option available. They are specifically designed for mLRS exploiting its full potential. They support the 2.4 GHz and 868/915 MHz frequency bands, offer up to 1 W transmit power, and of course employ TCXOs. Furthermore, they use a comparatively beefy STM32 MCU, and are also very well suited for tinkering since all usable pins are broken out and easily accessible.

In the 915/868 MHz range, the Frsky R9 system and ExpressLRS receivers provide a readily available entry into mLRS. The Frsky R9M transmitter module makes a reasonable mLRS Tx module offering up to 1 W (the R9M Lite Pro cannot be used as transmitter). The R9 receivers are good options but provide low transmission power (50 mW). This can be mitigated by using a R9M Lite Pro or R9M as receiver (1 W). The various ExpressLRS 900 MHz receivers are often better options; some of them provide up to 500 mW transmission power, some of them are cheaply available, and they are also easier to flash. The combination of a Frsky R9M transmitter module and a ExpressLRS receiver can be a reasonable option in the 900 MHz range. The downside of all these gear is that they only support the 19 Hz mode, and are incompatible with the MatekSys and Wio-E5/E77/E22 based gear (link).

The SeeedStudio Wio-E5 boards and the EByte E77-MBL board are also readily available and reasonable options for entering mLRS. The "easy-to-solder" board, which uses an EByte E77 module, is a simple DIY option for building mLRS receivers and transmitters. It can also be used for building mLRS full diversity devices, as well as dual-band devices working simultaneously in e.g. the 868/915 MHZ and 2.4 GHz ranges. All these boards are based on the STM32WL5E chip and thus provide all advantages of the SX126x chipset, such as the 31 Hz mode. Their maximum power is 22 dBm, and they can be used in the 915/868 MHz and 433 MHz/70 cm frequency ranges.

In the 2.4 GHz range, the Flysky FRM303 transmitter module excels by its build quality, but is quite expensive and also limited feature-wise. mLRS supports using it as transmitter as well as receiver. The ExpressLRS 2.4 GHz receivers can provide up to 100 mW power, and some support full diversity. If the full potential of mLRS is however desired, the MatekSys or DIY options are the way to go.

Don't hesitate to join the discussion thread at rcgroups or the discord channel for more details.

Firmware: Flashing

Ready-to-flash firmware can be found in the "firmware" folder. All you need to do is to flash the binary file appropriate for your board into the device (it is not required to install the software for compiling as described in the next chapter or the docs). The mLRS transmitter can then be configured to your needs via the CLI, the mLRS Configuration Lua script, or the OLED display if available. The mLRS receiver is configured by connecting to the transmitter, and then configuring it through the transmitter, exactly like the transmitter is configured.

For the devices which are supported, the easiest way to flash can be the mLRS Web Flasher (currently only DFU mode is supported).

Software: Installation Bits and Bops

mLRS uses STM32CubeIDE for STM32 targets, and PlatformIO with VSCode for ESP32 and ESP8285 targets. For details see:

In case of issues with the procedures, don't hesitate to join the discussion thread at rcgroups or the discord channel.

Further Documentation

You find many more information here:

mLRS Documentation