Decoding the IDs is the easy part. Knowing what the encoded data is a bit more difficult it requires reverse engineering of the module you wish to emulate.crasbe wrote: ↑13 Jan 2026, 17:32Thank you for the script! I played around with SQL requests and some Python parsing too, but your script is a lot nicer indeed.
My VIDA installation is stuck in an old 32-bit Windows 7 VM, so I'll probably have to get a newer Windows version to export the database to SQLite format and actually play around with the script.
What is still unclear to me: as far as I could tell the VIDA database only contains the diagnostic responses? At least the links that vtl posted were all based on diagnostic requests. What I'm interested in is the normal CAN bus communication, which does not include the diagnostic requests.
The goal would be to replace the ECM entirely and "pretend" to be the ECM, which would require replicating all the CAN messages it usually sends. Those aren't the diagnostic messages though.
Is that what the "status" category is for? Is that the data that's sent on the CAN buses during normal operation? (As I said, I haven't played around with your script yet, maybe the answer would be obvious from the output).
The first step is extracting the ECM from the car and running on the bench. This allows you to isolate about 90% of the CAN ids the module will "use". Why 90%? Some CAN ids will appear only when IGN Key in POS II and likely communication between ECM<=>CEM and ECM<=>ABS, so some IDs may not appear(or they might).
Second step is extracting the ROM, you need this in order to find the area with the CAN signal configuration. Note, across modules e.g ECM,TCM,ETM the can signal configuration will be stored differently, in different ROM areas, in different structures etc, they dont always follow a clear cut single spec design. CAN IDs as I mentioned are serialized and depend on the MCU's CAN module memory layout.
Usually you have a structure for storing the data and/or encoding it, very simple functions, then for reading(this reads from already stored by the system data) and thirdly is the read/dispatch tables that the system iterates over to construct the ID and send the messages as well as receive.






