Assistant Telematics: AVT20

Tjeerd13 21 days ago

Hi,

I’m testing an Assistant Telematics AVT20 (And AVT40) device which communicates using the hyn600 protocol on port 5258.

The device connects successfully and is shown in the Traccar portal, but I’m facing multiple issues:

  1. Traccar frequently disconnects the device with:
    Adjusted frame length exceeds 1024: 13359 - TooLongFrameException

According to the protocol documentation, the AVT20 can send large data frames
(e.g. buffered / historical or extended data messages).

  1. Some decoded messages contain an invalid device time, for example:
    0850-05-06 14:29:36

This results in database errors when storing positions.

  1. The device identifier (IMEI) is decoded incorrectly.
    In the Traccar portal the device is shown with ID:
    60a4c0816342802

However, the actual IMEI of the device should be:
861076082252402

Despite these issues, Traccar sometimes decodes valid positions correctly.

Examples of raw messages received:

Login / short status message:
2d5250543a0022560a4c081634280222030201000000000007ea041e0b0822019e23

Large data message (causes TooLongFrameException):
2b5250543a0068560a4c081634280222030201000000011e0300000001ff01030100000000003c0329f6ec00644e9b07ea05060e29290d11000700cc000881500006e10d18000004a504d02200000000000000000000000000000000000007ea05060e2929046423

ACK / ASCII-type message:
2b41434b3a0026560a4c081634280222303330322c5349532c2c302c07ea041e0b0d3b01ab23

Questions:

  • Does Traccar support hyn600 messages larger than 1024 bytes, or should the frame decoder be adjusted?
  • Is the hyn600 IMEI decoding implemented correctly for AVT20 devices, or is a different field/format expected?
  • Has anyone successfully integrated the Assistant Telematics AVT20 with Traccar?

Thanks in advance.

If needed i can't send the protocol documentation of the AVT20 and AVT50.,

Anton Tananaev 21 days ago

Does your device actually send messages longer than 1024 bytes? To me it seems like maybe some messages are simply not supported correctly.

Tjeerd13 21 days ago

“Confirmed by logs: all received hyn600 packets are well below 1024 bytes; the reported size of 13359 is a result of incorrect frame length decoding, not actual large messages.
The incorrect IMEI appears to be caused by misaligned field decoding (BCD vs ASCII / offset), likely related to the same issue.”

Anton Tananaev 21 days ago

Do you have documentation and full logs?

Tjeerd13 21 days ago

The protocol PDF of the AVT20 https://drive.google.com/file/d/1LciUO7XxdgsLTpM6K6jH1osh1CgBFmGo/view?usp=sharing
The protocol PDF of the AVT50 https://drive.google.com/file/d/163TxbTvGVAmGn5gO9eKCiaTmOpi2J658/view?usp=sharing
Log file: https://drive.google.com/file/d/1p5fFo5SaF2ifZ_2ohrfkZa8gJXYl4bdd/view?usp=sharing
I'm not sure if the log data is OK. I did some change of settings in the tracker with and withoud ACK. If needed i can create later a cleaner log file.

Anton Tananaev 21 days ago

Can you please separate log sessions by device protocol type.

Tjeerd13 21 days ago

In this log is only the AVT20.

Anton Tananaev 21 days ago
Tjeerd13 20 days ago

Looks good, have not yet a correct route, now checking devices settings.

Tjeerd13 19 days ago

AVT20 packets are decoded correctly and GPS fix is present.
Only when driving (it looks like multiple locations in one package) Traccar throws an error and drops the position.
See log example below:

2026-05-08 10:09:29  INFO: [T032d8371: hyn600 < 90.134.42.147] 2b5250543a00b9560a4c081634280222030201000000011e0310666401ff04130100030015002d0329db4200645a5207ea05080a08000d1108091301000b008b002d0329db2800645a5c07ea05080a08010d1108091301001900a500330329d8d300645d5607ea05080a08110d1108090301001c00a700340329d88400645d7207ea05080a08120d11080900cc000881500006e1200f000004a505cc2200000000000000000000000000000000000007ea05080a0813076623
2026-05-08 10:09:32  WARN: Failed to store position - Data truncation: Incorrect datetime value: '0165-01-20 03:44:36' for column `admin_traccar`.`tc_positions`.`devicetime` at row 1 - MysqlDataTruncation (... < QueryBuilder:336 < DatabaseStorage:106 < DatabaseHandler:44 < BasePositionHandler:34 < ...)
2026-05-08 10:09:32  INFO: [T032d8371] id: 861076082252402, time: 2026-05-08 10:08:00, lat: 53.07475, lon: 6.57672, speed: 1.6, course: 21.0
2026-05-08 10:10:00  INFO: [T032d8371] disconnected

