I did wonder about that
Vida CEM swapping
-
vtl
- Posts: 4724
- Joined: 16 August 2012
- Year and Model: 2005 XC70
- Location: Boston
- Has thanked: 114 times
- Been thanked: 605 times
You minimally need a SBL (Secondary Boot Loader) for your platform/CEM. Volvo keeps it in secret, but CAN sniffer can spy it when the dealer (or indie here over the pond) updates CEM software. Flash addresses probably differ, too. It would be best to have an open source tool, with a config file, so you could point the tool to your SBL and your CEM address space configuration.
-
vtl
- Posts: 4724
- Joined: 16 August 2012
- Year and Model: 2005 XC70
- Location: Boston
- Has thanked: 114 times
- Been thanked: 605 times
Previously the guy stated on his web site that his work is based on our work, but now that mention has been removed. So 100% GPLv3 outlaw. Like a bunch of others crooks from Eastern Europe
- RickHaleParker
- Posts: 7129
- Joined: 25 May 2015
- Year and Model: See Signature below.
- Location: Kansas
- Has thanked: 8 times
- Been thanked: 958 times
If one can get a hold of a .VBF for that CEM, one can dig a SBL out of the payload.
⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000.
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0.
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000.
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0.
-
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
While I am not worried of flashing an ECM, the CEM is a different story. One mistake there and the car dies for quite a while. An open source SBL would come a long way, even if the cars are old now. With all that keeps happening with my own car, I have not been able to even power on a CEM on the bench.
Now, unlike Denso, I would imagine these Motorola mcus(I am assuming that they are the main processors on most CEMs, so correct me if I am wrong) to have much more code out there that could potentially be re-used to flash stuff, again, hopefully. When I was examining the Denso ECU and how the original SBL was writing stuff, I discovered the MCU was pulsing external memory somehow, but I was unable to trace to the source pins.
As for STFT, I am guessing it could be reverse computed from Base Injection Time - Final injection time? Or perhaps, from AFR and 14.7 afr
Now, unlike Denso, I would imagine these Motorola mcus(I am assuming that they are the main processors on most CEMs, so correct me if I am wrong) to have much more code out there that could potentially be re-used to flash stuff, again, hopefully. When I was examining the Denso ECU and how the original SBL was writing stuff, I discovered the MCU was pulsing external memory somehow, but I was unable to trace to the source pins.
As for STFT, I am guessing it could be reverse computed from Base Injection Time - Final injection time? Or perhaps, from AFR and 14.7 afr
- RickHaleParker
- Posts: 7129
- Joined: 25 May 2015
- Year and Model: See Signature below.
- Location: Kansas
- Has thanked: 8 times
- Been thanked: 958 times
STFT = Current Injection time / Base Injection Time * 100%. STFT is a ratio.
⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙⸙
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000.
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0.
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000.
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0.
-
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
A little late, but thanks to emulation I have found at least one function that sets the CAN IDs now, with this I have found that each "signal" is described in a 32 byte structure.
ID Obviously 0x401E020AROM:00001B1C off_1B1C: .long 0x7080F00, unk_FFFFDEF0, unk_FFFFDF28, poweron
ROM:00001B1C ! DATA XREF: ROM:00001044↑o
ROM:00001B1C ! ROM:000010A4↑o ...
ROM:00001B2C off_1B2C: .long dword_30000, 0x401E020A, 0xFBFFBFFF, 0x3FFF5FFF
0x7080F00L The first byte 0x07 is both a record identifier signifying if this is the last signal or at least a main one, not sure yet. 0x08 is the DLC, as its being put in address E498 of the CAN module. 0x07 identifier can maybe sometimes be 0x04 which does an additional step in the ID setting function.
unk_FFFFDEF0 is still unknown as well the other address and 0xFBFFBFFF, 0x3FFF5FFF and dword_30000 but hey it's start.
Then I have identified the functions I have so named CANSend_Byte, word, dword etc.
They take two arguments, an offset and the value to send.
0x1428 is a data structure offset, perhaps 24 bytes in length. It contains a few things(mostly unknown for now), one of which is the offset 1b1c, we can *maybe* infer that 1b1c is the CAN signal that will be used to transmit the message from id 0042 401E, in this case it was the Throttle Opening Angle.mov.w #0x1428, r4
jsr @r13 ! SendCANWord_sub_ACD8
Although one little tidbit is still unclear, my 80401E address is kind of missing in action but I will see.
Now, with this what we can do is dump the TCM firmware and see if a similar table exists, for e.g reading. I would expect the TCM to have the same addresses in it's signal configuration.
Last edited by dikidera on 12 Aug 2023, 05:42, edited 2 times in total.
- unicast
- Posts: 6
- Joined: 18 April 2022
- Year and Model: C70 2007
- Location: Berlin
- Has thanked: 2 times
- Been thanked: 1 time
Hi all, thank you for creating this project, it's amazing! I've been monitoring it for a while but today I finally got my Teensy-powered breadboard assembled and I run it on my car. Unfortunately I got "PIN is NOT cracked" message at the end and I'm a bit puzzled what to do next. Any recommendations?
My CEM P/N is 31254317 which is in the list.
Here is the monitor output:
My CEM P/N is 31254317 which is in the list.
Here is the monitor output:
Code: Select all
CPU Maximum Frequency: 600000000
CPU Frequency: 180000000
Execution Rate: 180 cycles/us
PIN bytes to measure: 3
CAN low-speed init done.
Reading part number from ECU 0x40 on CAN_LS
CAN_LS ---> ID=000ffffe data=cb 40 b9 f0 00 00 00 00
CAN_LS <--- ID=03c3f7fc data=fd 00 00 19 40 26 3f 15
CAN_LS <--- ID=04a0409e data=00 01 18 00 00 00 02 9e
CAN_LS <--- ID=05704000 data=40 20 00 00 00 00 00 00
CAN_LS <--- ID=12404002 data=16 16 00 00 8b 00 80 00
CAN_LS <--- ID=080030ae data=80 00 07 01 11 01 50 e9
CAN_LS <--- ID=0c505226 data=40 3a 00 00 00 00 00 b0
CAN_LS <--- ID=0730302e data=00 00 00 01 00 00 50 e8
CAN_LS <--- ID=0fb2509e data=00 00 00 00 00 07 c0 00
CAN_LS <--- ID=00600005 data=8f 40 f9 f0 00 31 25 43
CAN_LS <--- ID=08e2300e data=c0 02 28 a9 2f 0e 00 80
CAN_LS <--- ID=04301090 data=00 00 00 00 00 00 27 e0
CAN_LS <--- ID=09c050b8 data=6f 00 86 40 00 bf 00 4c
CAN_LS <--- ID=19f010f8 data=99 3c 00 60 81 d8 de 50
CAN_LS <--- ID=1320400a data=00 00 00 00 00 00 40 1c
CAN_LS <--- ID=02120498 data=10 00 00 00 00 00 00 00
CAN_LS <--- ID=03c3f7fc data=fd 00 00 19 40 26 3f 15
CAN_LS <--- ID=00600005 data=09 17 20 20 20 31 26 46
Part Number: 31254317
Searching P/N 31254317 in 50 known CEMs
CAN HS baud rate: 500000
PIN shuffle order: 0 1 2 3 4 5
CAN high-speed init done.
Putting all ECUs into programming mode.
<CUT>
...
pin[2] choose candidate: 99
Candidate PIN 26 86 99 -- -- -- : brute forcing bytes 3 to 5 (3 bytes), will take up to 702 seconds
Progress: 0%..5%..10%..15%..20%..25%..30%..35%..40%..45%..50%..55%..60%..65%..70%..75%..80%..85%..90%..95%..
PIN is NOT cracked in 2258.71 seconds
done
Resetting all ECUs.
CAN_HS ---> ID=000ffffe data=ff c8 00 00 00 00 00 00
CAN_LS ---> ID=000ffffe data=ff c8 00 00 00 00 00 00
-
- Similar Topics
- Replies
- Views
- Last post
-
- 1 Replies
- 6431 Views
-
Last post by RickHaleParker
-
- 5 Replies
- 8699 Views
-
Last post by forumoto






