@Aeronotix
You are a programmer yourself,
so why not downloading the code and programming yourself?
Colin has his code on the web and mine is on the web too :github com/LeopoldG
Both are open source. Mine is based on Colins librosco and I wrote it with QT (open source too) but you may enhance it for linux or whatelse .
A few things:
- I already mentioned I was playing with librosco
- It doesn't work with MEMS1.9 (MPI) minis
- None of the libraries on your github seem to do anything other than wrap Colin's librosco
- I have tried MEMSDiag_lite with no success so far. I have emailed the developer (more on this later)
- The thread you linked is about adding a 16-pin connector to a K-series Caterham that didn't ship with the connector. I have the diagnostics connector (obviously) so I don't need to wire one in.
Out of frustration with no success between poking the MEMS1.9 ECU with the existing librosco library (AGAIN, librosco ONLY implements the MEMS1.6/SPI "protocol") I decided to download the MEMSDiag_lite apk from the Android PlayStore and decompile it. Here's what I found:
- The actual on-wire protocol/bytes sent is exactly the same between MEMS1.6 and MEMS1.9.
- The only difference I can find between 1.6 and 1.9 what MEMSDiag_lite is doing is performing some as of yet not understood (because the decompiled java .class files aren't very readable) initialisation routine.
- The initialisation sequence is very simple, both MEMSDiag_lite and librosco have the same init sequence and MEMSDiag_lite uses the same one for 1.9.
- MEMSDiag_lite performs a strange set of commands over USB where it sends some data, pauses for a few hundred milliseconds and sends more.
- The data it sends in these sequences is not any "real" data, but it is simply some USB-level protocol commands.
- This is as far as I understand it.
With the decompiled MEMSDiag_lite Java code, I obviously don't have the original source code but a representation of it built from the compiled classes in the MEMSDiag_lite APK from the PlayStore. I am fully aware that code built from decompilers is often not 100% accurate, however I certainly believe that the initialisation sequence is the same between MEMS1.6 and MEMS1.9. I believe the difference in the protocol lies simply in how those bytes are sent and the parameters used for creating the serial connection.
I don't have any tools such as an oscilloscope/logic analyzer nor an actual code reader to reverse engineer the MEMS1.9 initialisation sequence so I am hoping that someone may know more on how it works compared to MEMS1.6.
I *personally* can't get MEMSDiag_lite itself to work with my set up. I have no idea why, the MEMSDiag_lite application just times out trying to wake up the ECU. When I manually send the initialisation sequence of {0xCA, 0x75, 0xD0} they all get echoed back by the ECU, in librosco (and the MEMSDiag_lite decompiled code) they then proceed to send 0xF4 which on BOTH pieces of code the ECU then fails to respond to this byte. Apparently the next data from the ECU after 0xF4 should be a large (if I remember correctly 34 bytes) data frame containing various sensors/values.
This is the point I am stuck. I'm convinced the initialisation sequence is the same but willing to be corrected. I believe the issue lies somewhere else.