Ful logg:
https://drive.google.com/file/d/1HVU1DYoRPy2PSAlerhw5qIAx4ZCmRIRI/view?usp=sharing

Anton Tananaev 19 days ago
Tjeerd13 16 days ago

I made an pull request that for me fixt the below error:

https://github.com/traccar/traccar/pull/5876

2026-05-11 09:15:21  INFO: [Teb79db14: hyn600 < 90.134.51.22] 2b5250543a0070560a4c081634280222030207000000011e03108a6401ff0103010000000000300329f71200644e7307ea050b090e350d110a0a00cc00088150005ec5210e000014a50000220000000000000000000000000000000000004201ff39002c037007ea050b090f150ce523
2026-05-11 09:15:22  INFO: [Teb79db14] id: 861076082252402, time: 2026-05-11 09:14:53, lat: 53.08187, lon: 6.57368, course: 0.0
2026-05-11 09:15:22  INFO: [Teb79db14] id: 861076082252402, time: 2026-05-11 09:14:53, lat: 53.08187, lon: 6.57368, course: 0.0
2026-05-11 09:15:25  WARN: Failed to store position - Data truncation: Incorrect datetime value: '16918-04-26 00:44:03' for column `admin_traccar`.`tc_positions`.`devicetime` at row 1 - MysqlDataTruncation (... < QueryBuilder:336 < DatabaseStorage:106 < DatabaseHandler:44 < BasePositionHandler:34 < ...)
Tjeerd13 15 days ago

After commit 764e65719a6cbd3c41e4c1c5ff5f08c997992b4a, the AVT20 decoder produces Position objects without a timestamp.
attacht below logs:

