Rhf76-052am - getting it working with OTAA

Hi, I cannot upgrade firmware with AT+DFU=on and YMODEM file send. DFU command put device to DFU mode, reboot in 5 secs, but when I try to upload via ExtraPUTTY YMODEM, upload not start.

I’m having all kinds of trouble with these Seeeduinos as of late. I opened a new one, and it said it had version 2.1.15 on it. But I can’t even flash a sketch onto it. It just hangs forever now.

Yeah, this stuff is really temperamental. You’re supposed to load the firmware update code, then unplug, then press the DFU button, then connect to a serial emulator, then transfer the file. I used Tera Term to load the file.

I have a problem that gateway received join request and sent join accept, but on the node, nothing happens.

For OTAA, do you need to supply the App Session Key and Network Session Key? I don’t see them in the TTN Console for the device.

Nevermind, I got it. App EUI and App Key for OTAA.

This can’t possibly work. Where are you passing your AppEUI?

Using latest 2.1.15 firmware (that I knew of from this thread), my sketch is not working anymore. Especially that triggers an error when setting channels:

+MODE: LWOTAA
+DR: EU868
+DR: DR5
+DR: EU868 DR5  SF7  BW125K
+ADR: ON
+CH: 0,868100000,DR0:DR5
+CH: 1,868300000,DR0:DR5
+CH: 2,868500000,DR0:DR5
+CH: 3,867100000,DR0:DR5
+CH: 4,867300000,DR0:DR5
+CH: 5,867500000,DR0:DR5
+CH: 6,867700000,DR0:DR5
+RXWIN1: ERROR(-1)
+RXWIN2: 869500000,DR3
+POWER: 14
>>> SETUP DONE
+JOIN: Start
+JOIN: NORMAL
+JOIN: Join failed
+JOIN: Done
>>> JOIN ERROR
+JOIN: No band in 115215ms

Here is the code I use to connect:

lora.setDeciveMode(LWOTAA);
lora.setDataRate(DR5, EU868);
lora.setAdaptiveDataRate(true);

lora.setChannel(0, 868.1);
lora.setChannel(1, 868.3);
lora.setChannel(2, 868.5);
lora.setChannel(3, 867.1);
lora.setChannel(4, 867.3);
lora.setChannel(5, 867.5);
lora.setChannel(6, 867.7);

lora.setReceiceWindowFirst(1);
lora.setReceiceWindowSecond(869.5, DR3);

Any idea how to fix that?

Thanks for your help.

Hi, I would remove the Adaptive Data Rate line, because we already set a preferred data rate. I would also set the first Receive window with the specific frequency and data rate, like this:

lora.setReceiceWindowFirst(0, 868.1);
The method signature is this:
void LoRaWanClass::setReceiceWindowFirst(unsigned char channel, float frequency)

For me, I have OTAA working, with US frequencies, but a join at the moment takes about 3-4 attempts. ABP is much faster, but it’s discouraged for security concerns and the inability to reassign addresses and network keys and app keys on the fly.

Feel free to reference my work here. I’ve included frequencies and data rates for all countries TTN is available in.


I hope this helps.

Hello all,

For your information, latest firmware version, 2.1.16 dated from 2017-12-03, is available from Seeed github repo

Hello,

I had the same issue on the Seeeduino LoRaWAN board with firmware 2.1.15, OTAA and a raspberry pi gateway.
I solved it by setting the timeout parameter of the setOTAAJoin function:

lora.setOTAAJoin(JOIN,60).

Hope this could help!

In the other hand, I tried to upgrade the firmware to 2.1.16 with minicom (i’m on linux mint 18.3), using ymodem, but every time the board tells me: firmware upgrade failed! I’ve followed the procedure: plug usb then press DFU and wait in minicom for the “CCCC” characters.

Did anyone managed to upgrade to 2.1.16 using minicom?

I have upgraded the firmware with minicom. That part worked for me. But this version seems to have the AU channel plan completely screwed up.

Has anybody got this thing to work on AU915? I have never been able to get this thing to join.

OMFG, I hate this POS board.

I’ve made the mistake of coming back to work on it again, after a many-month layoff, and nothing is working. The boards seem to randomly reset, even a new one out of the box. When I use transferPacket, I get the initial “+MSG: Start”, and nothing else. Until it resets itself. I’ve tried typing in the command by hand, and get the same result. It’s running 2.1.15. I’m running Arduino 1.8.1.

I thought maybe that TTN had changed something, and went to load the latest firmware (2.1.18), but I can’t get the board to go into upgrade mode. I get nada.

To check my sanity, we’re supposed to use:

#include <Arduino.h>

void setup()
{
//Serial1.begin(9600);
SerialDBG.begin(115200);
SerialUSB.begin(115200);
}

void loop()
{
while(SerialDBG.available())
{
SerialUSB.write(SerialDBG.read());
}
while(SerialUSB.available())
{
SerialDBG.write(SerialUSB.read());
}
}

