Knowledge Base
HOME » KNOWLEDGE BASE » FORUM

Custom board doesnt seem to receive (or even send)

Hi,

I'm writing firmware to a custom board that uses SX1262 as the radio chip and EFM32LG842F128G as the MCU.
I use LoRaMac-node-4.4.3 as base for the stack (rewrote the *-board.c/h files to work against my custom board, the high level stuff didn't require any modifications).

My problem is that when I run the class A app (after modifying it to work on my board) I don't seem to get any response from my gateway.

For reference implementation I have a RAK811 board as an endpoint and a RAK831 connected to a raspberry pie 4B as a gateway.
They work perfectly fine together (and with a Chirpstack backend based system).

All parts are configured to US915 region.

Here is the output I get when I try to connected to the gateway using my custom board (I added printf() in the beginning of every function in radio.c for debugging):

RadioInit()
RadioRandom()
RadioSetModem(1)
RadioSleep()
RadioSetPublicNetwork(1)
RadioSetModem(1)
RadioSleep()
###### ===== ClassA demo application v1.0.0 ==== ######

RadioSetPublicNetwork(0)
RadioSetModem(1)
DevEui : 8E-58-93-A0-77-43-12-C3
AppEui : 0D-CA-63-2F-FF-E0-24-C1
AppKey : 48 44 91 5B 2A 69 BA 00 20 7E DC 06 E5 70 75 67

RadioGetWakeupTime()
RadioGetWakeupTime()
RadioRandom()
RadioSetModem(1)
RadioSleep()
RadioSetModem(902500000)
RadioSetTxConfig(1, 30, 0, 0, 10, 1, 8, 0, 1, 0, 0, 0, 4000)
RadioStandby()
RadioSetModem(1)
RadioSetMaxPayloadLength(1, 23)
RadioTimeOnAir(1, 23)
RadioSend(23)
00 C1 24 E0 FF 2F 63 CA 0D C3 12 43 77 A0 93 58 8E 00 00 E3 C5 07 AD

###### ===== MLME-Request - MLME_JOIN ==== ######
STATUS : OK
###### ===== JOINING ==== ######
RadioEvents->TxDone()
RadioSleep()
RadioStandby()
RadioSetModem(923900000)
RadioSetRxConfig(1, 2, 10, 1, 0, 8, 24, 0, 0, 0, 0, 0, 1, 0)
RadioSetModem(1)
RadioSetMaxPayloadLength(1, 255)
RadioRx(3000)
RadioEvents->RxTimeout()
RadioSleep()
RadioStandby()
RadioSetModem(923300000)
RadioSetRxConfig(1, 2, 12, 1, 0, 8, 9, 0, 0, 0, 0, 0, 1, 0)
RadioSetModem(1)
RadioSetMaxPayloadLength(1, 66)
RadioRx(3000)
RadioEvents->RxTimeout()
RadioSleep()

###### ===== MLME-Confirm ==== ######
STATUS : Rx 2 timeout

###### ===== MLME-Request - MLME_JOIN ==== ######
STATUS : Duty-cycle restricted

What can cause it to be successful in TX but timeout in RX ?

PS: on the chirpstack gateway side the packet forwarder (lora_pkt_fwd) doesnt even mention seeing packets when the custom board transmits.

PS2: the log repeats itself over and over with
"STATUS : Rx 1 timeout"
from time to time
Avatar
Hi,

Could you please monitor the power consumption to verify that the packet is actually transmitted ? It can also be done with an SDR dongle
I have 2 similar custom boards that manage to transmit to each other.
Test 1:
Board 1 has the apps/rx-sensi on it, the other has the apps/tx-cw on it... it works.
Test2:
When I switch roles and install tx on board 1 and rx on the other board it also works.
Test3:
Use Radio.Send() to send data from board 1 to board 2 .. works
Test4:
Switch roles and send buffer from board 2 to board 1 .. also works.
Test5:
apps/ping-pong on both boards .. works.
Test6:
apps/LoRaMac/classA on boards 1 (or board 2) .. doesnt work.
Manages to Tx and then gets Rx 2 Timeout/Rx 1 Timeout.
Cycles like this forever ..

A RAK811 manages to communicate with the gateway with no problem (US915).

What can cause this behavior ? manages to TX, but gets no replies ?

Avatar
Hello,

Can you tell what works and what doesn't work?

- is the Join Request seen by the gateway?
- is the join request processed by the server?
- Is the Join Answer sent to the gateway?
- Is the gateway servicing this Downlink request?

Rgds