PCM Hammer - new ls1 flash tool

They go by many names, P01, P59, VPW, '0411 etc . Circa 1999 to 2006. All VPW OBD2 PCMs.
User avatar
Posts: 405
Joined: Fri Feb 02, 2018 3:13 pm

Re: PCM Hammer - new ls1 flash tool

Postby NSFW » Fri May 22, 2020 4:52 pm

Also, before flashing it should check the voltage. If you want a bite-sized piece of work to get started with, this is probably it. We'd need a GetVoltage() in the Device base class, with overrides in the derived classes. Plus a GetVoltage in the Vehicle class that just calls this.device.GetVoltage(). And then have the GUI call vehicle.GetVoltage and check the results before kicking off the thread that does the reading or writing.

Implementing GetVoltage for each device might take some research but you'll have help.

This is probably the highest priority. I'll be very sad if someone's PCM gets bricked because their battery died mid-flash...
Please don't PM me with questions about tuning or flashing - start a thread instead. Thanks!

Posts: 3
Joined: Fri May 22, 2020 3:33 am

Re: PCM Hammer - new ls1 flash tool

Postby renat » Fri May 22, 2020 11:09 pm

NSFW wrote:
renat wrote:Hey everyone, just found the PCM Hammer soft on github today, I've ordered VXDIAG VCX straight away to check the soft out. I've got two LS cars and I'm a C# developer, hopefully I can be pretty useful here.


Cool! The logger needs a ton of work, how much time do you have? :)

Here comes a brain-dump that I've been meaning to put into writing for a while...

Right now you have to edit XML files by hand to tell the logger which parameters to use, and that's not user-friendly at all. To fix that, I'd like to reduce the log profile files to just a list of parameter IDs and units, like:

<profile>
<parameter id="VehicleSpeed" units="mph" />
<parameter id="EngineSpeed" units="RPM" />
</profile>

Then we'd have separate XML files to keep track of how the parameters are really defined.
There would be one to describe the standard PIDs that every PCM supports:

<parameters>
<parameter id="VehicleSpeed" name="Vehicle Speed" pid="0xD" length="1">
<conversion units="mph" expression="x*0.61" />
<conversion units="kph" expression="x" />
</parameter>
</parameters>

And there would be one XML file per operating system, containing the "extended" parameters whose addresses need to be reverse-engineered for each operating system:

<parameters OS="12593358">
<parameter id="ThrottleFollowerAir" name="Throttle Follower Airflow" address="0xFF980A" length="2">
<conversion units="g/s" expression="x/1024" />
<conversion units="lb/min" expression="x/24" />
</parameter>
<parameter id="ThrottleCrackerAir" name="Throttle Cracker Airflow" address="0xFF97F0" length="2">
<conversion units="g/s" expression="x/1024" />
<conversion units="lb/min" expression="x/24" />
</parameter>
</parameters>

(Half of the numbers in the XML examples are totally made up.)

With these XML files to describe what parameters exist, the logger UI could give users a list of parameters to choose from. So users could click an "edit profile" button which would open a dialog box with a DataGridView table that has a column of checkboxes to add/remove parameters, and a column of parameter names, and a column of drop-lists to pick the preferred units.


I can't tell you how many hours I can spend per week, but I can definitely dedicate a considerable amount of time for the project. "Needs a ton of work" sounds like a cool motivation for me. :) I can work on a GUI for the "edit profile" part if needed.
Last edited by renat on Sat May 23, 2020 1:00 am, edited 1 time in total.

Posts: 3
Joined: Fri May 22, 2020 3:33 am

Re: PCM Hammer - new ls1 flash tool

Postby renat » Fri May 22, 2020 11:15 pm

NSFW wrote:Also, before flashing it should check the voltage. If you want a bite-sized piece of work to get started with, this is probably it. We'd need a GetVoltage() in the Device base class, with overrides in the derived classes. Plus a GetVoltage in the Vehicle class that just calls this.device.GetVoltage(). And then have the GUI call vehicle.GetVoltage and check the results before kicking off the thread that does the reading or writing.

Implementing GetVoltage for each device might take some research but you'll have help.

This is probably the highest priority. I'll be very sad if someone's PCM gets bricked because their battery died mid-flash...


Yeah, I can work on that piece for sure. Have you ever had such an experience? :lol:

User avatar
Posts: 405
Joined: Fri Feb 02, 2018 3:13 pm

Re: PCM Hammer - new ls1 flash tool

Postby NSFW » Sat May 23, 2020 4:39 am

I haven't bricked a PCM that way, but I did have a close call... I flashed and then couldn't start my car because the battery was too dead. Had to call my wife to come out with jumper cables. Fortunately I was only a couple miles from home. :) (And I replaced the battery after that, too.)

If anybody wants to get deep into the microcontroller side of things... Solving this problem will make you a hero:

https://github.com/NationalSecurityAgen ... ssues/1244

Ghidra is a free / open-source alternative to IDA Pro for reverse-engineering. It supports the Motorola 68k instruction set, but the CPU in the P01 and P59 has a few additional instructions in it, which Ghidra does not support. If that was fixed, it would open up reverse engineering to a lot more people, partly because Ghidra is free, and partly beause Ghidra has a decompiler in addition to a disassembler.
Please don't PM me with questions about tuning or flashing - start a thread instead. Thanks!

Previous

Return to GM LS1 512Kbyte and 1Mbyte

Who is online

Users browsing this forum: No registered users and 5 guests