Become a member

Get the best offers and updates relating to Liberty Case News.

― Advertisement ―

spot_img

35+ Hidden Tattoo Ideas and Inspiration

Even if your body is already covered in tattoos from head to toe, there's something fun and rebellious about secret ink. On the flip...
HomeTechBringing a Decade Old Bicycle Navigator Back to Life with Open Source...

Bringing a Decade Old Bicycle Navigator Back to Life with Open Source Software (and DOOM)

I recently found a Navman Bike 1000 in a thrift store for EUR 10. This is a
bike computer, a navigation device for cyclists, made by MiTaC, the same
company that makes the Mio bike computers. This Navman Bike 1000 is a
rebadged Mio Cyclo 200. It’s from 2015 and as you might have guessed, no more
map updates. There seem to be newer maps from 2020, but the official download
tool fails. Planned Obsolescence at its best. The device is still in very
good condition, the battery runs for 5 hours, the screen has great visibility
outside and the software is extensive.

NAVeGIS Open Source navigation with up to date maps

Recently I removed all Google Ads from this site due to their invasive tracking, as well as Google Analytics. Please, if you found this content useful, consider a small donation using any of the options below. It means the world to me if you show your appreciation and you’ll help pay the server costs:

GitHub Sponsorship

PCBWay referral link (You get $5, I get $20 after you’ve placed an order)

Digital Ocea referral link ($200 credit for 60 days. Spend $25 after your credit expires and I’ll get $25!)

This article shows how I dabbled a bit in reverse engineering, figuring out
the device runs Windows CE 6.0 and using Total Commander and NaVeGIS together with Open Street Map to
get up to date maps from the OpenFietsMap project, allowing me to use this
device for navigation with the most up to date maps. Since it is all open
source, even if the current map provider would stop, I can always make my own
maps.

Oh and it runs DOOM:

doom

There is no other input than the touch screen, so I can shoot and nothing
more, but hey, it runs DOOM!

Planned Obsolescence

Mio still makes newer devices like this one,
which probably only last 2 years and then the maps are out of date with no
updates.

I’d even be willing to pay Mio for updated maps for this older model.

original maps

The original maps (kaarten, Dutch) are from 2015.

I wonder why a company would assign its engineers the task of providing maps
for old devices when newer gizmos consistently generate hundreds of dollars
every two years. The high prices of new Garmin units, for instance, make it
clear where their development priorities lie.

Why are there no laws requiring device manufacturers to
open source all software and hardware for consumer devices no longer sold?
This would not directly impact their revenue and would help reduce the
growing volume of e-waste. However, I believe such a measure would likely
shrink their profit margins, as consumers might no longer purchase new
devices annually if existing models remained functional for ten years.

You could turn this thought around. There is no information on the box nor in
the manual regarding (free) map updates, so you could expect nothing, no
updates at all. That they provided 5 years (2015 – 2020) of free map updates
is nice, but since it was never promised, we should not complain. The promise
was NO map updates, but you still got 5 years worth.

Navman Bike 1000 / Mio Cyclo 200

To start this post off here are some pictures of the device and a global
overview.

This is the unit with box:

unit with box

Here is the Mio counterpart, mounted on a bike.

mio cyclo 200

mio cyclo 200

Both units are almost exactly the same except for housing colour and
background, software wise this article will work on both the Navman Bike 1000
and the Mio Cyclo 200.

Here is an excerpt from its introduction in 2015:

The Mio Cyclo 200 is an entry level bike navigation device with a 3.5-inch
color touchscreen and a very simple interface. It offers address
navigation, GPX track import, and a special “Surprise Me” feature that
creates random routes based on time or distance. It is loaded with
OpenStreetMap data for 23 Western European countries and includes
cycling-specific points of interest like repair shops and restaurants.

It is waterproof, designed for outdoor use, and has a battery life of around
10 hours. There’s also a “Where am I” function to quickly check your
location. Mounting options include a handlebar mount, and a stem mount
(Garmin mount). Updates are handled via a desktop application. The device
focuses on basic navigation without training features, making it ideal for
leisure riders and e-bike users, with a price of EUR 179.99.

First Impressions

Mounting on the bike was very easy and the battery still holds charge up to 8
hours. It gets a GPS fix quite fast when you are outside. The software is
basic, but for its intended use case it’s fine. You can enter an address or
postal code and it will navigate to there using full colour maps. When you
need to do something, like take a turn, it beeps a few times. I could see
myself using this for longer bicycle trips or on holiday.

But! Problems start arising when it sends you along roads that no longer exist
or when you want to navigate to addresses that the device does not know
about. It’s showing its age and since you can no longer download new maps,
that will never be fixed.

The desktop software says there are maps available for download:

update available

But when trying to download them, it fails:

fail

A bit of searching around on the web does turn up a lot of info regarding
Garmin custom maps but nothing for Mio devices.

mitmproxy & WireShark

