PCM Hammer
The latest release is listed at the top of this page:
https://github.com/LegacyNsfw/PcmHacks/releases
Click the Assets link below the release description, and then click the zip file name to download it.
Unzip the contents into an empty directory, run PcmHammer.exe, select your device type, and proceed with caution. This stuff is very new, and you're a beta tester. That said, reading is perfectly safe, and I've done a couple dozen calibration updates on my 2002 Z06 with no ill effects.
For more information about this project and what you can do with it:
https://github.com/LegacyNsfw/PcmHacks/wiki
Credits:
Antus from pcmhacking.net - he's taught me a ton about what makes PCMs tick
Tazzi from pcmhacking.net - if you're using a J2534 tool, you owe him a beer
PeteS160 here at ls1tech.com - fluent in J1850 VPW, instrumental in recovering my PCM after I hit it with the hammer.
Dimented24x7 from thirdgen.org - he's been offline for a couple years, but he laid the foundation for this.
EagleMark from gearhead-efi - another pioneer who contributed a lot the community. May he rest in peace.
P.S. Don't use this in your car if you need that car to get to work. Let's stick with project cars for a while until we're all confident that this **** can really be trusted.
Last edited by NSFW; Mar 5, 2020 at 01:33 PM. Reason: Release #12 is out
Before you try this yourself, keep in mind that you can probably count the number of PCMs that have been flashed with PCM Hammer using your fingers. For the number of PCMs that have been flashed in a car, you might only need your thumbs. I strongly suggest letting people with PCMs on their workbenches play with this stuff for a while before you try it in your car. And definitely don't use this in your car if you need that car to get to work. Let's stick with project cars for a while until we're all confident that this **** can really be trusted.
Also, let's talk about what happened the first time I flashed my car: it stopped working. The actual copy operation went perfectly, but the file that I was flashing from had bad checksums (because I was using Tuner Pro with an XDF that I created myself, and that XDF still had no checksum information in it!). Not only would the PCM not run the engine, it wouldn't accept a new flash, so I couldn't put the old file back on it. There is a workaround for this, but it requires removing the PCM, popping the back of the case off, and grounding a pin before you reflash it. That worked, and the same PCM is back in the car now and working perfectly.
And then I added some code to PCM Hammer so that it will validate checksums before it will let you flash. So hopefully nobody else will run into exactly that kind of problem again...
But we still haven't added code to compare the OS ID in your bin file with the OS that's on your PCM. So the app will cheerfully flash a calibration from one OS into a PCM that's running a different OS, and you'll be taking apart your PCM before you drive the car again. So, be careful.
So far, we haven't truly bricked anybody's PCM.
So far.
The least risky way to use PCM Hammer is to read the bin file from your PCM, tune it using Tuner Pro and a known-good XDF, and write the updated file back to the PCM. But I still wouldn't recommend doing that with your daily driver until more cars have been reflashed than you can count on your fingers. And toes.
Happy new year!
I don't have any windows machines, but looking at the kernel code, it appears all (or at least the vast majority) of the non-UI code is happily portable to any other OS. I suppose it wouldn't be much work to replace the UI with config files and a command line invocation.
Now, an entirely different question: Do y'all have any sort of reference schematic, original or reverse-engineered or otherwise, of either the whole PCM or the most relevant portions? PCB layout files are (I'm sure) asking for far too much, of course.
I'd be delighted to see it ported to other platforms, and yes that should just be matter of rewriting the UI. We had a guy working on a command-line version for Linux a while back. Unfortunately his employer objected so he had to pull the code... He only had a couple hundred lines of code written if I remember right, but it was enough to show that it could be done.
Good timing, by the way... You made me realize that the code I added tonight really belongs in the library layer rather than the UI layer. I'll fix that tomorrow.

