Reverse Engineer Zeal Optics Transcend GPS

In 2019 I bought a Zeal Optics Transcend GPS google for $100 on internet.

They have never been used and they came with the ticket still clipped on it.

These goggles were produced by Recon Instruments and as a product they were amazing and way ahead for that time. Back then only Google was bold enough to come out to the market with the Google Glass, something that… yes, apparently still exists today, but only in a niche.

They had a desktop app that you could use to save your statistics called Recon Instruments HQ and by the time I bought them there was an online dashboard where I was able to upload my data and bask myself about my statistics. There was also an active community and a blog that allowed you to discover users around you.

These goggles are the fathers of today’s Augmented Reality. Which is still not a thing, but maybe one day will be. Or maybe it will just fail like Facebook Oculus. Who knows… because there is a Grim Reaper in technology called….

Adoption

It doesn’t matter if your name is Recon Instruments, Google Glass, Facebook Oculus, Microsoft HoloLens. If people are not keen to use your fancy technology you can pour millions into it for more than a decade (which is what is happening) and the technology will still fail miserably.

And in this case the axe felt on Recon’s neck.

Intel bought Recon Instruments, they tried to make their fancy Intel Glasses. They failed miserably. And now Intel doesn’t have smart glasses and I don’t have my dashboard where I can upload my statistics.

So now that I have spare time let’s see if we can…

Reverse Engineering a .RIB file

As soon as you connect the Zeal Optics Transcend to the PC this are the files you see:

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---l        31/12/1979     23:00             16 CHRONOS.RIB
-a---l        31/12/1979     23:00             19 CONFIG.RIB
-a---l        31/12/1979     23:00              9 DAY01.RIB
-a---l        31/12/1979     23:00         303929 DAY02.RIB
-a---l        31/12/1979     23:00         303769 DAY03.RIB
-a---l        31/12/1979     23:00          58529 DAY04.RIB
-a---l        31/12/1979     23:00         351209 DAY05.RIB
-a---l        31/12/1979     23:00         640229 DAY06.RIB
-a---l        31/12/1979     23:00         144369 DAY07.RIB
-a---l        31/12/1979     23:00         179989 DAY08.RIB
-a---l        31/12/1979     23:00         128849 DAY09.RIB
-a---l        31/12/1979     23:00         112069 DAY10.RIB
-a---l        31/12/1979     23:00         231569 DAY11.RIB
-a---l        31/12/1979     23:00              9 DAY12.RIB
-a---l        31/12/1979     23:00          16089 DAY13.RIB
-a---l        31/12/1979     23:00         197929 DAY14.RIB
-a---l        31/12/1979     23:00              9 EVENT01.RIB
-a---l        31/12/1979     23:00              3 EVENT02.RIB
-a---l        31/12/1979     23:00             27 EVENT03.RIB
-a---l        31/12/1979     23:00              3 EVENT04.RIB
-a---l        31/12/1979     23:00              3 EVENT05.RIB
-a---l        31/12/1979     23:00              3 EVENT06.RIB
-a---l        31/12/1979     23:00             15 EVENT07.RIB
-a---l        31/12/1979     23:00              9 EVENT08.RIB
-a---l        31/12/1979     23:00              3 EVENT09.RIB
-a---l        31/12/1979     23:00              9 EVENT10.RIB
-a---l        31/12/1979     23:00             15 EVENT11.RIB
-a---l        31/12/1979     23:00             45 EVENT12.RIB
-a---l        31/12/1979     23:00              3 EVENT13.RIB
-a---l        31/12/1979     23:00              3 EVENT14.RIB
-a---l        31/12/1979     23:00             11 ID.RIB
-a---l         6/12/2019     12:58             11 ID2.RIB
-a---l        31/12/1979     23:00             79 STATS.RIB

We have recorded 14 days.

For each day 2 files are created DAY**.RIB and EVENT**.RIB.

Let’s open one of the DAY**.RIB and see what we have:

Recon Instruments byte

What is this?

Life would be simpler if the file was a .CSV but .RIB files are written in byte in order to minimize transmission time (and space when stored in a file).

So we now need to reverse engineer that blob. Well, first thing to do is go on internet and see if someone else has already banged his head on the wall like me. And yes, indeed I found flight-converter, a scripts written in Java that can easily convert a .RIB file to a human readable .GPX file. You just need to drag and drop the .RIB to the Convert_Win.cmd (never seen something like that) and the .GPX is created on the same input directory.

I would like to have this developer as a colleague:

RIB to GPX

The content of the .GPX file is much more readable: it contains Latitude, Longitude, Elevation, Speed, date & time

Reverse Engineering GPX

But something is still missing. The Zeal Optics Transcend GPS can also record the temperature and the script is bypassing such information.

Let’s ask if someone has already incurred in such problem.

Internet is awesome

Yep, some good soul had already figured out how to reverse engineer the Recon Instrument Snow2 and had released the code 2 weeks before my question.

I provided more details and logs on my StackOverflow question and he was keen to help. The result is rib-to-gpx-file-converter, a Python script that can now convert .RIB to .GPX file for Snow2 and Zeal Optics Transcend.

Ans now, yes, I also have the temperature:

GPX with temperature

And thanks to the WordPress plugin WP GPX Maps I can now render the GPX on a map

Total distance: 29.61 km
Max elevation: 2423 m
Min elevation: 1687 m
Total climbing: 4325 m
Total descent: -4755 m
Average speed: 22.04 km/h
Average temperature: 2.4
Total time: 03:13:30

 

Related

5 Replies to “Reverse Engineer Zeal Optics Transcend GPS”

    • Oh, thank you stevenhgs, I will test that. Is this caused by a discrepancy between Snow2 and Zeal Optics Transcend GPS and how they record the speed in byte?

      • No, I don’t think so. It’s just that I used the wrong units for the tag. Let me know if it seems to be correct with the updated code 🙂

          • Yep, now the speeds seem to make more sense! No problem, thanks again for providing your files 🙂

Leave a Reply

You have to agree to the comment policy.