4 ms·
Reverse Engineering the BMW I3 API
- orless 11y agoA few years ago I've posted a question "How to limit speed with BMW JSDK on 116i programmatically from Java?" on StackOverflow as an April Fool's joke: http://stackoverflow.com/questions/2557423/how-to-limit-speed-with-bmw-jsdk-on-116i-programmatically-from-java http://stackoverflow.com/questions/2557423/how-to-limit-spee... Now it seems to be not-so-much of a joke anymore.
- xkcd-sucks 11y agoin principle it's kind of scary that the easiest way to get data from your car is to query a www server
- the_mitsuhiko 11y agoDepends on what you mean by easy. There is also the CAN bus.
- jacquesm 11y agoBut at least that requires physical access to the vehicle, something that is a bit harder to do when you're doing 90 miles per hour on the autobahn. But a server that can give you access to that car bypasses the air gap that would otherwise keep you safe.
- deleted 11y ago[deleted]
- Havoc 11y ago>in principle it's kind of scary that the easiest way to get data from your car is to query a www server Not entirely unexpected though. I mean...Engineer X is being evaluated on 50 performance criteria...none of which includes "will HN approve of the coms". In that case vanilla www queries are certainly a viable option.
- papaf 11y agoIts an authenticated query. Why is it scary - is there a problem with the authentication? If the authentication is sound it is actually quite cool.
- jacquesm 11y agoIt's scary because that server could be compromised and then your car is wide open.
- jamiesonbecker 11y agoNo authentication stays sound forever.
- keehun 11y agoAm I understanding this correctly? The car is constantly communicating with BMW's servers?
- edent 11y agoNot quite. The car has a 3G modem which is always on. When the app makes a request to BMW's servers, they forward the request to the car, which then responds. I assume that it probably pushes some days regularly. If the car is out of coverage, the app doesn't get any data back - as far as I can tell.
- vetinari 11y agoI would expect this data to be available only by banging on k- or d-bus, not that it is being uploaded to BMW. I'm getting old...
- TeMPOraL 11y agoAny sensible reason for it, or is it just another case of insane engineering - pushing through cloud stuff that should go through a LAN?
- edent 11y agoIf your vehicle is in a car park, it needs some way to connect to the net. It might make sense to have wifi for home use - but does your network stretch out to your garage?
- Finbarr 11y agoI was at the HackTheDrive event. Part of the data made available was logs from several trips taken in the i3. This included car sensor and location data, pinged every few seconds of the journey. I'm not sure if this is transmitted by default.
- striking 11y agoThe refresh_token is so you can grab another access_token without logging in again. It's part of OAuth2 spec.
- edent 11y agoAha! I completely missed that. Will update on the morning. Thanks
- nolanbrown23 11y agoI did this on my 2015 3 series which provides access to a lot of cool APIs as well but performance data is accessible only for the i3. The best use I could find for the API was an iOS extension to easily send Maps locations directly to my car for use with the built-in navigation system.
- barlo 11y agoHave you open sourced any of this, by chance? Was just thinking of attempting this on my BMW.
- jacquesm 11y agoWhat is it with all this stuff relying on server round trips when strictly speaking that is simply not necessary, why all this totally superfluous complexity?