Adding Decoders in ChirpStack: Step by Step
A ChirpStack codec belongs on the device profile for one model. Clone it only onto the same hardware.
A ChirpStack codec fails in predictable ways. Most of them are profile mistakes, not dead radios.
One profile per model
Create the device profile, set the regional parameters, enable OTAA, and attach the codec from the shipment. The public decoder library lists named fields for four models. Byte offsets in the shipped file win if the example JSON differs.
Clone carefully
Clone that profile onto the next rope node. Do not clone it onto a level node. The ChirpStack integration page separates join failures from codec errors. The TTN integration page is the same contract on a different server.
Read the frame counter
Counter stuck: silent node or a session that never rejoined. Counter moving and fields empty: codec. Counter moving and fields present: your MQTT or database.
EU868 and US915 must match the hardware. A 100-unit trial is enough to prove one profile before you replicate it. The 2.5 million unit history does not debug a formatter.