Which P2 CEM are you referring to? There are two basic types: CEM-B 1999 - 2004, ( CEM-L & CEM-H ) 2005+gnalan wrote: 09 Mar 2022, 22:44 Does that mean the P2 CEM pin is now able to be found? If so, will it only work on the bench or can it be done through the OBD port (or possibly through the CAN bus connections from the radio)?
Vida CEM swapping
- RickHaleParker
- Posts: 7205
- Joined: 25 May 2015, 14:30
- Year and Model: See Signature below.
- Location: Kansas
- Has thanked: 8 times
- Been thanked: 980 times
Active
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2017 Ford PIU. 3.5l, Twin Turbo, 365 Hp.
............................
Past
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000. ( Killed by a plastic radiator. )
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion ( I moved, the project did not )
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0. ( Transmission dead after sitting for a winter )
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2017 Ford PIU. 3.5l, Twin Turbo, 365 Hp.
............................
Past
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000. ( Killed by a plastic radiator. )
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion ( I moved, the project did not )
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0. ( Transmission dead after sitting for a winter )
- gnalan
- Posts: 968
- Joined: 21 Jul 2020, 13:39
- Year and Model: 2001 S60
- Location: Ohio
- Has thanked: 557 times
- Been thanked: 135 times
2001 S60 is my car, but I'm not sure which CEM it uses.RickHaleParker wrote: 09 Mar 2022, 23:28 Which P2 CEM are you referring to? There are two basic types: CEM-B 1999 - 2004, ( CEM-L & CEM-H ) 2005+
2001 S60, B5244S, AW55-50SN, FWD (Sold)
Cancer/Illness/Caregiver Support Thread
Cancer/Illness/Caregiver Support Thread
- RickHaleParker
- Posts: 7205
- Joined: 25 May 2015, 14:30
- Year and Model: See Signature below.
- Location: Kansas
- Has thanked: 8 times
- Been thanked: 980 times
Yours is a CEM-B. We have not cracked that one yet. I got some ideas based on a statement by VTL. Sirlion has been doing some work on the CEM-B but to test my idea for the CEM-B it going to take a major rewrite of the code. With the two main coders busy I don't see it happening soon.
Active
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2017 Ford PIU. 3.5l, Twin Turbo, 365 Hp.
............................
Past
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000. ( Killed by a plastic radiator. )
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion ( I moved, the project did not )
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0. ( Transmission dead after sitting for a winter )
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2017 Ford PIU. 3.5l, Twin Turbo, 365 Hp.
............................
Past
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000. ( Killed by a plastic radiator. )
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion ( I moved, the project did not )
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0. ( Transmission dead after sitting for a winter )
- RickHaleParker
- Posts: 7205
- Joined: 25 May 2015, 14:30
- Year and Model: See Signature below.
- Location: Kansas
- Has thanked: 8 times
- Been thanked: 980 times
Sirlion has confirmed my theory that you can access the CEM-B through the "back side" CAN Bus without K-Line hardware.
Active
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2017 Ford PIU. 3.5l, Twin Turbo, 365 Hp.
............................
Past
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000. ( Killed by a plastic radiator. )
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion ( I moved, the project did not )
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0. ( Transmission dead after sitting for a winter )
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2017 Ford PIU. 3.5l, Twin Turbo, 365 Hp.
............................
Past
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000. ( Killed by a plastic radiator. )
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion ( I moved, the project did not )
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0. ( Transmission dead after sitting for a winter )
- RickHaleParker
- Posts: 7205
- Joined: 25 May 2015, 14:30
- Year and Model: See Signature below.
- Location: Kansas
- Has thanked: 8 times
- Been thanked: 980 times
These work also and results in a one pass.
It looks like if the tunable parameters were to be merged with the CEM parameters we could setup tunes for each Hardware number and make the code work with all the CEMs right out of the box.
PS: Tested on a second CEM-L. The second one cracked also.
Code: Select all
/* tunable parameters */
#define CALC_BYTES 4
#define SAMPLES 7
#define PERCENT_DIFF_THRESHOLD 0.1
#define MAX_ROUNDS 4
PS: Tested on a second CEM-L. The second one cracked also.
Active
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2017 Ford PIU. 3.5l, Twin Turbo, 365 Hp.
............................
Past
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000. ( Killed by a plastic radiator. )
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion ( I moved, the project did not )
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0. ( Transmission dead after sitting for a winter )
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2017 Ford PIU. 3.5l, Twin Turbo, 365 Hp.
............................
Past
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000. ( Killed by a plastic radiator. )
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion ( I moved, the project did not )
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0. ( Transmission dead after sitting for a winter )
-
vtl
- Posts: 4936
- Joined: 16 Aug 2012, 13:35
- Year and Model: 2005 XC70
- Location: Boston
- Has thanked: 130 times
- Been thanked: 686 times
Per-CEM tunables not gonna work: who will tune them? The diff threshold would depend on so many things, like the components quality, workmanship and even cable length. Not to tell, we have about 20% of "difficult" CEMs, which would need a very low threshold just for byte 3 and high threshold for 1-2. It has to be autotuned and always work in every situation.RickHaleParker wrote: 10 Mar 2022, 00:49 These work also and results in a one pass.It looks like if the tunable parameters were to be merged with the CEM parameters we could setup tunes for each Hardware number and make the code work with all the CEMs right out of the box.Code: Select all
/* tunable parameters */ #define CALC_BYTES 4 #define SAMPLES 7 #define PERCENT_DIFF_THRESHOLD 0.1 #define MAX_ROUNDS 4
PS: Tested on a second CEM-L. The second one cracked also.
- RickHaleParker
- Posts: 7205
- Joined: 25 May 2015, 14:30
- Year and Model: See Signature below.
- Location: Kansas
- Has thanked: 8 times
- Been thanked: 980 times
Cracked a third one with the above parameters. This one is a CEM-H. It cracked in one round for each byte. Which means the 0.1 threshold worked on all four bytes.vtl wrote: 10 Mar 2022, 06:27 Per-CEM tunables not gonna work: who will tune them? The diff threshold would depend on so many things, like the components quality, workmanship and even cable length. Not to tell, we have about 20% of "difficult" CEMs, which would need a very low threshold just for byte 3 and high threshold for 1-2. It has to be autotuned and always work in every situation.
Could the initial samples be autotuned based on CEM type? Like the shuffle is.
Im finding that the difference threshold works very well on the P2 when, samples is above 700 total. Below that I get false detections.
Have you tried the above parameters on your problem CEM?
Would some of you guys try Sirlion's fast code with the above tune and report back.
Active
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2017 Ford PIU. 3.5l, Twin Turbo, 365 Hp.
............................
Past
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000. ( Killed by a plastic radiator. )
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion ( I moved, the project did not )
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0. ( Transmission dead after sitting for a winter )
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2017 Ford PIU. 3.5l, Twin Turbo, 365 Hp.
............................
Past
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000. ( Killed by a plastic radiator. )
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion ( I moved, the project did not )
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0. ( Transmission dead after sitting for a winter )
- RickHaleParker
- Posts: 7205
- Joined: 25 May 2015, 14:30
- Year and Model: See Signature below.
- Location: Kansas
- Has thanked: 8 times
- Been thanked: 980 times
Tune-able Per-Hardware part number. That way if a change is made to accommodate B it will not stop working for A.
I got the code changed you can download the branch here. If it is decided this is the way to go I'll issue a pull request.
This way we can preserve the blazing speed Sirlion is getting on the P1 without sacrificing reliability on the P2.
Code: Select all
int cem_clocks_per_us;
int CALC_BYTES;
int SAMPLES;
int PERCENT_DIFF_THRESHOLD;
int MAX_ROUNDS;
unsigned char shuffle_orders[5][PIN_LEN] = { { 0, 1, 2, 3, 4, 5 }, { 3, 1, 5, 0, 2, 4 }, {5, 2, 1, 4, 0, 3}, { 2, 4, 5, 0, 3, 1} };
unsigned char *shuffle_order;
struct _cem_params {
unsigned long part_number;
int baud; /* CAN Bus baud speed */
int mhz; /* MCU frequency */
int shuffle; /* shuffle order from list above */
int calc; /* how many PIN bytes to calculate (1 to 4), the rest is brute-forced */
int samples; /* how many hundreds of samples to attempt per pin digit */
int threshold; /* percentage difference between top two pins */
int rounds; /* max number of filter rounds before picking top entry */
/* Format: CEM partnumber, CAN Bus baud speed, MCU frequency, shuffle order, Calc Bytes, Samples, threshold percentage, Maxium rounds. */
} cem_params[] = {
// P1
{ 8690719, CAN_500KBPS, 8, 0, 4, 1, 0.1, 3 },
{ 8690720, CAN_500KBPS, 8, 0, 4, 1, 0.1, 3 },
{ 8690721, CAN_500KBPS, 8, 0, 4, 1, 0.1, 3 },
{ 8690722, CAN_500KBPS, 8, 0, 4, 1, 0.1, 3 },
{ 30765471, CAN_500KBPS, 8, 0, 4, 1, 0.1, 3 },
{ 30728906, CAN_500KBPS, 8, 0, 4, 1, 0.1, 3 },
{ 30765015, CAN_500KBPS, 8, 0, 4, 1, 0.1, 3 },
{ 31254317, CAN_500KBPS, 8, 0, 4, 1, 0.1, 3 },
{ 31327215, CAN_500KBPS, 8, 3, 4, 1, 0.1, 3 },
{ 31254749, CAN_500KBPS, 8, 3, 4, 1, 0.1, 3 },
{ 31254903, CAN_500KBPS, 8, 0, 4, 1, 0.1, 3 },
{ 31296881, CAN_500KBPS, 8, 0, 4, 1, 0.1, 3 },
// P2 CEM-B (Brick shaped 1999-2004 with K-line)
{ 8645716, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 8645719, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 8688434, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 8688436, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 8688513, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 30657629, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 9494336, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 9494594, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 8645171, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 9452553, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 8645205, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 9452596, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 8602436, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 9469809, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
{ 8645200, CAN_250KBPS, 4, 0, 4, 1, 0.1, 3 },
// P2 CEM-L (L shaped and marked L 2005-2014)
{ 30682981, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30682982, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30728356, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30728542, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30765149, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30765646, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30786475, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30786889, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 31282457, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 31314468, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 31394158, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
// P2 CEM-H (L shaped and marked H 2005 - 2007)
{ 30786476, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30728539, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30682982, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30728357, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30765148, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30765643, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30786476, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30786890, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30795115, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 31282455, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 31394157, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
{ 30786579, CAN_500KBPS, 30, 1, 4, 7, 0.1, 3 },
};
...
...
struct _cem_params hs_params;
if (!pn || !find_cem_params(pn, &hs_params)) {
printf("Unknown CEM part number %lu. Don't know what to do.\n", pn);
return;
}
shuffle_order = shuffle_orders[hs_params.shuffle];
cem_clocks_per_us = hs_params.mhz;
CALC_BYTES = hs_params.calc;
SAMPLES = hs_params.samples;
PERCENT_DIFF_THRESHOLD = hs_params.threshold;
MAX_ROUNDS = hs_params.rounds;Active
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2017 Ford PIU. 3.5l, Twin Turbo, 365 Hp.
............................
Past
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000. ( Killed by a plastic radiator. )
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion ( I moved, the project did not )
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0. ( Transmission dead after sitting for a winter )
1998 C70, B5234T3, 16T, AW50-42, Bosch Motronic 4.4, Special Edition package.
2017 Ford PIU. 3.5l, Twin Turbo, 365 Hp.
............................
Past
2003 S40, B4204T3, 14T twin scroll AW55-50/51SN, Siemens EMS 2000. ( Killed by a plastic radiator. )
2004 S60R, B8444S TF80 AWD. Yamaha V8 conversion ( I moved, the project did not )
2005 XC90 T6 Executive, B6294T, 4T65 AWD, Bosch Motronic 7.0. ( Transmission dead after sitting for a winter )
- gnalan
- Posts: 968
- Joined: 21 Jul 2020, 13:39
- Year and Model: 2001 S60
- Location: Ohio
- Has thanked: 557 times
- Been thanked: 135 times
Has anyone tried this on the CEM-B to read the eeprom to get the pin from the .bin file?
2001 S60, B5244S, AW55-50SN, FWD (Sold)
Cancer/Illness/Caregiver Support Thread
Cancer/Illness/Caregiver Support Thread
-
- Similar Topics
- Replies
- Views
- Last post
-
- 1 Replies
- 9255 Views
-
Last post by RickHaleParker
-
- 6 Replies
- 9198 Views
-
Last post by abscate
-
- 27 Replies
- 28513 Views
-
Last post by cn90
-
- 10 Replies
- 10670 Views
-
Last post by jonesg
-
- 7 Replies
- 5799 Views
-
Last post by RickHaleParker






