Closed proffalken closed 5 years ago
If you you're willing to create a pull-request with LMIC specific documentation, that would be great! Please note that what you need for OTAA:
(LMIC --> LoRa App Server)
OK, thanks,
So at the moment, I have the following in the console:
DevEUI
: 00415ee3b9a02d4a
Network Key
(made up by me!): 06647d9527683ccfa457c70ab27b4606
Application Key
: ALL ZEROS
In the code, I have the following:
// This EUI must be in little-endian format, so least-significant-byte
// first. When copying an EUI from ttnctl output, this means to reverse
// the bytes. For TTN issued EUIs the last bytes should be 0xD5, 0xB3,
// 0x70.
static const u1_t PROGMEM APPEUI[8];
void os_getArtEui (u1_t* buf) { memcpy_P(buf, APPEUI, 8);}
// This should also be in little endian format, see above.
static const u1_t PROGMEM DEVEUI[8]={ 0x4A, 0x2D, 0xA0, 0xB9, 0xE3, 0x5E, 0x41, 0x00 }; // 00415EE3B9A02D4A
void os_getDevEui (u1_t* buf) { memcpy_P(buf, DEVEUI, 8);}
// This key should be in big endian format (or, since it is not really a
// number but a block of memory, endianness does not really apply). In
// practice, a key taken from ttnctl can be copied as-is.
// The key shown here is the semtech default key.
static const u1_t PROGMEM APPKEY[16] = { 0x06, 0x46, 0x7B, 0xB2, 0x0A, 0xC7, 0x57, 0xA4, 0xCF, 0x3C, 0x68, 0x27, 0x95, 0x7D, 0x64, 0x06 };
void os_getDevKey (u1_t* buf) { memcpy_P(buf, APPKEY, 16);}
The serial port shows the "JOIN" message being sent, but the join does not take place.
I'm sure I'm missing something obvious here, but I can't work out what it is!
@brocaar I'm now wondering whether this is due to the "endian-ness" of the hex that I'm putting in to the LoraServer console.
In the TTN console, there is the option to select the code as straight hex, or as an array that is either LSB or MSB first.
It is this LSB array that I should be using with the LMIC code, but I can't work out whether I need to perform this same transformation on the hex string from LoraServer that I need to for TTN.
All values in the LoRa App Server interface are presented big endian.
The AppEUI can be set to any value you like. This is only going to matter when you're using an external join-server to activate the OTAA request.
DevEUI "0102030405060708" means you need to use 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01
as the above comment mentions LMIC expects this value as little endian.
AppKey must be used in the original byte order, as the above comment mentions LMIC expects this value as big endian.
There is an open issue to improve this input in LoRa App Server, if you would like to contribute on this.... :-) https://github.com/brocaar/lora-app-server/issues/74
I've kept the above values, and made sure that the "endian-ness" is right:
static const u1_t PROGMEM APPEUI[8]= { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
static const u1_t PROGMEM DEVEUI[8]={ 0x4A, 0x2D, 0xA0, 0xB9, 0xE3, 0x5E, 0x41, 0x00 };
static const u1_t PROGMEM APPKEY[16] = { 0x06, 0x64, 0x7d, 0x95, 0x27, 0x68, 0x3c, 0xcf, 0xa4, 0x57, 0xc7, 0x0a, 0xb2, 0x7b, 0x46, 0x06 };
I can see the join request on the gateway:
Message Type = Join Request
AppEUI = 0000000000000000
DevEUI = 00415EE3B9A02D4A
DevNonce = F07B
MIC = AE6A616A
and the gateway is clearly sending packets to LoraServer because I can see it in the Lora Server Console.
I do see a "join accept" packet sent back, but the device doesn't appear to acknowledge it:
Message Type = Join Accept
AppNonce = 180846
NetID = D73F5E
DevAddr = E88BBA7D
MIC = 06C3747C
I'm now wondering if I've mis-configured the device profile somewhere.
(Note: I'm not worried about these keys etc. being posted here as this is a test app/server setup, so they won't be the final values at all!)
@brocaar looks like the issue isn't with the LMIC library, but with my setup somewhere:
Aug 22 19:32:21 mbc-loranode1 loraserver[4761]: time="2018-08-22T19:32:21Z" level=info msg="backend/gateway: rx packet received"
Aug 22 19:32:21 mbc-loranode1 loraserver[4761]: time="2018-08-22T19:32:21Z" level=info msg="packet(s) collected" dev_eui=00415ee3b9a02d4a gw_count=1 gw_macs=<GWMAC> mtype=JoinRequest
Aug 22 19:32:21 mbc-loranode1 lora-app-server[4747]: time="2018-08-22T19:32:21Z" level=info msg="js: request received" message_type=JoinReq receiver_id=0000000000000000 sender_id=010203 transaction_id=3455401306
Aug 22 19:32:21 mbc-loranode1 lora-app-server[4747]: time="2018-08-22T19:32:21Z" level=info msg="device-keys updated" dev_eui=00415ee3b9a02d4a
Aug 22 19:32:21 mbc-loranode1 lora-app-server[4747]: time="2018-08-22T19:32:21Z" level=info msg="js: sending response" message_type=JoinAns receiver_id=010203 result_code=Success sender_id=0000000000000000 transaction_id=3455401306
Aug 22 19:32:21 mbc-loranode1 loraserver[4761]: time="2018-08-22T19:32:21Z" level=info msg="device-queue flushed" dev_eui=00415ee3b9a02d4a
Aug 22 19:32:21 mbc-loranode1 loraserver[4761]: time="2018-08-22T19:32:21Z" level=info msg="device-session saved" dev_addr=07ab7b1f dev_eui=00415ee3b9a02d4a
Aug 22 19:32:21 mbc-loranode1 loraserver[4761]: time="2018-08-22T19:32:21Z" level=info msg="device-activation created" dev_eui=00415ee3b9a02d4a id=16
Aug 22 19:32:21 mbc-loranode1 loraserver[4761]: time="2018-08-22T19:32:21Z" level=info msg="backend/gateway: publishing tx packet" qos=0 topic=gateway/<MAC>
I can see the LoraFrames coming in to the UI, as request/accept JOIN, I just don't see the device ever connect.
I'll close this issue and move it to the forums, once I've got LoraServer connecting properly I'll revisit this and update the docs.
Is this a bug or a feature request?
Bug in Documentation
What did you expect?
Advice to how fields in the "device configuration" screen map to the Arduino LMIC settings of APPKEY, DEVEUI, and APPEUI
What happened?
When creating a new device using OTAA, the following fields are available from the console of the app-server:
The
DEVEUI
field is available from the devices overview list on the application screen.It would be good if there was documentation on how the
Network Key
andApplication Key
map toAPPKEY
andAPPEUI
, especially asApplication Key
is listed asoptional for Lora 1.0 devices
What version are your using?
2.0.2
How can your issue be reproduced?
Create a new device in the console
NOTE: I'm happy to write the docs, I'm just not sure what the mapping should be for this sample code: