> For the complete documentation index, see [llms.txt](https://adatrack.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://adatrack.gitbook.io/docs/documentation/iot-ingestion.md).

# IoT Ingestion

This section provides technical details for developers and engineers on how to connect hardware to the AdaTrack platform and process incoming telemetry.

## Transport Options

AdaTrack supports four ingestion transports. All four feed the same decoder, database, geofencing, alerting, and real-time dashboard pipeline.

| Transport        | Best for                                                              | Auth                           | Delivery                             |
| ---------------- | --------------------------------------------------------------------- | ------------------------------ | ------------------------------------ |
| **UDP**          | High-frequency custom sensors                                         | HMAC-SHA256 per packet         | Best-effort                          |
| **MQTT**         | Devices needing reliable delivery or bi-directional commands          | Username/password per session  | QoS 1/2                              |
| **Codec8 TCP**   | Teltonika GPS trackers (FMB920, FMT100, FMB140, …)                    | IMEI handshake per connection  | Per-frame ACK                        |
| **Queclink TCP** | Queclink GPS trackers (GV58CEU(CG), other `@Track`-compatible models) | IMEI embedded in every message | Per-frame, buffered resend supported |

## Documentation

* [**UDP Protocol**](/docs/documentation/iot-ingestion/udp-protocol.md)**:** Low-level packet format, HMAC authentication, and ingestion pipeline internals.
* [**Custom Decoders**](/docs/documentation/iot-ingestion/decoders.md)**:** Write JavaScript decoder scripts to parse binary payloads into structured telemetry.
* [**HMAC Authentication**](/docs/documentation/iot-ingestion/hmac.md)**:** Secure UDP telemetry using cryptographic signatures.
* [**MQTT Protocol**](/docs/documentation/iot-ingestion/mqtt.md)**:** Connect devices over MQTT with bi-directional messaging and no external broker required.
* [**Codec8 (Teltonika TCP)**](/docs/documentation/iot-ingestion/codec8.md)**:** Ingest telemetry from Teltonika GPS trackers using the native Codec8 TCP protocol — no firmware changes required.
* [**Queclink (@Track TCP)**](/docs/documentation/iot-ingestion/queclink.md)**:** Ingest telemetry from Queclink GPS trackers using the native `@Track Air Interface Protocol` — no firmware changes required.
* [**Firmware & Client Examples**](https://github.com/AdaTrack/adatrack_platform/tree/main/docs/gitbook/documentation/iot-ingestion/firmware/README.md)**:** Complete, signed UDP clients for Python, Node.js, Go, Arduino/ESP32, ESP-IDF, Pico W and STM32 (Ethernet and SIM7600), plus a troubleshooting guide.
