Application payload fragmentation

Hi all,
I’m working on some ESP32 based sensor node using ttn-esp32 library.
I would like to use google protocol buffers for manage many time related sensor data.
Now I would like to send more than 51bytes by lorawan (and chirpstack suite).
I read about LoRaWAN Fragmented Data Block Transport specification and a @brocaar implementation (
Can you help me managing segmenting payload data through chirpstack architecture?
Thank you

The ChirpStack Application Server doesn’t handle the fragmentation for you (currently). This means that the same payload you enqueued, is transmitted to the device (given it fits within the max payload size). What you need to do is implement the payload fragmentation in your own application, and then enqueue these fragments as it were normal payloads :slight_smile:

I need to send a large payload from nodes to application server so on app side I have to recognize that payload have to be de-fragmented and activate the routine, it isn’t? I read that default port value for fragmentation is 201, have I to use it to understand when activate de-fragmentation routine?
Thank you for your work and your support!!

You can use any port you like. For the ChirpStack Application Server these payloads will be just regular payloads. What matters is that your application knows how to deal with this data :slight_smile:

Hello, I try to send a data(15 bytes) across two different ports with LMIC library in Arduino uno, I created two different byte arrays named payloadT[13] and payload [2] to send the data
LMIC_setTxData2(1, payloadT, sizeof(payloadT), 0);
LMIC_setTxData2(2, payload, sizeof(payload), 0);
The previous code doesn’t work, but if I load all data on only one payload, without this line LMIC_setTxData2(2, payload, sizeof(payload), 0);(payloadT[15] por example), I recieve all data that i need. On the first case, i receive the data only of port 1. The reason that I want to do a fragmentation on my data is to send the temperature data on port 1 the GPS data on port 2 …

A fragment of my decode function on chirpstack is:
** tempObj.altitud=Number(©.toFixed(2));**
** tempObj.presion=Number((D).toFixed(2));**
** tempObj.latitud=Number((E).toFixed(6));**
** tempObj.longitud=Number((F).toFixed(6));**
** tempObj2.LedYellow=Number((G).toFixed(2));**
** tempObj2.LedGreen=Number((H).toFixed(2));**
** if(port == 1){**
** return tempObj;**
** }else{**
** return tempObj2;**
** }**

Thanks in advance