right?

I’ve tried this on three different boards, so it’s not a HW issue…

OK, figured out the Software update problem - We use “putty” at work, and it doesn’t play well with “extraputty”. Argh… there’s five hours of my life I won’t get back…

… But it does look like 2.1.18 fixes whatever the problem was.

1 Like

This timeout parameter works on my Node :slight_smile:

TY jturello

Anyone trying to get these modules working with the AU915 band and OTAA must update to firmware version V2.1.19 (25 May 2018) This can be downloaded from RisingHF’s wiki page once you have a login.

If you don’t upgrade, you will be able to send a join request to a gateway, the gateway will acknowledge with a join accept, but the RHF76-052 will never receive the join accept and fail. ABP will work if you never need to use the downlink.

There was a AU915 downlink issue fixed in V2.1.17 and also a DR6 issue fixed in V2.1.19.

As we use sub-band 2 in Australia, simply delete channels that are not used with AT+CH=‘Channel to Del’, 0.
In most cases this is 0 to 7, 16 to 64, 66 to 71. It should then work first go!

1 Like

Could you post the firmware file somewhere for people without RisingHF wiki login?

Is there a changelog from 2.1.16 to this one?

Thanks!

Hi !

Is it possible to share the firmware release 2.1.19 or later I am stuck with 2.1.15 and having issues in joining to network, Thanks in advance

1 Like

This code I customized and I am sharing works perfectly for me.
I’m using version 2.1.16
I use the default libraries of seeeduino.

#include <TheThingsNetwork.h>
#include <LoRaWan.h>
#include “DHT.h”

#define DHTPIN 8
#define DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

unsigned char data[4];

char buffer[256];

void setup(void)
{
dht.begin();

SerialUSB.begin(115200);
while(!SerialUSB);

lora.init();
memset(buffer, 0, 256);
lora.getVersion(buffer, 256, 1);
SerialUSB.print(buffer); 

memset(buffer, 0, 256);
lora.getId(buffer, 256, 1);
SerialUSB.print(buffer);
lora.setId("XXXXXXXX", "XXXXXXXXXXX","XXXXXXXXXXX" );        
lora.setKey(NULL, NULL, "XXXXXXXXXXXXXXXXXXXXXXXXXXXX");

lora.setDeciveMode(LWOTAA);    

lora.setDataRate(DR5, EU868);

lora.setAdaptiveDataRate(true);    

lora.setChannel(0, 868.1);
lora.setChannel(1, 868.3);
lora.setChannel(2, 868.5);
lora.setChannel(3, 867.1);
lora.setChannel(4, 867.3);
lora.setChannel(5, 867.5);
lora.setChannel(6, 867.7);

lora.setReceiceWindowFirst(1, 868.3);
lora.setReceiceWindowSecond(869.525, DR0);

lora.setPower(14);

while(!lora.setOTAAJoin(JOIN));

}

void loop(void)
{

bool result = false;
delay(2000);
SerialUSB.println("-- LOOP");

uint32_t humidity = dht.readHumidity(false) * 100;

// float t = dht.readTemperature(false);
uint32_t temperature = dht.readTemperature(false) * 100;

byte payload[4];

payload[0] = highByte(temperature);
payload[1] = lowByte(temperature);
payload[2] = highByte(humidity);
payload[3] = lowByte(humidity);

SerialUSB.print("Temperatura: ");
SerialUSB.println(temperature);
SerialUSB.print("Umidade: ");
SerialUSB.println(humidity);

// SerialUSB.print("Temperatura: " + String(temperature));

// SerialUSB.print("Umidade: " + String(humidity));

//byte payload[4];
//data[0] = highByte(t);
//data[0] = lowByte(t);
//data[2] = highByte(h);
// data[1] = lowByte(h);

// data[1] = h;
// data[2] = t;

result = lora.transferPacket(payload, 4, 10);
//result = lora.transferPacket("Marcelo Balisteri!", 10);

if(result)
{
    short length;
    short rssi;
    
    memset(buffer, 0, 256);
    length = lora.receivePacket(buffer, 256, &rssi);
    
    if(length)
    {
        
        SerialUSB.print("Length is: ");
        SerialUSB.println(length);
        SerialUSB.print("RSSI is: ");
        SerialUSB.println(rssi);
        SerialUSB.print("Data is: ");
        for(unsigned char i = 0; i < length; i ++)
        {
            
            SerialUSB.print("0x");
            SerialUSB.print(buffer[i], HEX);
            SerialUSB.print(" ");
        }
        SerialUSB.println();
        
    }
}
delay(5000);

}

This is the TTN decoder Temp and Hum


// Decodificação do payload no tttn

function Decoder(bytes, port) {
var humidity = (bytes[0]<< 8) | bytes[1];
var temperature = (bytes[2] <<8) | bytes[3];

return {
humidity: Umidade,
temperature: Temperatura
}
}

mensagem%20temp%20e%20umidade%20chegando