Skip to content

Commit 09bba42

Browse files
committed
ev routing
1 parent af790c6 commit 09bba42

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed

.vitepress/config.mts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ export default defineConfig({
2727
{ text: 'Getting started', link: '/getting-started' },
2828
{ text: 'Supported hardware', link: '/supported-hardware' },
2929
{ text: 'Troubleshooting Guide', link: '/troubleshooting' },
30+
{ text: 'EV Routing Features', link: '/ev' },
3031
]
3132
}
3233
],

ev.md

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# EV Routing Feature Overview
2+
3+
Our project is the first to introduce a unique capability: enhancing EV navigation in older electric cars whose manufacturers have long stopped updating - or never intended to update - their onboard software.
4+
We refer to this functionality as the Google Maps EV Routing feature. Google introduced EV routing at [CES 2024](https://blog.google/products/android/android-auto-new-features-ces24/), and the first cars officially supporting it through Android Auto were the Ford Mustang Mach-E and the F-150 Lightning.
5+
6+
Thanks to the power of open source, even older EVs can now benefit from modern features and a much better navigation experience!
7+
8+
A demonstration of how this works in a real car can be found here:
9+
https://youtu.be/M1qf9Psu6g8
10+
11+
The idea of enabling this feature on additional EV models began in [issue #19](https://github.com/aa-proxy/aa-proxy-rs/issues/19) in February 2025. After a long search for someone with the required hardware and expertise to capture the necessary logs, we finally obtained sample data at the end of June 2025 - thanks to [@SquidBytes](https://github.com/SquidBytes).
12+
13+
After many hours of work by [@Deadknight](https://github.com/Deadknight) and [@gamelaster](https://github.com/gamelaster), we were able to extract and utilize the critical information needed to make the feature functional.
14+
15+
## How It Works
16+
17+
In simple terms, the goal is to obtain live vehicle data - primarily battery state of charge and optional outside temperature - and feed it into aa-proxy-rs.
18+
Once aa-proxy-rs has access to this data, it forwards it to Google Maps, enabling EV-specific route planning with charger recommendations.
19+
20+
For most EVs, the most practical way to obtain such data is through the vehicle’s OBD port.
21+
22+
### Built-in REST Interface
23+
24+
aa-proxy-rs includes an embedded REST server that can accept battery data from any source.
25+
(For example, I personally use a slightly modified version of the [canze-rs](https://github.com/manio/canze-rs) app running on the same device as aa-proxy-rs, which connects wirelessly to a Bluetooth OBD dongle.)
26+
27+
aa-proxy-rs can also be configured to automatically start a data-collection tool or client whenever Android Auto connects and battery data is needed. When the AA session ends, the tool is automatically terminated.
28+
The executable can be configured in config.toml and is launched with the relevant arguments.
29+
30+
## The Challenge: OBD Data Is Not Standardized
31+
32+
The biggest issue with OBD-based solutions is that OBD data is not standardized between manufacturers.
33+
Each EV model uses its own set of PIDs-identifiers for CAN bus registers where battery or temperature data can be read.
34+
35+
This is where WiCAN devices are extremely helpful, as they provide access to a PID database.
36+
Thanks to this, [@juggie](https://github.com/juggie) created a dedicated client:
37+
38+
🔗 aa-proxy-rs client for WiCAN Pro
39+
https://github.com/aa-proxy/aa-proxy-wican
40+
41+
This tool handles transferring WiCAN data to aa-proxy-rs. Please refer to the [project's README](https://github.com/aa-proxy/aa-proxy-wican/blob/main/README.md) page for more details.
42+
43+
There is also a wired OBD client for ELM327 dongles:
44+
45+
🔗 EV OBD Feeder for aa-proxy-rs
46+
https://github.com/aa-proxy/aa-proxy-go-obd-feeder
47+
48+
It can also be adapted to work with Bluetooth versions of the ELM327.
49+
50+
If you're not sure what to do, I encourage you to join our [Discord](https://discord.gg/c7JKdwHyZu). With some teamwork we might be able to add support for your case - plus there are quite a few people there, and someone might already have the exact same car as you.
51+
52+
## Vehicle Model Configuration
53+
54+
Once live battery data is being delivered correctly, the second half of the setup is required.
55+
56+
Each EV has completely different parameters: battery capacity, weight, drag coefficient, and many other characteristics.
57+
These parameters form the vehicle model. By default, aa-proxy-rs includes an F-150 model, which naturally leads to incorrect range estimates for other cars.
58+
59+
aa-proxy-rs expects your car model file located by default at:
60+
_/etc/aa-proxy-rs/ev_model.bin_
61+
62+
63+
This is a binary protobuf file containing the EV model that is passed to Google Maps.
64+
65+
Thanks to [@Deadknight](https://github.com/Deadknight), we now have a website and an Android APK that greatly simplify generating such model files:
66+
67+
⚙️ EV Model Generator for MITM Mode
68+
http://152.70.21.153/index.php
69+
70+
🤖 Android Companion App
71+
http://152.70.21.153/app-151120251405.zip
72+
73+
Using these tools, you can create a model tailored to your specific EV, ensuring accurate range predictions and optimal routing.
74+
75+
## Final Notes
76+
77+
As you can see, enabling EV routing is a fairly complex process.
78+
It is not a plug-and-play feature-you will likely need to experiment, adjust settings, and fine-tune both data sources and the EV model.
79+
80+
But once everything is configured and working, the experience brings a lot of joy and massively improves everyday use of older electric vehicles.

0 commit comments

Comments
 (0)