is this possible? copy and save oem cals

American Delco GM ECUs and PCMs, ALDL, OBD 1.5.
User avatar
Gareth
Posts: 2505
Joined: Fri Mar 14, 2014 8:37 pm
Location: Bacchus Marsh, Vic

Re: is this possible? copy and save oem cals

Post by Gareth »

Hmmm, haven't heard of that one, google doesn't show any results either?...
According to chemistry, alcohol is a solution...
gmtech825
Posts: 186
Joined: Fri Feb 24, 2017 11:27 am

Re: is this possible? copy and save oem cals

Post by gmtech825 »

that's the GM number, other part numbers on it :1310101000000x, 848032280, 1116355025809svp, 28367418 3506 ag02877, pdy-31-1
gmtech825
Posts: 186
Joined: Fri Feb 24, 2017 11:27 am

Re: is this possible? copy and save oem cals

Post by gmtech825 »

so if I was going to try and delete the VIN. where would I start?
gmtech825
Posts: 186
Joined: Fri Feb 24, 2017 11:27 am

Re: is this possible? copy and save oem cals

Post by gmtech825 »

Does anyone know if Tunercat software will help me out?
User avatar
antus
Site Admin
Posts: 8237
Joined: Sat Feb 28, 2009 8:34 pm
cars: TX Gemini 2L Twincam
TX Gemini SR20 18psi
Datsun 1200 Ute
Subaru Blitzen '06 EZ30 4th gen, 3.0R Spec B
Contact:

Re: is this possible? copy and save oem cals

Post by antus »

Have a look at this thread, it will likely be similar.https://pcmhacking.net/forums/viewt ... 93&p=69914

I believe its a different option in sps so you can type the donor car vin even though its installed in the new car. SPS will unlock an reflash the computer and link it to the new car. The option isnt in that thread and we didnt screen shot it but its at the part where you update the calibration. One of the other options lets you enter the vin and thats the ticket.
Have you read the FAQ? For lots of information and links to significant threads see here: http://pcmhacking.net/forums/viewtopic.php?f=7&t=1396
Caleditor
Posts: 1
Joined: Mon Jul 03, 2017 9:17 am
cars: 1956 Triumph

Re: is this possible? copy and save oem cals

Post by Caleditor »

I have seen a program called MDI programming system. It works on some old stuff.
gmtech825
Posts: 186
Joined: Fri Feb 24, 2017 11:27 am

Re: is this possible? copy and save oem cals

Post by gmtech825 »

so i revisited this module after learning a few things. i read about the $3b 90 service to write the VIN to try and use this module in another vehicle. I successfully unlocked it, got it to enter programming mode, and sent the can messages to write the vin. the VIN write requires 3 messages. after I send the first message I receive the 30 00 response from the ecm, then proceeded to send the remaining 2 message frames. I don't get any response back from the ecm positive or negative and when I read the VIN out it did not change.

any input?
ironduke
Posts: 579
Joined: Thu Feb 13, 2020 11:32 pm
cars: Mainly GM trucks, a Cruze and an Equinox for dailys..

Re: is this possible? copy and save oem cals

Post by ironduke »

Is this still on the 2015??? What ecu is that?? E92?? Should be right on the label of the ecu..

No response kind of sounds like your not sending the message correctly? Mind sharing what you have?

Also in sps when tryingt to program the ecm is there an option to prepare for removal?? That's been showing up more lately and I believe that is what you would use to unpair the ecu in preparation to install into a different vehicle.. If that shows up I would try that and then try remove and replace and typing in the vin of the truck it's going into..

code below is something I threw together playing with the E92 which I think is what you have.. could at least see if your sending the message the same way I am.. Honestly haven't visiting E92 in a little while but I do think it was successful in changing the vin..