I have no schematics, but I do have data sheets for the CPU, a couple flash chips, and the data link controller (the OBD2 interface). I'll send you copies if you shoot me an email. Nsfw, outlook, you can guess the rest.
I tend to add reference docs right into my git repos in a docs directory, of course git doesn't really like to track non-text files but I don't really ask its opinion. Hah! But I dunno if certain git web hosts (like github) complain.
https://github.com/LegacyNsfw/PcmHacks/releases/tag/2019.01.16.02
The biggest improvement in this release is that the app will prevent you from writing if the operating system in the PCM doesn't match the operating system in the file you have selected.
If you run it while connected to the internet, it will check github for a new release. Ordinarily it will just say "Thank you for using PCM Hammer" when it starts up, but when have a new release that will change to something like "Hey, we have a new release!"
Last edited by NSFW; Jan 17, 2019 at 03:09 AM.
The Best of Corvette for Corvette Enthusiasts
http://www.gearhead-efi.com/Fuel-Inj...ed-is-TunerPro)
But please keep an eye on that thread - the guy made those XDF files unknowningly used a Tuner Pro checksum plugin which had the author's name stripped out by a third party. (Probably someone who was also selling other free tools on ebay with credits and copyright info stripped out - it's a long story.) The plugin author was Antus from pcmhacking.net, who also happens to be one of the biggest contributors to the PCM Hammer project. Antus and LRT (the XDF author) are going to resolve the plugin issue, so there will probably be an update soon. The functionality won't change, it's just the principle of the thing.
As stated above, I am using an AVT-852 box. I was able to successfully read the PCM from my '01 C5 (0411), and was able to open that saved file in TunerCATS. I have not tried writing to the PCM because I don't have a spare LS one sitting around. Next time I go to the junkyard I'll grab one just in case and give it a shot.
The "Read Properties" button seems to sporadically not-work when connected to the Corvette. Unfortunately I'm a moron and didn't get the "Results" log, but I have attached the Debug Log where the failure happens. You'll click it, get an error in the Results (I believe about the VIN), then click it again and usually it works fine. It happens once every 3 or 4 times.
For ***** and giggles, I connected this to my Regal (12209624) and wasn't able to do anything. However, I do have a PCM sitting here that I believe is from an '03 GP GT (also PN 9624) and connected it up to my offboard and actually was able to pull some data back from the "Read Properties" function, but then the application seems to loop and lock after "Reading Serial Number: xxxx". I know you haven't baked this support in yet, but thought it seemed interesting enough. A read is not possible, obviously, and throws back an error about the unlock response being an invalid length.
If there's anything you'd like me to try or do with either the 'Vette or 3800 PCMs, let me know. I'm happy to help.
Last edited by digitaloutsider; Jan 28, 2019 at 08:18 PM.
The PCM is unreliable for about ten seconds after being powered up, how long had it been powered when you made that log? The PCM on my desk will fail about half of the "get properties" operations during the first ten seconds after being powered up. This is also why the read and write operations start with waiting ten seconds.Regardless of how long the PCM was powered, there's a line at the top of the log that says "[06:41:27:253] Failed to disable AVT Acks" so that suggests that something else was going wrong. The AVT stuff was written by Antus so I'll follow up with him to see if he knows what would cause that, and if that would cause the sort of trouble you saw.
To ensure that this wasn't a PEBCAK issue, I'm on my tuning laptop in the garage right now. I left the key on for 30 seconds before trying again, and this is the error as displayed in the Results tab:
[10:48:27:862] PCM Hammer 004 [10:48:28:080] AVT 852 Reset OK [10:48:28:080] AVT Firmware 2.6 [10:48:49:202] VIN query failed: Truncated [10:48:56:332] VIN: 1G1YY22G7151***** [10:48:56:410] OS ID: 12593358 [10:48:56:488] Calibration ID: 12204901 [10:48:56:566] Hardware ID: 9386530 [10:48:56:659] Serial Number query failed: Truncated [10:48:56:737] Broad Cast Code: DHYN [10:48:56:815] MEC: 0
[10:48:27:862] PCM Hammer 004 [10:48:27:862] Initializing AVT (842/852) on COM3 [10:48:28:080] Sending 'reset' message. [10:48:28:080] AVT 852 Reset OK [10:48:28:080] Looking for Firmware message [10:48:28:080] AVT Firmware 2.6 [10:48:28:096] Set VPW Mode [10:48:28:096] Failed to disable AVT Acks [10:48:49:171] TX: 6C 10 F0 3C 01 [10:48:49:171] RX: E8 FF 60 03 [10:48:49:171] AVT: no message waiting. [10:48:49:171] TX: 6C 10 F0 3C 02 [10:48:49:187] RX: 88 25 28 07 00 [10:48:49:187] AVT: no message waiting. [10:48:49:187] TX: 6C 10 F0 3C 03 [10:48:49:202] RX: 6C F0 10 7C 01 00 31 47 31 59 59 [10:48:49:202] AVT: no message waiting. [10:48:49:202] VIN query failed: Truncated [10:48:49:374] AVT setting VPW 4X [10:48:49:889] TX: 6C 10 F0 20 [10:48:49:889] AVT setting VPW 1X [10:48:49:998] TX: 6C 10 F0 20 [10:48:56:254] TX: 6C 10 F0 3C 01 [10:48:56:269] RX: 6C F0 10 7C 01 00 31 47 31 59 59 [10:48:56:285] AVT: no message waiting. [10:48:56:285] TX: 6C 10 F0 3C 02 [10:48:56:300] RX: 6C F0 10 7C 02 32 32 47 37 31 35 [10:48:56:300] AVT: no message waiting. [10:48:56:300] TX: 6C 10 F0 3C 03 [10:48:56:332] RX: 6C F0 10 7C 03 31 33 34 37 37 36 [10:48:56:332] AVT: no message waiting. [10:48:56:332] VIN: 1G1YY22G7151***** [10:48:56:394] TX: 6C 10 F0 3C 0A [10:48:56:410] RX: 6C F0 10 7C 0A 00 C0 28 CE [10:48:56:410] AVT: no message waiting. [10:48:56:410] OS ID: 12593358 [10:48:56:472] TX: 6C 10 F0 3C 08 [10:48:56:472] RX: E8 FF 10 03 [10:48:56:472] AVT: no message waiting. [10:48:56:472] Received an unexpected response. Attempt #1, status Error. [10:48:56:488] RX: 6C F0 10 7C 08 00 BA 3B 65 [10:48:56:488] AVT: no message waiting. [10:48:56:488] Calibration ID: 12204901 [10:48:56:550] TX: 6C 10 F0 3C 04 [10:48:56:550] RX: A8 83 10 13 0F 0D [10:48:56:550] AVT: no message waiting. [10:48:56:550] Received an unexpected response. Attempt #1, status Error. [10:48:56:566] RX: 6C F0 10 7C 04 00 8F 3A 22 [10:48:56:566] AVT: no message waiting. [10:48:56:566] Hardware ID: 9386530 [10:48:56:628] TX: 6C 10 F0 3C 05 [10:48:56:628] RX: E8 FF 28 03 [10:48:56:628] AVT: no message waiting. [10:48:56:628] TX: 6C 10 F0 3C 06 [10:48:56:644] RX: 6C F0 10 7C 06 4C 44 57 47 [10:48:56:644] AVT: no message waiting. [10:48:56:644] TX: 6C 10 F0 3C 07 [10:48:56:659] RX: 88 25 28 07 00 [10:48:56:659] AVT: no message waiting. [10:48:56:659] Serial Number query failed: Truncated [10:48:56:722] TX: 6C 10 F0 3C 14 [10:48:56:722] RX: 6C F0 10 7C 07 31 31 35 38 [10:48:56:722] AVT: no message waiting. [10:48:56:722] Received an unexpected response. Attempt #1, status UnexpectedResponse. [10:48:56:737] RX: 6C F0 10 7C 14 44 48 59 4E [10:48:56:737] AVT: no message waiting. [10:48:56:737] Broad Cast Code: DHYN [10:48:56:800] TX: 6C 10 F0 3C A0 [10:48:56:815] RX: 6C F0 10 7C A0 00 [10:48:56:815] AVT: no message waiting. [10:48:56:815] MEC: 0
[10:48:56:659] Serial Number query failed: Truncated
I think what his happening, is that there is lots of communication on your car data bus, and there is (was) a very narrow window of time where the avt is in VPW mode, and trying to turn on the filter, where an unfiltered packet can get through and confuse pcm hammer. Ive added a fix here https://github.com/LegacyNsfw/PcmHac...4a560397515429
I'll PM you a compiled copy. It'd be great if you could test and report back. This copy still tests fine on my bench.











