is this possible? copy and save oem cals
Re: is this possible? copy and save oem cals
Hmmm, haven't heard of that one, google doesn't show any results either?...
According to chemistry, alcohol is a solution...
Re: is this possible? copy and save oem cals
that's the GM number, other part numbers on it :1310101000000x, 848032280, 1116355025809svp, 28367418 3506 ag02877, pdy-31-1
Re: is this possible? copy and save oem cals
so if I was going to try and delete the VIN. where would I start?
Re: is this possible? copy and save oem cals
Does anyone know if Tunercat software will help me out?
- antus
- Site Admin
- Posts: 8261
- 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
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.
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
Re: is this possible? copy and save oem cals
I have seen a program called MDI programming system. It works on some old stuff.
Re: is this possible? copy and save oem cals
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?
any input?
-
- Posts: 590
- 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
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();
}
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();
}
Re: is this possible? copy and save oem cals
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.
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.
Re: is this possible? copy and save oem cals
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.
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!
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!