Transmission modes

The module has two different modulations, LoRa™ modulation, owned by Semtech, and standard FSK modulation. Libelium has decided to only use the LoRa™ modulation due to the range improvement it provides.

When setting the SX1272 module on, the module is prepared to use LoRa mode.

About the operation states, it is not necessary to control them manually. It is done automatically by the API functions.


The innovative LoRa™ mode is the most interesting included in this module. It is an advanced and private modulation that increases the range comparing to classic modulations. The LoRa™ long range mode provides ultra-long range spread spectrum communication and high interference immunity whilst minimizing current consumption. It combines digital spread spectrum, digital signal processing, and forward error correction coding to achieve unprecedented performance. LoRa™ also provides significant advantages in both blocking and selectivity over conventional modulation techniques.

LoRa has three configurable parameters:

  • Bandwidth (BW)

  • Coding Rate (CR)

  • Spreading Factor (SF)

The combination of these values defines the transmission mode. It is possible to set a predefined mode or to set these three parameters manually.

There are ten predefined modes in the API, including the largest distance mode, the fastest mode, and eight other intermediate modes that Libelium has found interesting. All of them can be modified or deleted, and also it is possible to attach new modes in the appropriate function. The predefined modes and its properties are shown in the next table.

The transmission times have been measured for a whole transmission process: power the module on, configure the module, send a 100-byte packet and power the module off.

The user will be able to choose the most suitable mode for that application after the appropriate test phase because there is not an perfect mode for any situation. In fact, it exists a compromise between distance range and speed of transmission.

Note: When transmitting in ISM frequency bands, the user must ensure that the communication is not exceeding the permitted time using the chosen frequency channel (for example, 1% of time). It is the responsibility of the user to know the allowed time of use in the occupied frequency band and respect it. Ignoring this, could lead to considerable penalties.

Example of use:

sx1272.setMode(3); // Sets the LoRa mode in transmission mode 3

SX1272 configuration example:

If the user is going to select a mode with this function, it is not necessary to set also the bandwidth, coding rate and spreading factor later.


The value of the bandwidth shows how wide is going to be the transmission signal. It only can be chosen among 3 options: 125 kHz, 250 kHz or 500 kHz. If a fast transmission is required, a 500 kHz value is better. But if a great reach is needed, a 125 kHz value must be configured. The smaller the bandwidth is, the higher the time-on-air is in a transmission but also the better the sensitivity is, so the communication has better link budget. The user should also note that the increasing in time-on-air involves an increasing in battery consumption.

Example of use:

sx1272.setBW(BW_250); // Sets the 250 kHz bandwidth in LoRa mode

Coding Rate

The coding rate value must be chosen among 4 options: 4/5, 4/6, 4/7 and 4/8. It denotes that every 4 useful bits are going to be encoded by 5, 6, 7 or 8 transmission bits depending on its value. The smaller the coding rate is (the smallest is 4/8), the higher the time-on-air is in a transmission, so it takes more time to transmit a packet. This will ease the task of receiving, because each symbol is wider in time, so the receiver can demodulate packets with lower reception power. This means the receiver has better sensitivity, so the user has better link budget. But slow data transmissions have an impact in the battery consumption: spending more time in transmission mode involves more battery consumption.

Example of use:

sx1272.setCR(CR_7); // Sets the 4/7 coding rate in LoRa mode

Spreading Factor

The spreading factor is the number of chips per symbol used in the data treatment before the transmission signal. Its value is an integer number between 6 and 12. This parameter is relevant in the spread spectrum technique. In the spread spectrum techniques, the greater value of this parameter, the more capability the receiver has to move away the noise from the signal. So the greater value taken, the more time it takes to send a packet, but also the better range is reached because the receiver sensitivity is better.

Example of use:

sx1272.setSF(SF_9); // Sets the 9 spreading factor in LoRa mode

Last updated