Page 1 of 1

TIMEOUT Error when using the EBYTE E220 LoRa Module

Posted: Thu Mar 05, 2026 3:52 pm
by m1cha3l
Hi,
I'm currently trying to use an EBYTE E220-900T22D LoRa Module with an ESP32 P4 from Waveshare but I can't get a response from the module and only get a Timeout Error.

Wiring:
TX (E220) → RX GPIO38
RX (E220) → TX GPIO37
AUX → GPIO45
M0 → GPIO32
M1 → GPIO27
VCC → 3.3V
GND → GND

Library: LoRa_E220 library by Renzo Mischianti.

Code (I am using Arduino IDE):

Code: Select all

#include "LoRa_E220.h"
#include <HardwareSerial.h>

HardwareSerial mySerial(2);

#define RX_PIN 38
#define TX_PIN 37
#define AUX_PIN 45
#define M0_PIN 32
#define M1_PIN 27

LoRa_E220 e220(
  TX_PIN, RX_PIN,
  &mySerial,
  AUX_PIN, M0_PIN, M1_PIN,
  UART_BPS_RATE_9600,
  SERIAL_8N1
  );

struct SensorData {
  float temperature;
  float humidity;
};

void setup() {
  Serial.begin(115200);
  while (!Serial) delay(10);
  Serial.println("START");

  e220.begin();
  Serial.println("e220 start");

  ResponseStructContainer c = e220.getConfiguration();
  Serial.println("getConfiguration");

  if (c.status.code == 1) {
    Configuration config = *(Configuration*)c.data;
    config.CHAN = 18;
    config.OPTION.transmissionPower = POWER_13;
    ResponseStatus rs = e220.setConfiguration(config, WRITE_CFG_PWR_DWN_SAVE);
    Serial.println(rs.getResponseDescription());
  } else {
    Serial.print("Error: ");
    Serial.println(c.status.getResponseDescription());

  }
      c.close();

}

void loop() {
  SensorData data;
  data.temperature = 23.56;
  data.humidity = 51.2;
  ResponseStatus rs = e220.sendMessage((uint8_t*)&data, sizeof(data));
  delay(5000);
}
Problem: I want to send 2 values via the E220 Module, but every time when I upload the code, the serial monitor always prints

"START
e220 start
getConfiguration
Error: Timeout!!"


The Error seems to come from here somewhere. When I remove the lines, the error message in the serial monitor also disappears:

Code: Select all

  ResponseStructContainer c = e220.getConfiguration();
  Serial.println("getConfiguration");

  if (c.status.code == 1) {
    Configuration config = *(Configuration*)c.data;
    config.CHAN = 18;
    config.OPTION.transmissionPower = POWER_13;
    ResponseStatus rs = e220.setConfiguration(config, WRITE_CFG_PWR_DWN_SAVE);
    Serial.println(rs.getResponseDescription());
  } else {
    Serial.print("Error: ");
    Serial.println(c.status.getResponseDescription());

  }
      c.close();

I have not made a receiver yet because I want this code to work before.

Earlier, instead of "Timeout" the serial monitor also printed
"assert failed: heap_caps_free heap_caps_base.c:80 (heap != NULL && "free() target pointer is outside heap areas")"


Questions:

* Is there anything wrong with my wiring or UART configuration?
* Do M0/M1 have to be set differently when reading the configuration?
* Is there anything specific required when using this module with an ESP32 P4 that I might have missed?

Any ideas would be greatly appeciated!
Thanks.

Re: TIMEOUT Error when using the EBYTE E220 LoRa Module

Posted: Sat Mar 07, 2026 8:43 am
by m1cha3l
It now works. There were a few small things that didn't work, but now everything works fine.