Scooter Router

I've been riding scooters and motorcycles for about ten years now. In that time, I've begun to figure out what I like. As a result, I've realized that comfort is a lot more important to me that it used to be. Here's my latest scooter: A 2024 Vespa Sprint 150 in Bianco Innocente.

scooter_station.JPG

As you can see, it is fitted with a windscreen, buddy pegs for passengers, and a rear case that serves double duty as a backrest. Compared to some of my other scooters, this is a luxury barge.

When I bought it, I was informed by the salesman that it could display live navigation directions. Unfortunately, this salesman was wrong, and it was disabled on my vehicle. My scooter had all of the provisions, but could not display it due to "reasons".

scooter_dash.JPG

I spent a lot of time trying to figure out ways around this. My first thought was to simply settle and purchase something like a "Beeline Moto". (https://beeline.co/products/beeline-moto-ii). The Beeline Moto is a small remotely controlled display that you attach to your motorcycle. You use a companion application, and it streams navigation information to your bike.

While this would be a satisfactory solution for most, it was not suitable for me. I am very particular about the aesthetics of everything I work on and with. I wanted something that was seamlessly integrated into the bike and showed no visible changes on the outside.

This left me with one obvious solution, I needed to make the built-in display work.

In graduate school at TU Berlin I had previously worked on several security projects that involved plugging into JTAG (https://en.wikipedia.org/wiki/JTAG) interfaces on boards and reverse engineering protocols. I was willing to figure out whatever encryption keys locked my bike to reverse engineer them.

I also thought about a much simpler route, probably the data to the screen was streamed via some CANBUS module. I was confident that if I tapped into the CANBUS I could wire in my own instructions and perform some sort of instruction to alter the behavior of the motorcycle or even stream arbitrary characters to the display.

While it's true that both of these solutions would have likely worked, they would have been rather invasive and would have required me to open up the scooter.

Finally, after much deliberation, I decided I would reverse engineer the Bluetooth Protocol used by the bike with the native Vespa app.

I began by downloading the Vespa APK and then using JADX to decompile it. I used to be a Java developer, but reading "decompiled" Java isn't a walk in the park. Instead I set GPT Sol onto the task of deciphering the Bluetooth protocol.

If I could do this, I could send arbitrary commands to the bike. After a little bit of hacking with my laptop (and a lot of AI), I had figured out that I could display navigation directions in the "Information" section of the bike- I could output arbitrary text to the display.

scooter_pi.JPG

The next step was to write some navigation software. I wanted a system that didn't require an app, didn't require some subscription and would work standalone on the bike. For this, I picked up a Raspberry Pi 5 and a USB GPS receiver. After some more hacking, I managed to create a simple interface.

scooter_phone_navigation.PNG

When the Pi boots, it creates a wifi Hotspot named "Vespa". If you connect to this, it immediately opens up a web page in your browser (this is normally used for Wifi hotspot login). On this page, you can input any address within 500 mi of Chicago (I built all of the map data for this region). It'll then reverse geocode your address, and navigate you using Valhalla (https://github.com/valhalla/valhalla). After you are satisfied with the route, click "Go" and you're off!

While I had written software for navigation, compiled and compressed map data onto the Pi, and even managed to control the bike via Bluetooth, I still needed somewhere to put the Pi.

Luckily, on the smallbody Vespas, there is a front dash panel that contains a pocket and a female USB port. This is normally meant for charging cell phones, but would readily suffice for powering a Pi.

scooter_inner_compartment.JPG

After buying a nice protective case for the the Pi, it sits nice and snugly inside the pocket.

scooter_pi_in_compartment.JPG

Finally, here's what the navigation is like when you're riding:

As you're driving along, the navigation will tick down the distance until your next turn. Then, it'll show you the next turn. It features automatic re-routing, and even special routing features like avoiding fast roads and busy streets.

Ever since performing this upgrade on my bike, I've logged about 20 rides with it, and I could not be happier!

I look forward to potentially expanding this to support more bikes as a standalone navigation solution. I think this could be sleek as a replacement for a mirror on a motorcycle. Imagine that instead of a round mirror on one side, you have a round display, with navigation!