Login Register

Vida CEM swapping

A mid-size luxury crossover SUV, the Volvo XC90 made its debut in 2002 at the Detroit Motor Show. Recognized for its safety, practicality, and comfort, the XC90 is a popular vehicle around the world. The XC90 proved to be very popular, and very good for Volvo's sales numbers, since its introduction in model year 2003 (North America). P2 platform.
Post Reply
User avatar
repair
Posts: 19
Joined: 22 March 2021
Year and Model: S60 II 2015
Location: Latvia
Has thanked: 2 times
Been thanked: 3 times

Re: Vida CEM swapping

Post by repair »

For fun, I put together a circuit with a display. The finished board with Teensy and MAX3051 drivers was assembled four years ago.
There is a CEM L with the number 30728542 (it is in the sketch list). So, Teensy, with different sketches, either does not find a single byte correctly or finds only the first two bytes to be correct. We tested options with USB power and external power via a 7805 converter.
In addition, Smok UHDS on the same CEM finds all bytes correctly in 7-10 minutes.
What is the problem with the Teensy circuit in this case?
Volvo S40, V40, V50, V60, S60, S80, V70, XC60, XC70, XC90, C30, C70 - Р1, Р2, Р3, 1998 - 2016 - language replacement DIM, ICM, PHM.

vtl
Posts: 4723
Joined: 16 August 2012
Year and Model: 2005 XC70
Location: Boston
Has thanked: 114 times
Been thanked: 603 times

Post by vtl »

repair wrote: 16 Oct 2025, 01:58 For fun, I put together a circuit with a display. The finished board with Teensy and MAX3051 drivers was assembled four years ago.
There is a CEM L with the number 30728542 (it is in the sketch list). So, Teensy, with different sketches, either does not find a single byte correctly or finds only the first two bytes to be correct. We tested options with USB power and external power via a 7805 converter.
In addition, Smok UHDS on the same CEM finds all bytes correctly in 7-10 minutes.
What is the problem with the Teensy circuit in this case?
30728542 is a "difficult" one. I have it, the third byte success is always on the edge. My semi-guessed explanation why some CEMs are difficult: viewtopic.php?p=602113#p602113 Have seen 3 different routine alignments in memory, that one is the most difficult.

How Smok cracks it? P3-style, via hash collision?

vtl
Posts: 4723
Joined: 16 August 2012
Year and Model: 2005 XC70
Location: Boston
Has thanked: 114 times
Been thanked: 603 times

Post by vtl »

repair wrote: 16 Oct 2025, 01:58 Teensy and MAX3051 drivers
The cracker has to deal with a lot of clock domain transitions. Each transition adds jitter and steals the precision. Some transceivers are worse than others. I never played with MAX3051, but it could be it adds more jitter than SN65HVD230DR does. You can try connecting Teensy's pin 2 to L pin of high speed CAN bus directly, that would avoid dealing with the transceiver.

Clock (frequency) domain problem explanation: viewtopic.php?p=659200#p659200

Assuming your hw was assembled right. This P/N is what I've used the most during cracker development. First two bytes are 100% reliable for me.

User avatar
repair
Posts: 19
Joined: 22 March 2021
Year and Model: S60 II 2015
Location: Latvia
Has thanked: 2 times
Been thanked: 3 times

Post by repair »

vtl wrote: 16 Oct 2025, 08:41 How Smok cracks it? P3-style, via hash collision?
I don't know how he does it. But Smok, after several attempts on this CEM, always identifies all bytes correctly and quickly. Although there were two different CEMs on which he only found two bytes correctly.
Volvo S40, V40, V50, V60, S60, S80, V70, XC60, XC70, XC90, C30, C70 - Р1, Р2, Р3, 1998 - 2016 - language replacement DIM, ICM, PHM.

User avatar
repair
Posts: 19
Joined: 22 March 2021
Year and Model: S60 II 2015
Location: Latvia
Has thanked: 2 times
Been thanked: 3 times

Post by repair »

vtl wrote: 16 Oct 2025, 08:48 You can try connecting Teensy's pin 2 to L pin of high speed CAN bus directly, that would avoid dealing with the transceiver.
Attachments
LOG.jpg
LOG.jpg (112.81 KiB) Viewed 322 times
Volvo S40, V40, V50, V60, S60, S80, V70, XC60, XC70, XC90, C30, C70 - Р1, Р2, Р3, 1998 - 2016 - language replacement DIM, ICM, PHM.

vtl
Posts: 4723
Joined: 16 August 2012
Year and Model: 2005 XC70
Location: Boston
Has thanked: 114 times
Been thanked: 603 times

Post by vtl »

repair wrote: 17 Oct 2025, 07:09
vtl wrote: 16 Oct 2025, 08:48 You can try connecting Teensy's pin 2 to L pin of high speed CAN bus directly, that would avoid dealing with the transceiver.
It didn't go into programming mode? Both CAN-buses are wired properly?

Arty
Posts: 12
Joined: 9 May 2024
Year and Model: 2006 S60
Location: Russia, Krasnodar
Has thanked: 7 times

Post by Arty »

repair wrote: 17 Oct 2025, 07:09
vtl wrote: 16 Oct 2025, 08:48 You can try connecting Teensy's pin 2 to L pin of high speed CAN bus directly, that would avoid dealing with the transceiver.
I had a similar problem. It turned out that one of the CAN transceivers was most likely faulty. I replaced both and everything worked. My CEM L has the same part number.

vtl
Posts: 4723
Joined: 16 August 2012
Year and Model: 2005 XC70
Location: Boston
Has thanked: 114 times
Been thanked: 603 times

Post by vtl »

Arty wrote: 17 Oct 2025, 11:10 I had a similar problem. It turned out that one of the CAN transceivers was most likely faulty. I replaced both and everything worked. My CEM L has the same part number.
I lot of counterfeit Chinese junk these days. A few stories right in this thread that people got it working by replacing the transceivers with the same ones, but from a different seller.

dikidera
Posts: 1304
Joined: 15 August 2022
Year and Model: S60 2005
Location: Galaxy far far away
Has thanked: 67 times
Been thanked: 175 times

Post by dikidera »

After analysis from Claude on the vida sources, it appears that when enumerating ECUs , the communication layer for each ECU is stored in Scripts, and not in the T_Init tables which are fetched via vadis_GetHwInit or vadis_GetDiagTimings SQL stored procedures. Those return incorrect speeds for our profiles, so Scripts instead supersede these tables, scripts describe how to read and clear DTCs, how to enter DownloadMode etc.

Arty
Posts: 12
Joined: 9 May 2024
Year and Model: 2006 S60
Location: Russia, Krasnodar
Has thanked: 7 times

Post by Arty »

vtl wrote: 10 Sep 2021, 08:33 Yes. And this: viewtopic.php?p=575090#p575090

Get both versions of m16c-flasher.de, beta can read, release can write ;) Add next to the config file:

[Controller]
Name=M32C@0xFC0000
Group=Generic
BaseAdr=FC0000
Blocks=1
From=FC0000
Size=40000
[end]

And select this controller in the menu.
If I understand correctly, then using this method I can get the flash from my CEM-L, modify it and write it back, right?

Post Reply
  • Similar Topics
    Replies
    Views
    Last post