vtl wrote: 12 Jan 2026, 15:00Copy your terminal output, paste on gist.github.com, share a link here.ghettob wrote: 12 Jan 2026, 03:20 hi.
I've encountered a massive obstacle with the teensy build.
I've managed to get the car to programming mode, but the teensy keeps bootlooping causing the car to go in and out of programming mode thus being unable to crack the pin.
Any advice?
Vida CEM swapping
-
ghettob
- Posts: 11
- Joined: 12 Jan 2026, 03:18
- Year and Model: 2011
- Location: Finland
- Has thanked: 1 time
-
dikidera
- Posts: 1347
- Joined: 15 Aug 2022, 09:59
- Year and Model: S60 2005
- Location: Galaxy far far away
- Has thanked: 68 times
- Been thanked: 187 times
It is actually quite simple. It is the physical representation of the CAN module's memory layout.In other words, the ID is the serialized data in the registers of whatever MCU.Sometimes depending on the MCU, the ID is encoded with/without the RTR/IDE bit.crasbe wrote: 12 Jan 2026, 14:48Would you mind sharing some of your insights?dikidera wrote: 02 Jan 2026, 19:38 The ETM was the module that helped me crack CAN signal configuration, understanding how the CAN ids were calculated in the entire P2 Volvo lineup. Really good learning experience.
Damien Maguire (known for converting BMWs and lately also Volvos to Electric Vehicles) and myself have been working on reverse engineering the CAN messages on the P2 series, but since we have different generations of cars (he has 2003, I have 2002), it's twice the amount of work without knowing the system behind it.
Edit: Here is the repository with the start of DBC files and some annotated logs: https://github.com/damienmaguire/Volvo- ... ngineering
From what I found out is that the P2 generation used the "Volcano" software to generate the CAN bus IDs and timing. There seems to be some structure in the IDs but I could never really pinpoint it. There always was "oh, this looks like it could be it" and then there's an outlier that broke the structure...
There is no one solution to decode them all, each MCU has a different CAN layout, so encoding of IDs will be different everywhere.
Here is a python script, that given a HW part number, will extract all diagnostic parameters with names and units(if applicable) from VIDA. It was written by AI yes. May contain bugs.
In the meantime I have started reverse engineering TF80SC. It has been most illuminating, we can see a different architecture compared to AW55 mediated by an improved compiler, data is now passed in structures, pointers, pointers to pointers.
We have several important structures, 4 identical structures related to commands, and 4 identical structures for what is likely shift process.
- Attachments
-
- dump_ecu_diagnostics.zip
- (7.5 KiB) Downloaded 23 times
-
radziuC30
- Posts: 12
- Joined: 04 Jan 2026, 09:40
- Year and Model: C30
- Location: Polska
- Has thanked: 2 times
Hello, I have the same problem, how can I solve it?ghettob wrote: 13 Jan 2026, 02:27vtl wrote: 12 Jan 2026, 15:00Copy your terminal output, paste on gist.github.com, share a link here.ghettob wrote: 12 Jan 2026, 03:20 hi.
I've encountered a massive obstacle with the teensy build.
I've managed to get the car to programming mode, but the teensy keeps bootlooping causing the car to go in and out of programming mode thus being unable to crack the pin.
Any advice?
-
ghettob
- Posts: 11
- Joined: 12 Jan 2026, 03:18
- Year and Model: 2011
- Location: Finland
- Has thanked: 1 time
It seems that it is not getting throught to start the process correctly, as it keeps waking the car from programming mode and putting it back in.
I had the cracker in the v60 for over 2 hours and it just kept looping in and out of programming mode.
I had the cracker in the v60 for over 2 hours and it just kept looping in and out of programming mode.
-
crasbe
- Posts: 94
- Joined: 08 Dec 2022, 03:37
- Year and Model: 02 S60, 98 V70 (EV)
- Location: Germany
- Has thanked: 33 times
- Been thanked: 82 times
Thank you for the script! I played around with SQL requests and some Python parsing too, but your script is a lot nicer indeed.dikidera wrote: 13 Jan 2026, 09:18
Here is a python script, that given a HW part number, will extract all diagnostic parameters with names and units(if applicable) from VIDA. It was written by AI yes. May contain bugs.
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).
Check out my 3D Printed Parts for Volvo P2 and P80 on Printables 
-
ghettob
- Posts: 11
- Joined: 12 Jan 2026, 03:18
- Year and Model: 2011
- Location: Finland
- Has thanked: 1 time
I have the pin already for this car and it's not even close. Terminal output is from a 15min sessionvtl wrote: 13 Jan 2026, 15:34 Grab everything you see on the teensy's console, end to end, paste to gist.github.com, drop a link here.
Master branch does not even start the programming mode, so all the gists are from p3 branch
-
vtl
- Posts: 4936
- Joined: 16 Aug 2012, 13:35
- Year and Model: 2005 XC70
- Location: Boston
- Has thanked: 130 times
- Been thanked: 686 times
It is making progress. P3 CEM falls off the programming mode when punched hard, that's why it awakes and gets down again. The only way it stays in programming mode is if message rate is greatly reduced, to about what DiCE can do.ghettob wrote: 14 Jan 2026, 04:13I have the pin already for this car and it's not even close. Terminal output is from a 15min sessionvtl wrote: 13 Jan 2026, 15:34 Grab everything you see on the teensy's console, end to end, paste to gist.github.com, drop a link here.
Master branch does not even start the programming mode, so all the gists are from p3 branch
p3 code is not integrated into master, yes. I was thinking of integrating sirloin's one_pass and p3 branches (and now cem_b, too), but testing the code on at least 4 CEMs would kill me.
-
- Similar Topics
- Replies
- Views
- Last post
-
- 1 Replies
- 9409 Views
-
Last post by RickHaleParker
-
- 6 Replies
- 9455 Views
-
Last post by abscate
-
- 27 Replies
- 29223 Views
-
Last post by cn90
-
- 10 Replies
- 10988 Views
-
Last post by jonesg
-
- 7 Replies
- 6098 Views
-
Last post by RickHaleParker






