This morning I received a message from user @Minibiti reporting success on the ZE50 test code. This indicates our route to enabling CanZE for the ZE50 is probably solid. In aeronautical terms: the test flight was a success and we will now open up the envelope. Apart from a very small change that needs to be tested, it could be mostly boring table conversion work. Thank you Minibiti!
Minutes ago, I released a new beta. It contains, next to the usual array of small fixes, very limited proof-of-concept test-code for the ZE50. Select ZE50 in settings, ensure ISOTP fields is on, return to main, swipe to experimental and tap ZE50. Under the 4 meaningless lines it just might display the accelerator pedal position in %.
Please note that substantial changes in several places had to be made to make this work, and I do not have a ZE50 at my disposal to test. In other words, this is completely testing in the blind and anyone who has ever made any software knows where that leads to.
I’d appreciate feedback of course, if anything with debug files etc.
The good news is that as soon as this works, getting the current functionality of CanZE migrated to the ZE50 is straightforward.
There is confusion about how to obtain the IDs of TPMS sensors. goingelectric.de user E-Gerd-21 figured it out in this post, thank you! TL:DR Use only the last 6 hex characters of the IDs that came with the valves. Those are usually 8 characters. If the first of those 6 is between 0 and 7, add 8 (hexadecimal, so i.e. if it was 3, add 8 becomes B). In other words, the first character should always be between 8 and F. This bit manipulation will be added in the next release.
Since there are different types of sensors, some are not compatible with ZOE’s TPMS system at all, and I read somewhere success entering the first 6 characters of the supplied ID instead. In other words, your mileage may vary. Of course the most safe option is to have the sensors installed once by the dealer and then read them with CanZE.
Finally, in the next release there will be a helper function swapping the front and back axles, simplyfying wheel swaps.
Rolling out as we speak. Among other fixes you can find in the changelog, here are the most important changes
In the upcoming release you can save and load two tire sets to phone storage. It was a deliberate choice not to store the sensor IDs in CanZE’s internal storage, because that disappears when uninstalling. The sets can be found as simple CSV files in the /CanZE/ folder on your phone. This addition should make it much easier to swap your winter and summer tires.
Note: to understand how the Research screen in the Experimental section works, see this post.
It is now possible to log positional data together with the other logged data. This functionality is only available in the Research screen. To use it, you need to manually give CanZE location permission in the App settings of your phone, enable location, and finally add the following line to your /CanZE/_Research.csv file
Since GPS data are of course three numbers in one result, that result is presented in the log file as a string with the latitude, longitude and elevation separated with a /, for example
For the technically interested: this is a quite significant code change. Not only did we have to allow virtual fields in the Research screen, but also allow fields to be triggered externally. Normally, CanZE maintains a circular queue of fields it triggers to fetch from the car. In contrast, GPS events are triggered by Android itself, so instead of manipulating the queue and the process that handles that queue, now individual, virtual fields need to be enabled, started and stopped by screen starts, stops, pauses and resumes.
This feature is available in 1.50-beta3. I am pretty sure there are many kinks to iron out, so if you are interested, enroll in the Beta through the Play Store and put it to the test please.
Teaser alert: there is some exciting news coming up soon for the research and logger fanatics out there. But first, here is a recap of the permissions CanZE needs and why it needs it:
- Bluetooth and BluetoothAdmin: needed to make a connection to the dongle. Access can be dis-allowed, but of course CanZE is useless.
- WriteExternalStorage: needed to make log files and read the _Research.csv file. Can be disallowed, but then of course logging is not possible. Promise: We do not manipulate any files outside of the CanZE folder.
- Internet: used to fetch the news bar in the main screen, and to send crash data to crashlytics. This can not be disabled. Promise: For crashlytics: we add no information that can identify the car or phone to crashlogs. For news: no information is sent, the news file itself is hosted on github and we have no access to their web-server logs
- AccessFineLocation: has to be manually, explicitly allowed in Android’s permission settings if wanted and can be disallowed. Related to the teaser, stay tuned.
I have written quite often about our efforts to push back on crashes and ANRs (unresponsive screens). Up until now, and including the latest 1.49 release, our major tool for that has been the Google Play store. If enabled, your phone reports crashes and their call stack back to Google, where it is stripped from user identification and aggregated in our Play Store console. It works well, but it can give a massively false sense of comfort to the developers.
While not fully decided yet, we are implementing a Google product called “crashlytics” which goes a step further. When implemented, the crash reporting
- is done by CanZE, not by Android
- is still stripped from user identification
- reports all crashes, not just the ones enabled in Android
- can contain more information, such as the state of the application instead of just the call stack. This later works by the app saving some information to crashlytics. If the app runs fine, that info is discarded. If it crashes, it is send to the backend database together with the other crash info.
- is presented to us in a comprehensive console, with tons of filters, sorting, tagging.
We’ve read posts where applications reported tens to even hundreds of times more crashes than those coming back to the Play store and thus stayed under the radar. Of course we hope and think that this is not the case for CanZE, but we want you to have a trouble free experience.
What will you notice? Nothing at all. But be assured if/once implemented that every single crash will be reported and looked at.
As a test, this is now in the Open Beta channel.
As announced. Two major changes:
- serious rewrite and testing of Tires screen
- cleanup of Bluetooth connection UI: title changes gone, BT icon now on all screens
We might move to staged rollout in the future, meaning only a small, random percentage would get a new release first to allow a potential massive issue to show up and be addressed before a full rollout. With active user approaching 6000, this level of professionalism is becoming mandatory. As is the Open Beta of course for the daring.
With more features coming online in cars that unfortunately the software developers cannot and will not buy, we’re in the process of opening up an Open Beta channel for CanZE. If you are daring you can switch over to that track. The Open Beta will be used to release features that need additional testing.
A good example is the Tires screen. Writing TPMS valve IDs has been a long wish and it has been problematic since it was released. That’s what you get when unable to test on a real car! At this moment this is exactly what we are fixing (hopefully) in the beta.
Caution: The OpenBeta channel will not always be the bleeding edge latest and greatest. We have not yet determined if we will roll the actual releases over the Open Beta. We need to see how this goes. No promises. Remember, CanZE is a labor of love……
Nil the above. The way the Play Store works is that everything we put up there, Open Beta or production, has to have a higher number than the previous, and you will always receive the highest number you are entitled to. You are ALWAYS entitled to the production version, and are only entitled to the Open Beta if you opt in. So when we release a production version, by definition that will be the latest greatest. If we were still testing a feature at that point, we’d have to immediately re-release that feature version in the Open Beta.