Class B Downlinks not scheduled for right time in chirpstack

Viewed 66

Hi Everyone, @brocaar I have been trying to work with lorawan network for class B, So basically when i am scheduling downlink for class B using chirpstack so it is sent to the gateway with tmms (consider 1447146208.530) and packet forwarder calculates concentrator_time(consider 788596175) as per this tmms value and consider it to transmit at that concentrator time but calculated concentrator_time for transmission is around 0.2 ms to 0.9ms / 1sec behind the current concentrator time(consider 78950066) as i tried printing these in packet forwarder.
So can you pls help me in figuring out the solution for this?
Hoping best for the response.

Thanks

2 Answers

Hi @brocaar thanks for replying.
I am using waveshare sx1302 lorawan gateway hat connected to raspberry pi 3 model b https://www.waveshare.com/wiki/SX1302_LoRaWAN_Gateway_HAT and semtech packet forwarder from this repo https://github.com/Lora-net/sx1302_hal
And for class B i am getting GPS fix and able to send beacons from gateway after that only facing issues in sending class b downlinks.
Basically flow is like
End Device sends join request
Chirpstack Network server(version 3.16.8) sends join accept after that gateway sends beacon and end device receives beacon and replies with PingSlotInfoReq to NS with Periodicity 5 and class B bit set to 1.
and when i schedule downlinks from chirpstack , scenario is explained in the previous message.
JSON up: {"stat":{"time":"2025-11-17 10:31:10 GMT","lati":30.32194,"long":78.07010,"alti":664,"rxnb":0,"rxok":0,"rxfw":0,"ackr":100.0,"dwnb":0,"txnb":0,"temp":37.7}}
WARNING: [gps] GPS out of sync, keeping previous time reference

JSON down: {"txpk":{"imme":false,"rfch":0,"powe":14,"ant":0,"brd":0,"tmms":1447410710310,"freq":869.525,"modu":"LORA","datr":"SF12BW125","codr":"4/5","ipol":true,"size":18,"data":"oAu/8QCADwAHwWG5lbpZuSsv"}}
Current concentrator time : 1040633281
INFO: [down] a packet will be sent on timestamp value 1039438237 (calculated from GPS time)
Current concentrator time : 1040633582

2025-11-17 10:31:40 GMT

[UPSTREAM]

RF packets received by concentrator: 0

CRC_OK: 0.00%, CRC_FAIL: 0.00%, NO_CRC: 0.00%

RF packets forwarded: 0 (0 bytes)

PUSH_DATA datagrams sent: 1 (168 bytes)

PUSH_DATA acknowledged: 100.00%

[DOWNSTREAM]

PULL_DATA sent: 3 (100.00% acknowledged)

PULL_RESP(onse) datagrams received: 1 (200 bytes)

RF packets sent to concentrator: 0 (18 bytes)

TX errors: 0

TX rejected (collision packet): 0.00% (req:20, rej:0)

TX rejected (collision beacon): 15.00% (req:20, rej:3)

TX rejected (too late): 0.00% (req:20, rej:0)

TX rejected (too early): 0.00% (req:20, rej:0)

SX1302 Status

SX1302 counter (INST): 1050543548

SX1302 counter (PPS): 1050438226

BEACON queued: 24

BEACON sent so far: 5

BEACON rejected: 0

[JIT]

#--------

[GPS]

Valid time reference (age: 1 sec)

GPS coordinates: latitude 30.32216, longitude 78.07000, altitude 662 m

Concentrator temperature: 38 C

These are the logs from semtech packet forwarder for your reference, here Json down is the class B downlink.

Thanks

Please use the Add comment next time, as the Post your answer for answering your original question, not for providing more context.

To hopefully answer your question:

The Waveshare concentrator module does not have a uBlox GNSS module, it has a Qualtec GNSS module. The Semtech HAL expects a uBlox module, as it uses a proprietary / binary payload for time synchronization. This might be the cause of your issue.

The warning in your logs might be related to this:

WARNING: [gps] GPS out of sync, keeping previous time reference