I was wondering what this application was doing so I set up mitmproxy and let it only monitor navman.exe.

mitmproxy is software that intercepts app network (https) requests and since
the navigation desktop software was from 2018, I didn’t suspect that it does
any certificate pinning. That means that it uses the system certificate store
and accepts the mitmproxy certificate. If it did certificate pinning,
mitmproxy wouldn’t work. But as I suspected, no pinning and I could snoop
in to the network traffic of the desktop software.

There were two requests that stood out.

Request 1 seems to be a software update check:

POST: http://update.mio-tech.com.tw/Dodge/IaaCheckUpdateServlet


  8613
  Prod
  WIN32
  000...B1
  NAVMAN BIKE 1000
  
  
  
  

Response:



  
    IMAGE
    2017-08-31
    33.03.0807
    11700606
    http://download.mio.com/MioCyclo/GPST/Agent/8613/R33.zip
    http://service.navman.com/
    
  
  
    APPLICATION
    2018-02-02
    5091
    28599221
    http://download.mio.com/MioCyclo/GPST/Agent/Application/App 5.0.9.1 only.zip
    http://service.navman.com/M0100/FileReader_111306_UK%20Ireland%20NAVMAN_English%20Navman.html
    
  

Request two contains the map updates:

POST: http://update.mio-tech.com.tw/DodgeAgentMapUpdate/MiomoreMapUpdate.action



  
    
    
    
    
  

Response:

    

  
    
      1909.02
      129030470
      2016-02-16 02:49:50.115686
      WEU-BM-cyclo2
      173
http://download.mio.com/MioCyclo/GPST/MapData_v3/Basemap/WEU_BaseMap_150602.zip
9fb4549793498cf1a1024ae825c7f88c
http://v5.test.mioshare.com/en/news/detail?newsid=44
    
    
      1201.01
      3018402
      2015-06-12 10:04:51.191228
      WEU-CountryID-V4
      49
http://download.mio.com/MioCyclo/GPST/MapData_v3/CountryMap/WEU_Countries_23.zip
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
http://www.mioshare.com/news/detail?newsid=6
    
    
      1910.02
      1899741519
      2016-02-16 02:48:57.010793
      WEU-OSM-cyclo2
      172
http://download.mio.com/MioCyclo/GPST/MapData_v3/OSM/WEU_OSM_150902.zip
1d349e6be7657d828c4d287b812522c5
http://v5.test.mioshare.com/en/news/detail?newsid=44
    
    
      1909.02
      1242676960
      2016-02-16 02:49:31.575609
      WEU-TA-cyclo2
      171
      http://download.mio.com/MioCyclo/GPST/MapData_v3/TA/WEU_TeleAtlas_150602.zip
      512ba03cd982ed6b4cf80f9e85c23161
      http://v5.test.mioshare.com/en/news/detail?newsid=44
    
  

You can see that the download URL’s are from Mio, not Navman, they’re made by
the same OEM. What’s up with the weird checksum? But sadly, all map urls
give a Not Found error. I’ve contacted Mio support but haven’t yet received a
response. If I ever get any I’ll update this post.

The software update download responses do work. App 5.0.9.1 only.zip
contains a program named dodge.exe.

I even tried to monitor the USB communication but I didn’t get very far with that:

wireshark

Researching the firmware and DODGE.exe

The app only download included a program called dodge.exe. Uploading it to
VirusTotal told me that it was an ARMv4 Tumb application for Windows Mobile.
Binwalk said the same:

$ docker run -t -v "$PWD":/analysis refirmlabs/binwalk:branch-master -Me dodge.exe

                                             /analysis/extractions/dodge.exe
------------------------------------------------------------------------------------------------------------------------
  DECIMAL                            HEXADECIMAL                        DESCRIPTION
------------------------------------------------------------------------------------------------------------------------
0                                  0x0                                Windows PE binary, machine type: Thumb
4066336                            0x3E0C20                           CRC32 polynomial table, little endian
4067375                            0x3E102F                           Copyright text: "Copyright 1995-2002 Jean-loup
                                                                      Gailly "
4070255                            0x3E1B6F                           Copyright text: "Copyright 1995-2002 Mark Adler "
4186952                            0x3FE348                           CRC32 polynomial table, little endian
4193320                            0x3FFC28                           Copyright text: "Copyright (C) 1994-2008 Lua.org,
                                                                      PUC-Rio $ $Authors: R. Ierusalimschy, L. H. de
                                                                      Figueiredo & W. Cele"
4241612                            0x40B8CC                           Copyright text: "Copyright 1998-2004 Gilles
                                                                      Vollant - http://www.winimage.com/zLibDll"
4241698                            0x40B922                           Copyright text: "Copyright 1998-2004 Gilles
                                                                      Vollant - http://www.winimage.com/zLibDll"
