On 6/05/2026 12:42, Carlo Spigoli wrote:
> [0.147894] INFO: Write: size=2, data=E742
> [0.148826] INFO: Read: size=1, data=AA
> [0.149075] INFO: Write: size=8, data=0120000004000000
> [0.156557] INFO: Read: size=4, data=7F7F7F7F
> [0.156598] INFO: Read: size=1, data=EA
> [0.156609] ERROR: Ringbuffer pointer out of range (0x7f7f7f7f). [in src/
> mares_iconhd.c:882 (mares_iconhd_device_foreach_raw)]
The reason why the download fails is because the ringbuffer pointer contains an
unexpected value. It should be either a valid value or 0xffffffff to indicate
the backup one should be used.
But there is something strange going on here, because it's not just the
ringbuffer pointer that contains that 0x7f pattern. It's present elsewhere in
the memory dump too. The ringbuffer pointer value that is stored in the memory
dump is 0xffff7fff, which is also different from the value. When I import the
dives from the memory dump in subsurface, I also see some data corruption in the
dive profiles. See the attached screenshot. So I suspect the data might be
corrupted during the communication. Unfortunately the Mares communication
doesn't use checksum, so this is difficult to detect. Can you try downloading
another memory dump, so I can compare whether there are differences?
I have an idea how I can implement a workaround for the unexpected ringbuffer
value. That would already allow you to download your dives, but I also want to
confirm whether there is indeed a data corruption problem or not.
Jef