GV500CNA followup

LMhatchery 12 hours ago

Hi,

Thanks again for adding GV500CNA support earlier ( https://www.traccar.org/forums/topic/gv500cna-gl200-binary-data-id-82-frames-received-but-not-decoded-to-position/ ). The device worked for a period, but after it went offline overnight and reconnected, I'm now seeing decode failures on three distinct frame variants. I've captured samples of each (IMEI 865134050947226, device type 8203, protocol version 0003). All produce IndexOutOfBoundsException in Gl200BinaryProtocolDecoder. Sharing all three together so they can be addressed comprehensively rather than one at a time.

  1. Full real-time location report — now failing with a runaway readerIndex. This is the same 2b...0038 (56-byte) frame format that previously decoded correctly. It now errors with readerIndex: 5728 (incrementing by one on each successive frame: 5729, 5730, 5731...) against capacity(56):
2b000038000865134050947226820300030000216a90741b23725000521629fa8c89ae02abb4c06a90741b00010400ad000ac220962c1324

The record area begins 21 6a90741b2372 5000 52 16 ... — the 52 16 is the Data 82 (Full Location) record with length 0x16. The incrementing readerIndex suggests a counter/sequence field is being read as an offset.

  1. Short report with empty location (Data 82 length = 00H). Per the protocol spec, Data 82 length is "00H or 16H" — this frame carries the 00H (empty) variant, sent when the device lacks a valid fix. Errors at readerIndex: 67, capacity(39):
2b000027000865134050947226820300030000106a8f66e2114120016105010f5010f5000201584424
  1. Buffer Report (header 2DH) replayed after reconnection. Per the spec, "2DH indicates Buffer Report." When the device reconnects after an outage it replays buffered reports with the 2d header, and these fail at readerIndex: 78, capacity(56):
2d000038000865134050947226820300030000216a8f40a40cd95000521629fa8b5e6e02ab596c6a8f40a401c80000c0000000b6307020bda24

All three share the same header structure (Header / 00H / Frame Length / MultiPkt flag / IMEI / DeviceType 8203 / ProtoVer 0003 / CustomVer / Reserved). The differences are: header byte 2B vs 2D, and the Data 82 record being present-with-length-16H, present-with-length-00H, or (in the buffer case) the same record body under a 2D header.

I have the full "GV500CNA @Track Protocol Pro V10" documentation and can share any section — the report frame structure, Data 82 definition, or buffer-report handling. Happy to provide more captures or test any fix against the live device. Thanks very much for your help.

Anton Tananaev 10 hours ago

Can you please provide proper logs, not just single HEX samples.

LMhatchery 10 hours ago

Thanks — here's a proper continuous log with the device reporting live. Full connect/frame/error/disconnect cycles:

2026-08-27 19:20:35  INFO: [T6d7dc7d8: gl200 < 185.166.245.59] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:35  WARN: [T6d7dc7d8] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:35  INFO: [T6d7dc7d8] disconnected
2026-08-27 19:20:35  INFO: [T6e7e7e44] connected
2026-08-27 19:20:35  INFO: [T6e7e7e44: gl200 < 185.166.245.57] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:35  WARN: [T6e7e7e44] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:35  INFO: [T6e7e7e44] disconnected
2026-08-27 19:20:36  INFO: [T89516a0b] connected
2026-08-27 19:20:36  INFO: [T89516a0b: gl200 < 185.166.245.60] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:36  WARN: [T89516a0b] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:36  INFO: [T89516a0b] disconnected
2026-08-27 19:20:36  INFO: [T119ffa68] connected
2026-08-27 19:20:37  INFO: [T119ffa68: gl200 < 185.166.245.60] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:37  WARN: [T119ffa68] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:37  INFO: [T119ffa68] disconnected
2026-08-27 19:20:37  INFO: [Td240f650] connected
2026-08-27 19:20:37  INFO: [Td240f650: gl200 < 185.166.245.59] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:37  WARN: [Td240f650] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:37  INFO: [Td240f650] disconnected
2026-08-27 19:20:38  INFO: [Tfd20b53a] connected
2026-08-27 19:20:38  INFO: [Tfd20b53a: gl200 < 185.166.245.60] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:38  WARN: [Tfd20b53a] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:38  INFO: [Tfd20b53a] disconnected
2026-08-27 19:20:38  INFO: [Te961f9fe] connected
2026-08-27 19:20:39  INFO: [Te961f9fe: gl200 < 185.166.245.59] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:39  WARN: [Te961f9fe] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:39  INFO: [Te961f9fe] disconnected
2026-08-27 19:20:39  INFO: [T540ce17b] connected
2026-08-27 19:20:39  INFO: [T540ce17b: gl200 < 185.166.245.60] 2b000038000865134050947226820300030000216a908d7c24802100510f19fa8b85e702ab64326a908d7c00005b05000000000ca13e4924
2026-08-27 19:20:39  WARN: [T540ce17b] error - readerIndex: 136, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:39  INFO: [T540ce17b] disconnected
2026-08-27 19:20:40  INFO: [T60bf3df4] connected
2026-08-27 19:20:40  INFO: [T60bf3df4: gl200 < 185.166.245.58] 2b000038000865134050947226820300030000216a908d7c24802100510f19fa8b85e702ab64326a908d7c00005b05000000000ca13e4924
2026-08-27 19:20:40  WARN: [T60bf3df4] error - readerIndex: 136, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:40  INFO: [T60bf3df4] disconnected
2026-08-27 19:20:40  INFO: [T493e118f] connected
2026-08-27 19:20:41  INFO: [T493e118f: gl200 < 185.166.245.60] 2b000038000865134050947226820300030000216a908d7c24802100510f19fa8b85e702ab64326a908d7c00005b05000000000ca13e4924
2026-08-27 19:20:41  WARN: [T493e118f] error - readerIndex: 136, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:41  INFO: [T493e118f] disconnected
2026-08-27 19:20:41  INFO: [Tceefd91a] connected
2026-08-27 19:20:41  INFO: [Tceefd91a: gl200 < 185.166.245.60] 2b000038000865134050947226820300030000216a908d8524815000521619fa8b85e702ab64326a908d850000050082000aa51da13fe024
2026-08-27 19:20:41  WARN: [Tceefd91a] error - readerIndex: 8563, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:41  INFO: [Tceefd91a] disconnected
2026-08-27 19:20:42  INFO: [T9aa8ab0b] connected
2026-08-27 19:20:42  INFO: [T9aa8ab0b: gl200 < 185.166.245.58] 2b000038000865134050947226820300030000216a908d8524815000521619fa8b85e702ab64326a908d850000050082000aa51da13fe024

Two things that might help: there are two frame variants interleaving — most are Data 82 location reports (the 5216... ones, failing at readerIndex ~8560+), but every few cycles a different 510f... frame appears that fails at readerIndex 136. And the readerIndex on the location frames increments in step with the frame's trailing Count Number field (8561, 8563, 8565...), which made me wonder if that 2-byte count is being read as an offset. Happy to provide the protocol doc for the frame structure or capture more.

LMhatchery 10 hours ago

Thanks — here's a proper continuous log with the device reporting live. Full connect/frame/error/disconnect cycles:

2026-08-27 19:20:35  INFO: [T6d7dc7d8: gl200 < 185.166.245.59] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:35  WARN: [T6d7dc7d8] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:35  INFO: [T6d7dc7d8] disconnected
2026-08-27 19:20:35  INFO: [T6e7e7e44] connected
2026-08-27 19:20:35  INFO: [T6e7e7e44: gl200 < 185.166.245.57] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:35  WARN: [T6e7e7e44] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:35  INFO: [T6e7e7e44] disconnected
2026-08-27 19:20:36  INFO: [T89516a0b] connected
2026-08-27 19:20:36  INFO: [T89516a0b: gl200 < 185.166.245.60] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:36  WARN: [T89516a0b] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:36  INFO: [T89516a0b] disconnected
2026-08-27 19:20:36  INFO: [T119ffa68] connected
2026-08-27 19:20:37  INFO: [T119ffa68: gl200 < 185.166.245.60] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:37  WARN: [T119ffa68] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:37  INFO: [T119ffa68] disconnected
2026-08-27 19:20:37  INFO: [Td240f650] connected
2026-08-27 19:20:37  INFO: [Td240f650: gl200 < 185.166.245.59] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:37  WARN: [Td240f650] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:37  INFO: [Td240f650] disconnected
2026-08-27 19:20:38  INFO: [Tfd20b53a] connected
2026-08-27 19:20:38  INFO: [Tfd20b53a: gl200 < 185.166.245.60] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:38  WARN: [Tfd20b53a] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:38  INFO: [Tfd20b53a] disconnected
2026-08-27 19:20:38  INFO: [Te961f9fe] connected
2026-08-27 19:20:39  INFO: [Te961f9fe: gl200 < 185.166.245.59] 2b000038000865134050947226820300030000216a908d67247f5000521619fa8b85e702ab64326a908d670000050082000aa51da13d0424
2026-08-27 19:20:39  WARN: [Te961f9fe] error - readerIndex: 8561, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:39  INFO: [Te961f9fe] disconnected
2026-08-27 19:20:39  INFO: [T540ce17b] connected
2026-08-27 19:20:39  INFO: [T540ce17b: gl200 < 185.166.245.60] 2b000038000865134050947226820300030000216a908d7c24802100510f19fa8b85e702ab64326a908d7c00005b05000000000ca13e4924
2026-08-27 19:20:39  WARN: [T540ce17b] error - readerIndex: 136, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:39  INFO: [T540ce17b] disconnected
2026-08-27 19:20:40  INFO: [T60bf3df4] connected
2026-08-27 19:20:40  INFO: [T60bf3df4: gl200 < 185.166.245.58] 2b000038000865134050947226820300030000216a908d7c24802100510f19fa8b85e702ab64326a908d7c00005b05000000000ca13e4924
2026-08-27 19:20:40  WARN: [T60bf3df4] error - readerIndex: 136, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:40  INFO: [T60bf3df4] disconnected
2026-08-27 19:20:40  INFO: [T493e118f] connected
2026-08-27 19:20:41  INFO: [T493e118f: gl200 < 185.166.245.60] 2b000038000865134050947226820300030000216a908d7c24802100510f19fa8b85e702ab64326a908d7c00005b05000000000ca13e4924
2026-08-27 19:20:41  WARN: [T493e118f] error - readerIndex: 136, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:41  INFO: [T493e118f] disconnected
2026-08-27 19:20:41  INFO: [Tceefd91a] connected
2026-08-27 19:20:41  INFO: [Tceefd91a: gl200 < 185.166.245.60] 2b000038000865134050947226820300030000216a908d8524815000521619fa8b85e702ab64326a908d850000050082000aa51da13fe024
2026-08-27 19:20:41  WARN: [Tceefd91a] error - readerIndex: 8563, writerIndex: 56 (expected: 0 <= readerIndex <= writerIndex <= capacity(56)) - IndexOutOfBoundsException (... < Gl200BinaryProtocolDecoder:442 < *:458 < Gl200ProtocolDecoder:52 < ExtendedObjectDecoder:72 < ... < WrapperContext:102 < ...)
2026-08-27 19:20:41  INFO: [Tceefd91a] disconnected
2026-08-27 19:20:42  INFO: [T9aa8ab0b] connected
2026-08-27 19:20:42  INFO: [T9aa8ab0b: gl200 < 185.166.245.58] 2b000038000865134050947226820300030000216a908d8524815000521619fa8b85e702ab64326a908d850000050082000aa51da13fe024

Two things that might help: there are two frame variants interleaving — most are Data 82 location reports (the 5216... ones, failing at readerIndex ~8560+), but every few cycles a different 510f... frame appears that fails at readerIndex 136. And the readerIndex on the location frames increments in step with the frame's trailing Count Number field (8561, 8563, 8565...), which made me wonder if that 2-byte count is being read as an offset. Happy to provide the protocol doc for the frame structure or capture more.

Anton Tananaev 2 hours ago