I would like to clarify a LoRaWAN activation behavior when using ChirpStack v4 with a Milesight gateway and a vendor-preactivated device.
Environment
Network Server: ChirpStack v4
Gateway: Milesight
Gateway integration tested:
ChirpStack v4 mode (MQTT)
Semtech UDP packet forwarder (via ChirpStack Gateway Bridge)
Region: EU868
MQTT broker and gateway connectivity are fully operational
Observed behavior
In all configurations (MQTT and UDP), both the gateway and the device are permanently shown as “Never seen” in the ChirpStack UI.
This happens even though:
The gateway is connected and visible
The device is configured correctly
RF traffic is present on the air
Transport method (MQTT vs UDP) makes no difference
Device behavior
The device is labeled by the vendor as OTAA
DevAddr, AppSKey and NwkSKey are provided by the manufacturer
The device does not send JoinRequest
There is no physical or software method to trigger a rejoin
(no button, no battery reset, no downlink-triggered rejoin)
The device was previously working with Milesight Embedded Network Server, which accepts an existing session (DevAddr + AppSKey + NwkSKey) without requiring a JoinRequest.
Root cause (as understood)
ChirpStack marks a gateway or device as “seen” only after a valid LoRaWAN uplink is successfully processed, which requires:
A valid session context
Successful MIC verification
Correct frame counter handling
Since the device cannot perform an OTAA join and the existing session was created outside ChirpStack:
ChirpStack cannot establish a session
All uplinks are dropped
Both gateway and device remain “Never seen”
This behavior is consistent and expected given ChirpStack’s strict LoRaWAN compliance.
Questions
Is the only supported way to integrate such a device with ChirpStack to use ABP mode?
Is there any supported mechanism in ChirpStack to import or continue an existing OTAA session created outside the Network Server?
(I assume the answer is no, due to LoRaWAN specification constraints.)
Is there any recommended approach for migrating vendor-preactivated devices that cannot rejoin?
I want to confirm that this behavior is expected and that ChirpStack intentionally does not support “pre-activated OTAA” devices without JoinRequest, even if the vendor labels them as OTAA.
Thanks in advance for confirmation and guidance.