4298913                            0x4198A1                           Copyright text: "copyright_navman."
4298941                            0x4198BD                           Copyright text: "copyright."
4298953                            0x4198C9                           Copyright text: "copyright.eng.txt"
4298972                            0x4198DC                           Copyright text: "CopyrightText"
4298992                            0x4198F0                           Copyright text: "CopyrightText"
4521372                            0x44FD9C                           Copyright text: "Copyright (C) 2009, Thomas G.
                                                                      Lane, Guido Vollbeding"
4577656                            0x45D978                           CRC32 polynomial table, little endian
------------------------------------------------------------------------------------------------------------------------

The firmware update image included a large file named xip.bin:

$ docker run -t -v "$PWD":/analysis refirmlabs/binwalk:branch-master xip.bin

                                                    /analysis/xip.bin
------------------------------------------------------------------------------------------------------------------------
DECIMAL                            HEXADECIMAL                        DESCRIPTION
------------------------------------------------------------------------------------------------------------------------
0                                  0x0                                Windows CE binary image, base address:
                                                                      0x80420000, image size: 23814492 bytes, file
                                                                      size: 19793959 bytes
------------------------------------------------------------------------------------------------------------------------

This seems to be the entire firmware image (with Windows CE). I used the
desktop program to flash this new firmware. The device showed a black screen
with a few lines of update information:

bootloader flash

Afterwards it rebooted. Extracting this xip.bin image didn’t work with
binwalk, only a few picture (image) files were extracted and a file named
EBOOT.NB0 which binwalk identified as an AES S-BOX. I might pursue that
later with some help of the XDA Developers forum,
xip images seemed to be popular back in the Windows Mobile days. But I have
a way easier method, read on for that.

Replacing DODGE.exe

When connecting the device via USB to the PC, two new drives show up.
Nav_data and Nav_system. The first is where you can load .gpx tracks
and where routes are saved. The second seems to be the entire Windows CE
system partition
!

Because the earlier app only download had a file named DODGE.exe I went
looking for that file. Found it in the, surprisingly named, DODGE\PROGRAM
folder. Renamed it to DODGE2.exe and put Total Commander for ARMv4 for
Windows CE
there as DODGE.exe and behold:

total commander

Using Total Commander I can browse the filesystem, there are lots of leftovers
and test programs. For example, here is Windows Explorer running on top of
the original DODGE.exe program:

explorer

The original Windows CE desktop:

windows ce desktop

A GPS Test program:

godspeed

Calculating Pi, including a third party on screen keyboard since this ROM does
not ship with one:

pi calc

This is way too much fun. I love me some Windows CE
as with the HP Jornada, trying out all kinds of Windows CE Applications,
games like DOOM and much more. But we’re here for the navigation part, I only
wanted up to date maps.

NAVeGIS

NAVeGIS is a Windows Mobile and
WinCE navigation application, last updated in March of 2025. NAVeGIS can use
the OpenStreetMap maps and in my case, the open Bicycle maps from
OpenFietsMap. NAVeGIS is provided under the
GNU GPLv3.

After downloading the OpenFietsMap map file and placing it on a Micro SD card
I selected the img file as map source in NAVeGIS.

You select a destination by either selecting it via the menu, or by dragging
the map to where you want to go and pressing the screen, then setting that as
destination. It saves a list of recent destinations.

Route hints are given by a big yellow arrow, the route itself is purple:

navegis

Here is a route it planned, about 25 KM,zoomed out a bit:

navegis 2

There is no way to record GPS tracks or to change the screen layout. It does
not support the beeper on this Mio device, so no audio hints as well. But,
the maps are updatable and the navigation itself is just as good as the Mio
application’s routing engine. It also supports Points of Interests (POI).

I find myself using the regular Mio (DODGE.exe) to record GPX tracks and for
navigation I’m using NAVeGIS. The Mio maps are so out of date that the
instructions more often than not are incorrect.

Without this piece of open source software I would probably have to throw this
device back in the bin (or the second-hand store). But with it, I have the
most recent up to date maps and navigation on a 10 year old Windows CE
device.

I hope current Mio or Garmin or comparable devices are this open to allow for
continued usage. Locked down devices, signed bootloaders and such shenanigans
are nice if you’re a manufacturer, but not if you’re and end user.

Conclusion

Thanks to open source software and a bit of reverse engineering, a 10 year old
GPS device is now fully functional. Proprietary abandonment was bypassed
entirely. With NAVeGIS, Total Commander, and OpenStreetMap, I have modern
mapping on legacy hardware. Obsolescence is a choice. Reverse engineering is
resistance.

For fun I installed Windows XP in a VM with Visual Studio 2008 and compiled
NAVeGIS myself. Git source and build instructions here

winxp

NAVeGIS compiled and running in the Windows CE emulator

Tags: binwalk
, blog
, c++
, cpp
, cycling
, development
, doom
, garmin
, historical
, mio
, mitac
, mitmproxy
, mobile
, navman
, openstreetmap
, pda
, planned-obsolescence
, pocket-pc
, windows-ce
, windows-mobile
, wireshark

Source link