Testing 868MHz LoRa range, part 3: round trip

After determining that range of 868MHz LoRa wireless modules E45-TTL-100 have, at least, quite impressive range (5,7km and I was out of line-of-sight to test further) I’ve decided to test something else.

In the beginning I was planning to use those radio modules for telemetry only, but then another thought crossed my mind: why not to build DIY TBS Crossfire for the poor? After all, TBS Crossfire also uses 868MHz LoRa (SX1272 vs SX1276), so it should be possible to build DIY radio link for medium range (up to 5km) for RC planes, right?

First of all, I will need to know how fast data can be transferred and how much delay can I expect in real life. So I’ve modified Arduino code and E45-TTL-100 configuration:

  • UART speed bumped from 9600bps to 57600bps
  • air speed bumped from 2400bps to 19200bps
  • output power lowered from 100mW to 50mW (17dBm)
  • transmitter sends 5 bytes of data (current microseconds and prefix)
  • relay receives packet and resends it to transmitter
  • current received number is deducted from current microseconds and round trip time is showed on OLED display

LoRa E45-TTL-100 round trip test


  • Round trip time is 82ms on average and it does not changes with distance
  • at lower output power (50mW vs 100mW) reception at 2.8km is worse. 100% of packets are received only then antenna alignment is not worse than 45 degrees
  • with slightly bigger payload size (up to 7 bytes) it should be possible to archive at least 20Hz update rate

11 thoughts to “Testing 868MHz LoRa range, part 3: round trip”

  1. Hey.
    Instructions, how to do this you do not have?
    I do not understand radio electronics, but I know how to solder a little)
    Module HC-12 is not satisfied because of the low range (20-30 meters)

    Thank you

  2. Hi,
    Really like your DIY experiments. I’m the same, and am also playing around with some Lora radio modules (the RFM95, included in one of the Adafruit Feather boards).
    I’ve also been wondering about making my own control link, and latency is the BIG issue, of course. The different modem configurations are really interesting, and I get the following round-trip times:
    static const RH_RF95::ModemConfig rf95config = { 0x72, 0x94, 0x00 };
    driver.setModemRegisters(&rf95config); // SLOW, long range – PING roundtrip 545 miilis
    driver.setModemConfig(RH_RF95::Bw500Cr45Sf128); // FAST, short range – PING roundtrip 39 millis
    driver.setModemConfig(RH_RF95::Bw125Cr45Sf128); // Medium range – PING roundtrip 148 millis

    1. 39 will be fine. The question is “short range”. If this will be few km then it’s fine. But even 148ms gives 75ms one way and this is enough for airplanes and 10Hz update rate

  3. Hi DZIKU,

    Thanks for your post. I am actually working on an E32 from EByte. Could you please share your Arduino sketch with us? Thanks.

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.