Heltec Wifi LoRa32 V2 + LMIC questions

I have setup the Heltec SX1276 to send a payload to an application, which seems to work but not fully.

The data is sent to the application and I can decode it fine but it looks like the transmission doesn’t finish properly as shown below

Starting
Packet queued
3363: EV_JOINING
412050: EV_TXSTART
733088: EV_JOINED
netid: 19
devaddr: XXXXXX
AppSKey: XXXXXXXXX
NwkSKey: XXXXXXXXX
735486: EV_TXSTART

In this I would expect to see EV_TXCOMPLETE, which should be the receive response.

Can anyone confirm my thoughts are right and if so why might I be getting this issue?

Another thing I would also like to be able to receive download messages by this device but not sure what I would need to do for this.

Let me know if you need more information on setup/software to help diagnose.

Neil

Hi Neil, the guys who will know will be bound to ask 1) which library/environment are you using & 2) which specific Heltec board (inc. any revision… :wink:

Good point, its heltec lora 32 v2 and running via arduino and using the lmic library using OTAA.

Not sure what you mean with “which should be the receive response.”.

The join succeeded. TXCOMPLETE should occur after the last TXSTART in your log.

Your log ends with TXSTART and shows no further details. What happens next?

Which LMIC library exactly and which sketch are you using?

For more information have a look at LMIC-node

Hi,

What I mean is that I wold expect the EV_TXComplete to get called which would then check for RX (Downlink messages) and setup for the next send

case EV_TXCOMPLETE:
Serial.println(F(“EV_TXCOMPLETE (includes waiting for RX windows)”));
if (LMIC.txrxFlags & TXRX_ACK)
Serial.println(F(“Received ack”));
if (LMIC.dataLen) {
Serial.print(F(“Received “));
Serial.print(LMIC.dataLen);
Serial.println(F(” bytes of payload”));
}
// Schedule next transmission
os_setTimedCallback(&sendjob, os_getTime()+sec2osticks(TX_INTERVAL), do_send);
break;

My code just hangs theres no EV_TXComplete and therefore nothing else happens.

I’m looking over the LMIC docs to see if there’s a way to receive messages without doing an Uplink.

There is none for class A devices.

The LoRaWAN specification will be a better source for such information.

dang thats a shame that i cant do that

To add to this I manage to find out why the EV_TXComplete wasn’t being processed.

Turns out the mapping for DIO pins I had was .dio = {26, 33, 32} but this seems to be incorrect and changing it as shown below worked.

const lmic_pinmap lmic_pins = {
.nss = 18,
.rxtx = LMIC_UNUSED_PIN,
.rst = 14,
.dio = {26, 34, 35},
};

I now get the EV_TXComplete, however no ack or payload is returned so might need to do some more investigating on those bits to fully understand them.

Do first: check the Big ESP32 topic and LMIC-node.

This will save you time and prevent wasting other people’s time for questions already answered, information that is already available and lessons already learned.

This is true but some threads can go back years so take a very long time to read through them all. Luckily for this one I have found what I need to finish the project the rest is just to get a better understanding of LMIC.

What does my previous post mention?: Do first: check the Big ESP32 topic and LMIC-node.
That is exactly one thread (the latest version contains all relevant information, of which most in the topic start).

If someone is too lazy to search for and read any information already available on the forum then (s)he is never going to find out that for many subjects much care and time has already been spent to provide very useful information at a glance.
Wasting other people’s time ‘because searching and reading information already available on the forum is too much work’ is not a good motivator for trying to get help from others on the forum.

1 Like

no ones is asking you to waste your time just don’t reply

Which inevitably means that you won’t get any replies - the people who know stuff do tend to have to repeat themselves quite a lot.

There is the potential to get an Ack but it doesn’t come as standard and you can only do 10 a day to stay inside the Fair Use Policy.

No payload will be returned unless you have requested a downlink by some mechanism - which is part of those 10 a day. Why a limit - well to save some agro about searching the forum etc etc, it’s because the gateway is stone deaf whilst transmitting so too many downlinks means uplinks get lost.

I would recommend reading this as it will fill in many of the ‘usual’ questions:

https://www.thethingsnetwork.org/docs/lorawan/

Wrong, that is not how this forum works.
You are wasting other users’ time by not checking for and reading any relevant information already available on the forum and then come up with questions that have been answered many, many, many times already for which a lot of information and solutions are already available on the forum.
My opinion is that this is comparable to spam.

This is not a forum where the manufacturer offers free support for their product. The forum is neither for users that want instant answers to their problems while unwilling to search for any relevant information already available on the forum. If using the search option to find some information is already too much hassle then this is probably not the right forum for them.

This forum is for users by users. Users who are spending their spare time and assist others for free. It is wiser to follow advice from experienced users than to neglect valuable advice, existing information and lessons learned.

Do you want to be the 100(0)th person running into the same issues, asking the same questions and come up with ‘solutions’ that already exist and are already known? WE don’t.

So you are welcome here to ask questions but do some homework on the forum first.
It will serve you better and helps you ask better questions and people will be more willing to provide help to your targeted questions.

Hi, I would like to correct your pin assigment. I think you need to swap pin01 for pin02. Like this

const lmic_pinmap lmic_pins = {
.nss = 18,
.rxtx = LMIC_UNUSED_PIN,
.rst = 14,
.dio = {26, 35, 34},
};

Thank you I will give this ago and see if it works.