DEV Community

Cover image for Teltonika-Go Update: From Initial Release to Full Codec Support
Daniel Sá
Daniel Sá

Posted on

Teltonika-Go Update: From Initial Release to Full Codec Support

A few months ago, I published my first article introducing Teltonika-Go:

Introducing Teltonika-Go: A Go Package for Parsing and Communicating with Teltonika Devices

At the time, the goal was simple:

Build an open-source Go library to simplify communication with Teltonika GPS tracking devices.

The project started as a side project inspired by my experience working in vehicle tracking and telemetry systems. I wanted a reusable package that developers could easily integrate into their own fleet management, IoT, and GPS tracking platforms.

Since then, the project has grown significantly.

What Has Changed?

The initial version focused primarily on AVL packet parsing and the most commonly used codecs.

Today, Teltonika-Go supports:

AVL Data Codecs

  • Codec 08
  • Codec 8E
  • Codec 16

Command & Response Codecs

  • Codec 12
  • Codec 13
  • Codec 14
  • Codec 15

Additional Features

  • AVL packet decoding
  • AVL packet encoding
  • Command packet encoding
  • Command response decoding
  • TCP support
  • UDP support
  • IMEI handling
  • CRC validation
  • Timestamp utilities
  • Extensive unit testing

Repository:

https://github.com/danieljvsa/teltonika-go

One of the biggest milestones was expanding support beyond AVL data packets and implementing command-related codecs.

This transformed the library from a parser into a more complete communication toolkit for Teltonika devices.

Why This Matters

Many GPS tracking systems eventually need more than just location data.

Real-world deployments often require:

  • Sending commands to devices
  • Receiving command responses
  • Managing remote configurations
  • Supporting multiple Teltonika device generations
  • Handling both TCP and UDP communication

Supporting these additional codecs makes it easier to build complete integrations without having to implement protocol handling from scratch.

Lessons Learned

Protocol Specifications Matter

The most challenging aspect of the project was never the Go code itself.

The difficult part was ensuring protocol correctness.

When working with binary protocols, small mistakes can break communication completely.

Issues such as:

  • Incorrect packet lengths
  • CRC calculation errors
  • Wrong byte ordering
  • Timestamp conversion mistakes

can result in devices rejecting packets without providing much information about what went wrong.

Most development time was spent validating behavior against protocol documentation and testing edge cases.

Testing Became Essential

As support for more codecs was added, the importance of testing increased dramatically.

Adding new functionality without introducing regressions became a priority.

Today, the project includes a growing suite of tests that helps ensure stability when adding features or improving existing implementations.

Open Source Is About Iteration

One thing I enjoy about open source is that projects rarely remain in their original form.

The first release is simply the starting point.

Since publishing the original article, I've received feedback, discovered new use cases, and identified areas where the library could be improved.

Each iteration has made the project more complete and more useful.

Building with Modern AI Tools

This project was also an interesting opportunity to explore modern AI-assisted development.

I used tools such as:

  • Claude
  • OpenCode
  • DeepSeek
  • Qwen

to accelerate development tasks including:

  • Boilerplate generation
  • Test creation
  • Documentation improvements
  • Code reviews
  • Refactoring suggestions

The biggest lesson was that AI works best as an accelerator rather than a replacement for domain knowledge.

Understanding GPS tracking systems, binary protocols, and Teltonika specifications remained essential for validating the generated code and ensuring correct behavior.

What's Next?

There are still several improvements planned for future releases.

Some areas I'd like to focus on include:

  • More real-world examples
  • Complete TCP server examples
  • Improved documentation
  • Better pkg.go.dev support
  • Additional protocol utilities

The goal remains the same as when the project started:

Make Teltonika device integration easier for Go developers.

Final Thoughts

Looking back at the original article and comparing it with the current state of the project, it's satisfying to see how much it has evolved.

What started as a simple parser has grown into a much more complete Teltonika communication library supporting multiple codecs, command handling, and packet generation.

If you're working with Teltonika devices, GPS tracking systems, or telemetry platforms, I'd love to hear your feedback.

Feel free to check out the repository, open an issue, or contribute to the project.

Happy coding 🚀

Repository:

https://github.com/danieljvsa/teltonika-go

Top comments (0)