Close
0%
0%

PCM Hammer

Open source tuning tools for V8-powered GM vehicles from the early 2000s.

Similar projects worth following
PCM Hammer is a tool for reading and writing the firmware on the powertrain control modules that were used in V8-powered General Motors cars and trucks from roughly 2000 to 2007. (And maybe soon V6 as well).Typical usage goes like this:1) Use PCM Hammer to read the firmware image from the PCM2) Use other tools, for example Tuner Pro, to edit the various parameters and tables that govern how the engine and transmission behave.3) Use PCM Hammer to write the modified firmware back to the PCM.4) Drive, and use PCM Logger (included) to log data from the PCM in real time.5) Study the logs, figure out what needs changing.6) Return to step 2 and repeat until you get the results you want.To talk with other users, check out the GM LS1 section at pcmhacking.net!

To get a copy, to go our GitHub site via this handy URL: https://pcmhammer.org - then go to the Releases section and get the most recent one. You'll find the a download link for the zip file hidden under the "Assets" button below the release description.

Documentation is on the wiki at the GitHub site.

The following is current as of 2020/03/06:

Working:

  • Read firmware from the PCM
  • Write firmware to the PCM
  • Compare PCM firmware to saved files using CRC
  • Change VIN (useful for replacing a damaged PCM with one from a junkyard)
  • Supports P01 and P59 PCMs
  • Supports ELM-based, AVT, and J2534 interface devices
  • Data logging

Needs improvement:

  • AVT and J2534 device communication isn't 100% reliable. The app will retry, so no harm is done, but the retransmissions slow down reading and writing a little bit. (They are still much faster than ELM-based devices though.)
  • The collections of parameters for data logging ("Log profiles") are basically just proofs of concept, they should be refined further

Potential future features:

  • Support reading and writing for P04 PCMs from V6-powered cars of the same era 
  • Support reading and writing for E38 V8 PCMs.

Supported devices:

  • ObdDiag.Net's AllPro (Featured on Hackaday)
  • ObdLink ScanTool SX and LX
  • AVT 852
  • Most J2534 devices that support J1850 VPW
  • Coming soon: OBDX Pro (already supported, but not shipping yet)

Credits:

Antus - He and Dimented24x7 created the first free tool for reading and writing (LS1Flash) and he contributed enormously to this one.

Dimented24x7 - For his work on LS1Flash, for sharing his disassembly of a 411 operating system, and for the first free definition (XDF) of a 411 operating system's calibration data.

NSFW - Tried to write PCM Hammer despite knowing far too little about the hardware side of things... Was rescued by everyone else listed here.

EagleMark from Gearhead-EFI.com and other forums - he contributed immensely to the LS hacking scene long before this app came about.

PeteS - He speaks J1850 VPW like a native, and tortures PCMs for sadistic pleasure. His troubleshooting and testing has been invaluable.

Tazzi - His code made it possible for PCM Hammer to support J2534 devices. 

(PeteS and Tazzi are also the minds behind the soon-to-be-released OBDX Pro.)

LRT from Gearhead-EFI.com, cmaje from PcmHacking.net, and lots of others - XDF files

Gampy from PcmHacking.Net - bug fixes, testing, UI improvements

BoredTruckOwner from LS1Tech.com - collecting, sorting, organizing, and maintaining a collection of XDF files on GitHub. These were previously scattered across various forums and it's great to have a centralized place for them now.

  • 1 × Windows App Written in C#. The GUI is built for the .Net Framework, and the core logic is built for .Net Standard. In theory the core logic could be incorporated into an Android or Linux app.
  • 1 × Read/Write Kernel This is a small amount of C code (8kb compiled) that executes in RAM while the flash chip is read, erased, and re-written.
  • 1 × Interface Hardware See the "Supported Devices" page in the wiki at GitHub for a list of devices.

  • 1
    Building PCM Hammer

    Most of PCM Hammer is C#, and can be built with Visual Studio Community Edition. The library targets .Net Standard and the Windows apps target .Net Framework. With those installed, just open the Apps\PcmApps.sln file and you're ready to go.

    A small but essential part of PCM Hammer is C code for the 68332 CPU that runs these powertrain control modules. This is in the Kernels directory, and you'll find links to the toolchain and build instructions in the ReadMe file in that directory.

  • 2
    Reading the firmware from your PCM

    Reminder: this app currently only supports the "P01" and "P59" powertrain control modules. These were used in some (but not all) V8-powered cars and trucks from roughly 2000 to 2007.  

    1. Press the Select Device button and choose your OBD2 interface type..
    2. Press the Read Properties button to confirm that the app can talk to your PCM. This will list a few properties of the your PCM. The "operating system ID" will be useful later, so copy it and save it somewhere.
    3. In the Tools menu, pick Read Entire PCM.
    4. Be patient. This may take a while, depending on your interface hardware and PCM type.
    5. Save the resulting to file. Consider naming it after your car, the year and month, and/or the operating system ID mentioned above.
  • 3
    Reflashing your PCM

    Reminder: this app currently only supports the "P01" and "P59" powertrain control modules. These were used in some (but not all) V8-powered cars and trucks from roughly 2000 to 2007.  

    This gets a bit complicated, because there are three distinct regions of the flash chip that serve different purposes. Before flashing, consider what you're trying to accomplish...

    We expect that most users will just want to update the calibration (aka the "tune"), which is why the Write Calibration button is prominently featured on the main window.

    In some cases it might be useful to upgrade the operating system in your PCM. When you update the OS, you must also flash a calibration that works with that OS. Operating system updates probably won't be very common, so the "Write OS & Calibration" option is in the Tools menu.

    In some cases you'll want to replace the entire contents of the flash chip, for example if you're replacing a defective PCM with a new (used) one from a scrap yard. In this case you'll want to do "Write OS & Calibration" followed by "Write parameters." The parameter section of the flash chip contains the VIN and other data that binds the PCM to other modules in the vehicle. Together, these two operations rewrite the entire contents of the flash chip. Your new PCM will be indistinguishable from the one that your .bin file was read from.

    To write:

    1. Press the Select Device button and choose your OBD2 interface type..
    2. Press the Read Properties button to confirm that the app can talk to your PCM. This will list a few properties of the your PCM. 
    3. Choose the write operation, as per the instructions above.
    4. Be patient. This may take a while, depending on your interface hardware, PCM type, and how much of the flash memory you're rewriting.

View all 4 instructions

Enjoy this project?

Share

Discussions

Selcouth wrote 12/04/2020 at 17:21 point

Sounds promising but I wish I could find more information about this project. I would assume that it is necessary to decode a VIN number https://vingurus.com/decoder before writing the firmware on the powertrain control modules of V8-powered General Motors cars and trucks (2000 to 2007). Anyway, we will see how the project goes.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates