Welcome to Tesla Motors Club
Discuss Tesla's Model S, Model 3, Model X, Model Y, Cybertruck, Roadster and More.
Register

Vendor Tesla Performance Tools - Track focused CANbus display for iOS

This site may earn commission on affiliate links.

_tpt_

Former Vendor
Dec 23, 2019
17
5
App Store
Hello everyone, very happy to announce TPT is now available on the App Store. This has been a long couple of months getting this functional and then approved. But I know it's going to be well worth the effort. I'm just getting started and have so much more planned for the app in the next few months. So without further delay, I'll start with what is available as of today.

TPT App Store Link
TPT Website Link

SiteScreens_3across_v1_1_1.png


SiteScreens_3across_v1_1_2.png



Features to date:
  • Logging and log playback in app - included
  • Stage 1 - included - Replica of the P100D Ludicrous Plus widget. Except this will work on all Tesla's and includes a graph.
  • Stage 2 - $1.99 IAP - Breaks out the L+ widget and adds max discharge and regen, cell voltage, temp and balance.
  • Stage 3 - $0.99 IAP - 1/4 mile readout with ET's and speed times. Graphs coming....
  • Stage 4 - $1.99 IAP - Very detailed charge monitoring display. Graphs coming....
What you need:
  • iPhone running at least iOS 12.4 - means it'll work all the way down to an iPhone 6.
  • OBDLink MX+ - Important - this is currently the only supported OBD module.
  • OBD to TDC adapter cable - I recommend the prebuilt cables from Maxwell Auto, but feel free to build your own as long as it's configured for CAN3.
  • Sturdy iPhone mount - Optional - The app uses the device accelerometer and not data from the vehicle for acceleration values.
Missing features:
  • Support for the Model 3 - planned for next major release
  • Support for iPad - also planned for next major release
  • Translation - Removed translations for the time being. If any members are interested in helping, I can send you promo codes that will lifetime unlock all features.
Other things to know:
  • First and foremost, this would not have been possible without this community - see Thanks below
  • All Stages after Stage 1 will be available as In App Purchases. This was done for a couple of reasons, including a lower initial price point.
  • This is a personal project, I am a Tesla owner (forum member nem3), and this app will likely lose money at it's current price. That's not the point of it. I had an idea, and I'd like to share it with you all.
  • Once I finalize my decoding lib it will be MIT open sourced so other developers can make use of it. Haven't decided full on an Objc or C implementation yet, but C would be easier for the community in general.
Special Thanks:
  • Jason Hughes for his HUGELY helpful PDF and forum contributions
  • Liam Obrien for his Instructables article that peaked my interest and forum contributions
  • Jack Rickard for the individual cell details
  • All of the members of Let the hacking begin thread - great conversation and wish I had been around back then
  • TPT Beta testers - Your contributions have been invaluable, please keep up the great work.
One last thing:
  • Forgot to mention, I copied this part from my iPad charger app - The app will automatically adjust the screen "theme" from dark to light based on available ambient light. This was a HUGE issue with my iPad app, and I'm hoping it's solved as well with this app.
Update 1.04: - Published 1/23/20
  • Changed backgrounding behavior - while this is still intended to be used in a track atmosphere where you're not interacting with the phone, app switching should be a much better experience now.
  • Modified auto-theming behavior - hopefully more predictable now.
  • Added manual theme selection to settings
  • Fixed speed display - will now show appropriate speed based off in car selection.
  • Add localization for the following languages - Chinese, German, French, Italian, Norwegian, Swedish and Dutch
Update 1.05: - Published 1/27/20
  • Some additional tweaks to disconnecting issues - Note, I plan to make another change to the in app "Disconnect" function. But this should for now alleviate most issues.
  • Added a couple additional localizations.
Update 1.10: - Published 3/29/20
  • Logging has been moved out and now available with purchase of the app.
  • Stage 3 - $0.99 IAP - a 1/4 mile readout with ET's and speed times.
  • Stage 4 - $1.99 IAP - a detailed battery monitoring screen for use during charging.
  • Added vehicle firmware selection - this will fix some display issues caused by 2020.12.5.
  • Graphing - graph display has been added to Stage 1 and 2.
  • Fixed issue where switching Stages would not always update PID's.
  • Fixed issue(s) with Auto Theming.
  • Updated log naming.
Update 1.12: - Published 8/10/20
  • Bugfixes.
Update 1.13: - Published 9/23/20
  • Update to handle 2020.36 vehicle firmware.
  • App min/max values are now remembered app wide.
  • Bugfixes.
Update 1.20: - Published 10/25/20
  • Add Stage 5 video recording with overlay.
  • Improved app efficiency throughout.
  • Bugfixes.
 
Last edited:
Yes, My first order of business before the next feature set is to get translations in place. Unless you mean you’d like to use the English version. Can do that pretty quickly.
I just want the English version...

I already have the OBDLink MX+ and I use ScanMyTesla... however they dont have an iOS version and I use iOS primarily
 
I just want the English version...

I already have the OBDLink MX+ and I use ScanMyTesla... however they dont have an iOS version and I use iOS primarily

Done and done Exiom, added to Hong Kong and 38 other English speaking countries. Small note, part of my localization effort will also be to allow showing speed in km/h rather than only mph. Might take a few hours to show, but looking forward to your feedback.

Looks like a good start.

Thanks msw, my goal isn't to steal away any of amund's customers. He's done a great job getting the canbus info into everyone's hands. I'm a big UI/UX guy in iOS dev, hopefully that shows. I have a LOT of plans for where I'm taking this, but it will include the full list of PID's at some point. Very excited to get past this localization stuff.
 
Last edited:
  • Helpful
Reactions: scottf200
Done and done Exiom, added to Hong Kong and 38 other English speaking countries. Small note, part of my localization effort will also be allow showing speed in km/h rather than only mph. Might take a few hours to show. But looking forward to your feedback.



Thanks msw, my goal isn't to steal away any of amund's customers. He's done a great job getting the canbus info into everyone's hands. I'm a big UI/UX guy in iOS dev, hopefully that shows. I have a LOT of plans for where I'm taking this, but it will include the full list of PID's at some point. Very excited to get past this localization stuff.

You should consider using TestFlight. It’s very easy. Also you don’t have to go through the review process for each publish.
 
You should consider using TestFlight. It’s very easy. Also you don’t have to go through the review process for each publish.

I use TestFlight for all my apps, but that's just the precursor to going live. TestFlight is intended only for beta testing and Apple is pretty strict on that part as they should be. Also, it's much easier to put it up in the store than have to add multiple people individually.

Any plan to add support for other OBD modules?

I’m using LELink now and I’m not sure I really want to buy another one.

Great app either way!

Ordered for testing. I also have a BlueDriver OBD module I'd like to try and get working. Reason for going straight to the MX+ - It's standard bluetooth, and the only MFI certified (required for standard bluetooth on iOS) module on the market. This should mean a more consistent, higher bandwidth connection. Whether that's true in practice remains to be seen, but I'm willing to try. Just not high on the list of priorities. I know the MX+ works, and I have mostly addressed it's reliability issues.

As a side note, the CAN3 bus is only a 500kbps baud rate. Bluetooth LE should have more than enough bandwidth to handle that. The issue comes down to the connection protocol difference. With my iPad charger app, I hold the connection open the entire time the app is connected. But that's only possible because I control both ends, my code is sending and receiving. I'm not sure how the OBD Bluetooth LE modules use the connection. If they close them after sending each packet like they're supposed to, it might not work for what we need.
 
Done and done Exiom, added to Hong Kong and 38 other English speaking countries. Small note, part of my localization effort will also be to allow showing speed in km/h rather than only mph. Might take a few hours to show, but looking forward to your feedback.



Thanks msw, my goal isn't to steal away any of amund's customers. He's done a great job getting the canbus info into everyone's hands. I'm a big UI/UX guy in iOS dev, hopefully that shows. I have a LOT of plans for where I'm taking this, but it will include the full list of PID's at some point. Very excited to get past this localization stuff.
Oh does it only show mph? This should be easy to implement tho...

I hope you will eventually make it possible to setup your own dash and show more detailed/raw data coming from the car...

but anyway... I plan to buy all your IAPs as a show of support even tho I don't plan to log... I dont think you are stealing anyone's customers since there currently are no iOS apps of this kind... but I do think you should take some cues from others functionality wise however...

AFAIK... MX+ is the only one that works on iOS... alternatively I think others opt to go down the route of WiFi Dongles for iOS


Edit: It's on the Hong Kong App Store now... downloaded and bought all the IAPs =D
 
Last edited:
I use TestFlight for all my apps, but that's just the precursor to going live. TestFlight is intended only for beta testing and Apple is pretty strict on that part as they should be. Also, it's much easier to put it up in the store than have to add multiple people individually.



Ordered for testing. I also have a BlueDriver OBD module I'd like to try and get working. Reason for going straight to the MX+ - It's standard bluetooth, and the only MFI certified (required for standard bluetooth on iOS) module on the market. This should mean a more consistent, higher bandwidth connection. Whether that's true in practice remains to be seen, but I'm willing to try. Just not high on the list of priorities. I know the MX+ works, and I have mostly addressed it's reliability issues.

As a side note, the CAN3 bus is only a 500kbps baud rate. Bluetooth LE should have more than enough bandwidth to handle that. The issue comes down to the connection protocol difference. With my iPad charger app, I hold the connection open the entire time the app is connected. But that's only possible because I control both ends, my code is sending and receiving. I'm not sure how the OBD Bluetooth LE modules use the connection. If they close them after sending each packet like they're supposed to, it might not work for what we need.

I have a hundred TestFlight users. Every release goes through TestFlight first. Might do 3 months of TestFlight releases then release to App Store. Much quicker. Might even do multiple releases in the same day (if a problem comes up). I always have a beta going.

Half of Tesla software is “Beta”.

I consider TestFlight a regular part of a pipeline. TestFlight is “nightly build”. App Store is Stable Release.
 
Just want to be sure I understand things.

I assume the Tesla ODBC connector is not useful (doesn't have the right connections).
I assume the OBDLink MX+ is connected to the adapter cable ODBC connector which gets all the needed signals from the diagnostic port.

Just trying to clarify...
 
Oh does it only show mph? This should be easy to implement tho...

I hope you will eventually make it possible to setup your own dash and show more detailed/raw data coming from the car...

but anyway... I plan to buy all your IAPs as a show of support even tho I don't plan to log... I dont think you are stealing anyone's customers since there currently are no iOS apps of this kind... but I do think you should take some cues from others functionality wise however...

AFAIK... MX+ is the only one that works on iOS... alternatively I think others opt to go down the route of WiFi Dongles for iOS


Edit: It's on the Hong Kong App Store now... downloaded and bought all the IAPs =D

Correct, for now. This will be fixed in the next patch release. I expect to have it done by EOW. Thank you very much for you patronage. Funny thing about the WiFi dongle, I went to buy the OBDLink one, and it looks like they're no longer selling it :(


I have a hundred TestFlight users. Every release goes through TestFlight first. Might do 3 months of TestFlight releases then release to App Store. Much quicker. Might even do multiple releases in the same day (if a problem comes up). I always have a beta going.

Half of Tesla software is “Beta”.

I consider TestFlight a regular part of a pipeline. TestFlight is “nightly build”. App Store is Stable Release.

Exactly. The one thing I wish I had with this app was more international testers.

Just want to be sure I understand things.

I assume the Tesla ODBC connector is not useful (doesn't have the right connections).
I assume the OBDLink MX+ is connected to the adapter cable ODBC connector which gets all the needed signals from the diagnostic port.

Just trying to clarify...

Yes, all correct, the OBDC connector is there as required by law but provides zero information. The true connector is buried behind the center console. You'll need a converter cable to go from their connector to a standard OBD connector.
 
I use TestFlight for all my apps, but that's just the precursor to going live. TestFlight is intended only for beta testing and Apple is pretty strict on that part as they should be. Also, it's much easier to put it up in the store than have to add multiple people individually.



Ordered for testing. I also have a BlueDriver OBD module I'd like to try and get working. Reason for going straight to the MX+ - It's standard bluetooth, and the only MFI certified (required for standard bluetooth on iOS) module on the market. This should mean a more consistent, higher bandwidth connection. Whether that's true in practice remains to be seen, but I'm willing to try. Just not high on the list of priorities. I know the MX+ works, and I have mostly addressed it's reliability issues.

As a side note, the CAN3 bus is only a 500kbps baud rate. Bluetooth LE should have more than enough bandwidth to handle that. The issue comes down to the connection protocol difference. With my iPad charger app, I hold the connection open the entire time the app is connected. But that's only possible because I control both ends, my code is sending and receiving. I'm not sure how the OBD Bluetooth LE modules use the connection. If they close them after sending each packet like they're supposed to, it might not work for what we need.

Completely understandable. If something changes please update us, I’d be happy to purchase right away.
 
  • Like
Reactions: _tpt_
After a couple of drives, I have the following feedback and suggestions...

Issues:
  • the problem of speed display seems to be purely cosmetic as it was displaying the correct speed but just labeled "mph" it seems the car has already converted it to kph (just letting you know in case you didn't know and tried to convert it)

  • auto light/dark mode... you really should just make a toggle instead because I'm pretty sure it's not working as intended... every time I drive past a tree it would flash light/dark/light/dark and it was overcast today and I am guessing the light is very close to the auto toggle point and it just kept toggling non-stop... it's extremely annoying... (my suggestion would be to add a toggle and if you still want auto... update the logic so that it you have different values for going dark and light... so there is an overlap... as well as perhaps the light condition needs to maintain for a few seconds before toggling)

  • leaving the app instantly severs the bluetooth stream or the app suspends instantly... there is no way to get it working again unless I cycle the phone's bluetooth on/off or disconnect the dongle and reconnect... while you shouldn't use your phone while driving... this still isn't ideal... so it'd be great if this can be fixed

Feature Suggestions:
  • I know you may have a different vision for this app, as it seems performance oriented. However perhaps it's not really that much more trouble to having a page where you can see ALL data coming from the cambus akin to ScanMyTesla? Since there are currently no other iOS alternative, I am sure many would hope to see similar features as available on the Android app.

  • I would love to see customizable page so I can add/remove widgets that I would like to see and potentially removing that G-Sensor for when I am not interested in seeing it.
 
I downloaded the app and before I have my cable I was checking out the settings etc... Seems like a nice user experience. I was kind of surprised to see that you have to pay more for the extra options. It may be just me, but I always thought of this kind of purchase as a "bait and switch" tactic. Maybe just charge the full amount at the get go for all the options? Just a thought. Looks really nice though, and I'll be using once I get my cable from maxwelltech.
 
  • Like
Reactions: _tpt_
I downloaded the app and before I have my cable I was checking out the settings etc... Seems like a nice user experience. I was kind of surprised to see that you have to pay more for the extra options. It may be just me, but I always thought of this kind of purchase as a "bait and switch" tactic. Maybe just charge the full amount at the get go for all the options? Just a thought. Looks really nice though, and I'll be using once I get my cable from maxwelltech.

I do see your point, and trust me, I hate in app purchases as much as the next guy. The process of getting them added, approved and mostly non-hackable is a huge PITA. But the pros/cons lean more to having them than not in this instance. I already had Stages 1-9 planned out before I started development. And the more I thought about it the more the DLC type option made sense. From an end user perspective, you only have to pay for what you want. Rather than charging $10-$20 for the whole app and only using 1 feature, you get that one feature for much less. If you want certain features but not others, you only pay for those.

Some of these Stages are going to require significant design and development time. In my mind I'm not selling the decoded PID's, other people put in that work, I'm selling my feature set. As the feature set grows so should the product cost. This is not to say that I can't or won't make that change if the community as a whole requests it. I just don't have the numbers yet to make an informed decision either way. If I see that most people that purchase the app end up purchasing all/most of the stages, I would make that change. Easier for me, better experience for you.

tldr: Thank you for the feedback, truly, and if more feel this way, please comment.
 
So I used this app a bit today. I found a little annoyance. If the screen my iPhone turns off I have to reset the MX+ to get it to reconnect. I can also disconnect and reconnect to the MX+ in the Bluetooth screen and then reconnect in the app. I have an iPhone XS on latest 13 iOS.
 
So I used this app a bit today. I found a little annoyance. If the screen my iPhone turns off I have to reset the MX+ to get it to reconnect. I can also disconnect and reconnect to the MX+ in the Bluetooth screen and then reconnect in the app. I have an iPhone XS on latest 13 iOS.

Hey, not sure if you were the one who submitted similar feedback via the site. This is a multi-faceted problem.

First, Auto-Lock - Easy fix, and already in the code base. This will let the app prevent the screen from sleeping while in the foreground.

Second is how strict iOS is with performing work in the background. You're not allowed to continuously stream data in the background. You can occasionally grab junks and perform work on that data, but not a stream. So in this use case, in order to use the app at all, it has to be in the foreground. For the MVP I made the choice to close the sockets whenever the app is put into the background. Trying to keep the connection alive poses a couple other issues. But I fully plan to circle back around to this.

Third and least possible to address is iOS's odd behavior with disconnected wireless devices. Part of this particular problem is the OBDLink itself, part of it is the system. I have a lot of background with Bluetooth, Bluetooth LE and WiFi on iOS. And have seen this many times in all protocols. Funny part is BLE is usually the easiest to deal with.

So here's the scenario I think you saw. You were connected and streaming from the device. Backgrounded the app or slept the phone. Reopened the app and it's not streaming anymore and the connection list is blank. You go to Settings, Bluetooth and Settings says you're still connected. If this is what you're referring to, it's an issue with either the way I am disconnecting from the device using available system calls or more likely yet another oddity with iOS. Problem is when I make the system call to close the socket connection, this actually puts the connected device into a limbo state were it's not connected but the system thinks it is. Only way to solve this is cycle power on the OBD or disconnect/reconnect from iOS Settings. I'm hoping addressing issue 2 will help alleviate this from being as prevalent. But you'll still see it in cases where the OBD module sleeps.