public static void changevin()
{
if (!A._isconnected) Connect();
// insert vin readout and typing in new vin
string seed = "0000";
string ecukey = "0000";

string temp = Sendcommand(new byte[] { 0, 0, 7, 0xE0, 2, 0x1a, 0x90 }, 300);
if (temp.Length == 42) A.EcuVin = HexStringToString(temp.Substring(6, 34));
else Errorcontrol("Error reading VIN");
Console.WriteLine($"Current Vin programmed into E92 module is {A.EcuVin}");

Console.WriteLine("Type in Vin you want programmed into module ");
string Newvin = Console.ReadLine().ToUpper();
if (Newvin == "") Newvin = A.EcuVin;
if (Newvin.Length == 17)
{
System.Threading.Thread.Sleep(20);
if (!Sendcommand(new byte[] { 0, 0, 7, 0xE0, 2, 0x10, 0x03 }, 300).Contains("50"))
{
Console.WriteLine("10 03 failed, trying recovery");
A.recovery = true;

}
else Console.WriteLine("1003 response OK");
System.Threading.Thread.Sleep(20);
string Seedr = Sendcommand(new byte[] { 0, 0, 7, 0xE0, 2, 0x27, 0x01 }, 300);
if (!Seedr.Contains("6701")) Errorcontrol("Seed request response of " + Seedr);
else Console.WriteLine("Seed request response OK");
seed = (Seedr.Substring(4, 4));

Console.WriteLine($"Seed is {seed}");
if (seed == "0000") ecukey = "0000";

else ecukey = getkey(seed);
Console.WriteLine($"Key used to unlock is {ecukey}");

byte key1 = Convert.ToByte(ecukey.Substring(0, 2), 16);
// Console.WriteLine($"key 1 is {key1}");
byte key2 = Convert.ToByte(ecukey.Substring(2, 2), 16);
// Console.WriteLine($"key 2 is {key2}");

if (!Sendcommand(new byte[] { 0, 0, 0x07, 0xE0, 4, 0x27, 2, key1, key2 }, 300).Contains("670")) Errorcontrol("Unlocking");
else Console.WriteLine("Unlocked- OK");
System.Threading.Thread.Sleep(20);

byte[] vbytes = Encoding.ASCII.GetBytes(Newvin);
// Console.WriteLine("1st byte is " + vbytes[0].ToString("X2"));

A.Channel.SendMessage(new byte[] { 0x00, 0x00, 0x07, 0xE0, 0x10, 0x13, 0x3b, 0x90, vbytes[0], vbytes[1], vbytes[2], vbytes[3] });
GetMessageResults writevin = A.Channel.GetMessages(1);
string message = (BitConverter.ToString(writevin.Messages[0].Data).Replace("-", ""));
Console.WriteLine($"Response from writevin is {message}");
if (!message.Contains("7E830"))
{
Console.WriteLine($"Error!! Response from writevin {message}");
// do we quit or keep on going??
}
else Console.WriteLine("Write vin 1st line OK");
// System.Threading.Thread.Sleep(5);

A.Channel.SendMessage(new byte[] { 0x00, 0x00, 0x07, 0xE0, 0x21, vbytes[4], vbytes[5], vbytes[6], vbytes[7], vbytes[8], vbytes[9], vbytes[10] });
System.Threading.Thread.Sleep(5);
A.Channel.SendMessage(new byte[] { 0x00, 0x00, 0x07, 0xE0, 0x22, vbytes[11], vbytes[12], vbytes[13], vbytes[14], vbytes[15], vbytes[16], 0x00 });
GetMessageResults wrotevin = A.Channel.GetMessages(1, 500);
message = (BitConverter.ToString(wrotevin.Messages[0].Data).Replace("-", ""));
Console.WriteLine($"Response from wrotevin is {message}");
if (!message.Contains("7E8027B"))
{
Console.WriteLine($"Error!! Response from wrotevin {message}");
// do we quit or keep on going??
}
else Console.WriteLine("Write vin completed OK");

}
else Console.WriteLine("Vin must be 17 characters long.. Try again ");
Console.WriteLine("Press any key to exit.");
Console.ReadKey(); // delay
// APIFactory.StaticDispose();
Main();
}
gmtech825
Posts: 186
Joined: Fri Feb 24, 2017 11:27 am

Re: is this possible? copy and save oem cals

Post by gmtech825 »

yes it's the 2015 E92

my commands match yours essentially, But i'm manually typing them into a console. Maybe I'm not able to send them fast enough because I have to manually send them? I am sending a periodic tester present message also.
I need a decent way to automatically send these messages, But it seems most programs I find won't work with the tools I have.
User avatar
Gampy
Posts: 2331
Joined: Sat Dec 15, 2018 7:38 am

Re: is this possible? copy and save oem cals

Post by Gampy »

Quick hijack ...

gmtech825,

IIRC you have access to a MDI2, it would be much appreciated if you would test PCM Hammer Release 015 (Preview) using the MDI2 and post results in that thread.

Thank you.
Intelligence is in the details!

It is easier not to learn bad habits, then it is to break them!

If I was here to win a popularity contest, their would be no point, so I wouldn't be here!
Post Reply