Hi. How can I transfer devices from IOT Vega Server to ChirpStack with session keys so as not to re-register devices
The latest ChirpStack Application Server test-version allows you to activate an OTAA device like you would activate an ABP device. This allows you to import an OTAA device and then call the activation endpoint in the API to set the session-keys (and frame-counters).
I sent data to /api/devices/323535326f385f0b/activate
Received response code 200
I see Device address, Network session key (LoRaWAN 1.0), Application session key (LoRaWAN 1.0), Uplink frame-counter and Downlink frame-counter (network) on tab Activation
But there are no packages from the device
chirpstack-network-server:3.10.0-test.2
chirpstack-application-server:3.11.0-test.2
chirpstack-gateway-bridge:3.9.0-test.1
I managed to transfer the device from one chirpstack server to another chirpstack server . But the downlink does not work.
I get the following errors when confirming
“type”: “UPLINK_FCNT_RETRANSMISSION”,
“error”: “frame-counter did not increment”,
and the following error when sending data
“type”: “DOWNLINK_GATEWAY”,
“error”: “TX_FREQ”,
TX freq are set equal on both servers
chirpstack-network-server:3.10.0-test.2
chirpstack-application-server:3.11.0-test.2
chirpstack-gateway-bridge:3.9.0
I sent the session data to the /api/devices/devEUI/activate and can see the incoming uplinks from the device. However, every uplink seems to be followed by downlink (with fport = null) for this device although none are scheduled.
Is there a way to prevent this?
The Downlink itself is below. From what i can tell This is chirpstack trying to reconfigure the RXTimingSetupReq? I am Still not sure why it sends after every uplink.
{ "downlinkMetaData": { "gatewayID": "c0ee40ffff29693c", "txInfo": { "frequency": 927500000, "power": 20, "modulation": "LORA", "loRaModulationInfo": { "bandwidth": 500, "spreadingFactor": 9, "codeRate": "4/5", "polarizationInversion": true }, "board": 0, "antenna": 0, "timing": "DELAY", "delayTimingInfo": { "delay": "1s" }, "context": "DYLazA==" } }, "phyPayload": { "mhdr": { "mType": "UnconfirmedDataDown", "major": "LoRaWANR1" }, "macPayload": { "fhdr": { "devAddr": "2602259b", "fCtrl": { "adr": true, "adrAckReq": false, "ack": false, "fPending": false, "classB": false }, "fCnt": 1, "fOpts": [ { "cid": "RXParamSetupReq", "payload": { "frequency": 923300000, "dlSettings": "08" } }, { "cid": "RXTimingSetupReq", "payload": { "delay": 1 } } ] }, "fPort": null, "frmPayload": null }, "mic": "cf7c3156" } }
That is probably because it expects an acknowledgement from your device.
I do not have access to these device firmwares. Is there a way to configure Chirpstack to utilize the existing RXTiming so that the downlinks are not sent every uplink?
Is there a way to configure Chirpstack to utilize the existing RXTiming so that the downlinks are not sent every uplink?
Do you mean that your device does not receive the downlink as ChirpStack uses the wrong RX1 delay? Or does your device do not support mac-commands to change this value?
When activating the device as ABP, you can provide the RX delay value, but ChirpStack will then send a mac-command to sync the settings through mac-commands.