Where do I set the AppEUI?

Well I think that when you are going to use a join-server in the future, you need to re-provision all your devices.

E.g. when using an external join-server, this join-server will be identified by a JoinEUI. So in order to let this join-server handle the join-request, you must set this JoinEUI of this join-server in your device.

So how this meganism will work in the future:

  • Device sends join-request (containing DevEUI, JoinEUI, …)
  • Network-server receives this (through the connected gateways), sees the DevEUI and knows this devices is provisioned
  • In order to activate this device (over which the network-server has no knowledge as it does not have its root-keys), it will lookup the host of the join-server, using the JoinEUI (the Alliance defined a DNS meganism for this, e.g. JoinEUI.domain.tld
  • Then it will forward the join-request to this resolved host to retrieve the join-accept (+ encrypted session keys)
  • Once activated, it will forward the data to the already configured application-server (through the routing-profile, this is already provisioned by LoRa App Server).

For sake of simplicity, I skipped a few steps in the above example, but this is roughly how an activation through a join-server works, using the JoinEUI (previously known as AppEUI).

As you also see, the JoinEUI sent by the device defines the above path, and having this information at the application-server would not change anything. E.g. it is perfectly fine to change the JoinEUI within your device when migrating to a different join-server, without the application-server knowing this (there are some practical issues with the encryption of the session-keys), but for the join-request using a join-server meganism, it it is not relevant for the application-server to know the JoinEUI (I believe).

Hello, brocaar!
I did not learn the new specification yet, but I see it introduces some new features, like a Join-Server and gives a new name for AppEUI - JoinEUI. Also, it tells that the JoinEUI must be programmed in each device that uses the JOIN procedure. Since updating to release version I did not found this field in App Server, but as you commented above it is not a problem. As I understood, since the DeviceEUI is unique and separate JOIN-server is not used, there no way to add the same device to more than one application in the same App Server. So the server “knows” which application the node relates to, and JoinEUI is not used at all, at it is required only if the Join-Server is used, isn’t it?

Thanks in advance! :grinning:

Yes, that is correct. Only the device needs to know the JoinEUI :slight_smile:

You mean, the device needs to know the JoinEUI - just once during Join-procedure, because it does not know if the Join-server is used or not, therefore it have to send correct JoinEUI, is it right?
Probably, I understand. I made a simple test. I created a new application, new device and service profiles, reprogrammed the end-node with new DevEUI and set AppEUI to all zeros. My Application ID in the App Server is 6 (it does not match to JoinEUI). And it does not matter, do the App ID match to my JoinEUI or not, the server allows the device to join and shows me all the packets the device sends :slight_smile:

But sometimes I see the error message in the logs during the join-procedure:
processing rx packet error: get device error: object does not exist
Is it normal?
It appears once or twice, but then the server allows the device to join and send Join-accept, and the device begins normal data exchange without errors and packet losing. I think it is not radio-path issue.

Offtop: By the way, it is very very convenient to use the packet logs (decoded) in the App Server UI! Good feature, thanks!

Hi @brocaar
I’m trying connect my first node (mdot), my gwy (multitech conduit) is already connected to my loraserver, I’m trying to connect the mdto using this guide: https://www.loraserver.io/lora-app-server/use/devices/ but I’m a bit confuse about the APPEUI/JOINEUI, I don’t know what I have to set in that line, also I tried to read the lora alliance backend interface but the document doesn’t exist now.
If you can explain what I should configure there, or tell me where I can find more information about it, I would appreciate it.

As long as you are not using an external Join Server (which is the default), you can leave this blank / 0000000000000000 on your device. The purpose of the JoinEUI is to resolve (through DNS) which Join Server holds the root-keys and should process the Join Request.