3

On Page 9 in the LoRaWAN 1.1. specification it says:

The over-the-air octet order for all multi-octet fields is little endian.

EUI are 8 bytes multi-octet fields and are transmitted as little endian.

How are multi-octet fields defined in the standard?

Are these fields seen on the highest level of detail on page 16 (e.g. for payload-messages: MHDR, DevAddr, FCtrl, FCnt, FOpts, FPort, FRMPayload, MIC)?

And what is meant by "over-the-air"?

On page 26 the MIC calculation is described as calculating the CMAC of the message and some extra information and then only taking the first four bytes of it. Does this mean, the CMAC is seen as big endian first, then the MSB are "turned around" or is it more like the CMAC is already interpreted as little endian and the LSB is inserted and sent without changing it?

1

I had a look into the source code of some projects and it looks like all multi-octet-fields that are encrypted are left Big Endian. The rest is little Endian and is even used as Little Endian during the calculation of e.g. the MIC or as a nonce in encryption. During MIC calculation, the internal 4 Byte counter is used as the FCnt value but still as little endian.

I made a table for this: table of LoRaWAN 1.1 Byte-order for fields in Data Up messages

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.