2026-05-12 09:58:26  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:57:57, lat: 53.07588, lon: 6.57899, speed: 11.3, course: 34.0
2026-05-12 09:58:26  WARN: Position handler failed - Cannot invoke "java.util.Date.getTime()" because "time" is null - NullPointerException (TimeHandler:65 < *:60 < *:53 < BasePositionHandler:34 < ProcessingHandler:175 < *:184 < OutdatedHandler:56 < ...)
2026-05-12 09:58:26  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:58:09, lat: 53.07679, lon: 6.57932, speed: 16.7, course: 351.0
2026-05-12 09:58:26  WARN: Position handler failed - Cannot invoke "java.util.Date.getTime()" because "time" is null - NullPointerException (TimeHandler:65 < *:60 < *:53 < BasePositionHandler:34 < ProcessingHandler:175 < *:184 < OutdatedHandler:56 < ...)
2026-05-12 09:58:26  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:58:12, lat: 53.07700, lon: 6.57927, speed: 15.7, course: 12.0
2026-05-12 09:58:26  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:58:22, lat: 53.07798, lon: 6.57962, speed: 23.2, course: 11.0
2026-05-12 09:58:26  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:58:22, lat: 53.07798, lon: 6.57962, speed: 23.2, course: 11.0
2026-05-12 09:58:53  INFO: [Tac759592: hyn600 < 90.134.53.180] 2b5250543a00d4560a4c081634280222030201000000011e030f765201ff051301001c003400330329f29100646ac107ea050c093a2f0d110a091301001b001300350329f2ee00646b5907ea050c093a310d110a091301001b015a00360329f33200646b5e07ea050c093a320d110a091301001b013a00360329f36d00646b2307ea050c093a330d110a090301001b012000360329f38e00646ac107ea050c093a340d110a0900cc000881500006e1211a000004a5000022000d000001930000000000063a000001250207ea050c093a340fe423
2026-05-12 09:58:56  WARN: Position handler failed - Cannot invoke "java.util.Date.getTime()" because "time" is null - NullPointerException (TimeHandler:65 < *:60 < *:53 < BasePositionHandler:34 < ProcessingHandler:175 < *:184 < OutdatedHandler:56 < ...)
2026-05-12 09:58:56  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:58:47, lat: 53.08072, lon: 6.58093, speed: 15.1, course: 52.0
2026-05-12 09:58:56  WARN: Position handler failed - Cannot invoke "java.util.Date.getTime()" because "time" is null - NullPointerException (TimeHandler:65 < *:60 < *:53 < BasePositionHandler:34 < ProcessingHandler:175 < *:184 < OutdatedHandler:56 < ...)
2026-05-12 09:58:56  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:58:49, lat: 53.08081, lon: 6.58108, speed: 14.6, course: 19.0
2026-05-12 09:58:56  WARN: Position handler failed - Cannot invoke "java.util.Date.getTime()" because "time" is null - NullPointerException (TimeHandler:65 < *:60 < *:53 < BasePositionHandler:34 < ProcessingHandler:175 < *:184 < OutdatedHandler:56 < ...)
2026-05-12 09:58:56  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:58:50, lat: 53.08088, lon: 6.58109, speed: 14.6, course: 346.0
2026-05-12 09:58:56  WARN: Position handler failed - Cannot invoke "java.util.Date.getTime()" because "time" is null - NullPointerException (TimeHandler:65 < *:60 < *:53 < BasePositionHandler:34 < ProcessingHandler:175 < *:184 < OutdatedHandler:56 < ...)
2026-05-12 09:58:56  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:58:51, lat: 53.08094, lon: 6.58103, speed: 14.6, course: 314.0
2026-05-12 09:58:56  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:58:52, lat: 53.08097, lon: 6.58093, speed: 14.6, course: 288.0
2026-05-12 09:58:57  INFO: [Tac759592: hyn600 < 90.134.53.180] 2b5250543a0071560a4c081634280222030214000000011e030f765201ff0103010029012300360329f3c70064686007ea050c093a390d110a0900cc000881500006e1211200000ca5000022000e000001930000000000070300000125075f1710179f0010049e07ea050c093a390fe523
2026-05-12 09:59:00  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:58:57, lat: 53.08103, lon: 6.58032, speed: 22.1, course: 291.0
2026-05-12 09:59:23  INFO: [Tac759592: hyn600 < 90.134.53.180] 2b5250543a009e560a4c081634280222030201000000011e030f765201ff031301001b010900360329f39500646a5107ea050c093a350d110a0913010021012200360329f3a1006468f907ea050c093a380d110a0903010020011a00380329f8c800644fad07ea050c093b160d110a0900cc000881500006e12112000004a50000220012000001980000000000071c000001252007ea050c093b160fe623
2026-05-12 09:59:26  WARN: Position handler failed - Cannot invoke "java.util.Date.getTime()" because "time" is null - NullPointerException (TimeHandler:65 < *:60 < *:53 < BasePositionHandler:34 < ProcessingHandler:175 < *:184 < OutdatedHandler:56 < ...)
2026-05-12 09:59:26  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:58:53, lat: 53.08098, lon: 6.58082, speed: 14.6, course: 265.0
2026-05-12 09:59:26  WARN: Position handler failed - Cannot invoke "java.util.Date.getTime()" because "time" is null - NullPointerException (TimeHandler:65 < *:60 < *:53 < BasePositionHandler:34 < ProcessingHandler:175 < *:184 < OutdatedHandler:56 < ...)
2026-05-12 09:59:26  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:58:56, lat: 53.08099, lon: 6.58047, speed: 17.8, course: 290.0
2026-05-12 09:59:26  INFO: [Tac759592] id: 861076082252402, time: 2026-05-12 09:59:22, lat: 53.08231, lon: 6.57400, speed: 17.3, course: 282.0

Additional observation: when SACK is enabled on the tracker, no locations are sent to the server and all data appears to be buffered. After disabling SACK, the buffered data is transmitted immediately. Is this expected behavior or related to decoder support/configura

Anton Tananaev 15 days ago
Niko Lync 13 days ago

Does this protocol currently support GPRS commands?

After sending the command AT@OUT=at,,1,1,0,0,0001# activating DOUT1 in AVT50, there is such an error

java.lang.RuntimeException: org.apache.commons.codec.DecoderException: Illegal hexadecimal character 0x54 at index 1.