|
Introduction to ECU Chipping
by David Blundell
Please feel free to link to this article, but "mirroring" is highly discouraged, as you will not automatically receive updates.
How it all works
With the move from carburetors to fuel
injection, computers have assumed an important role in the proper
functioning of an engine. The level of precise control possible with a ECU
(Engine Control Unit - computer for running an engine) can not only
allow for greatly improved fuel economy, but can also allow for fine
tuning of an engine to a degree that is arguably impossible with the
best carburetors. Many ECUs,
including those made by Honda, do data interpolation, allowing them to
intelligently compensate for engine conditions that fall "between"
known states, allowing for an almost continuously variable response to
varying engine conditions. Additionally, the ECU
can make small corrections to fuel/timing based on the state of various
engine sensors. It is probably fairly fair to say that from the
factory, most manufacturers tune for fuel economy, emissions and poor
quality gasoline as opposed to power and race gas.
Honda is no exception to these rules about
tuning. Basis for this can be seen very clearly by comparing
European/US fuel and timing maps to Japanese timing maps for the same
engine. Japanese have gasoline that is on average a minimum of about 10
octane points greater than gas sold in the US. Comparing JDM and USDM/EDM timing curves generally show the JDM
maps having several degrees more spark advance, reflecting the
manufacturer's expectation of better quality gasoline. You have to
wonder about how much 205 HP out a 1.8L (ITR) can be improved on within
the constraints of pump gas. It wouldn't surprise anyone if another
5-10 peak HP and a considerable amount of low-midrange torque could be
squeezed out of an ITR by HOURS on a dyno, and some changes to the ECU
program. This goes to show that even on Honda's "performance" motors,
very conservative assumptions are made about the quality of gasoline
used. If you are willing to run high octane gasoline consistently,
significant performance improvements can usually be found by tuning the
car for the better quality gas.
This does bring us to an important point. Tuning
is best something done on a dyno that can simulate loads (such as a
Dynapack or Mustang dyno). Dynojets are only useful for tuning a much
narrow range of operating conditions, namely acceleration at wide open
throttle through the rev reange. When a Dyno is not available,
something to give an objective measure of how the car is responding is
a good second choice. Wideband O2 meters and EGT probes can give you some idea of what is going on. Widebands generally provide more direct information about Air Fuel Ratio, but they are generally ineffective for timing adjustment. EGT probes tell how how the exhaust leaving a motor is, which can be used to infer a lot of information. If Air Fuel Ratio is left relatively constant, most changes in EGTs can be attributed to timing adjustment. Air Fuel Ratios will cause changes in EGTs so make sure you have your AFRs nailed reasonably close to your target before trying to use an EGT to tune your timing. This article in intended as a brief introduction, so enough of that.
Don't despair if you don't have access to a dyno, however. Accelerometers (like the G-Spot) measure acceleration forces with fairly good (<1%) precison. If you can record this information as part of your Data Logging
procedure, you can do some math knowing the weight of the vehicle and
its gearing to come up with horsepower and torque output figures for
the car. Again, this method has fairly good precison but relatively poor accuracy.
The numbers themselves don't mean a lot, but if you can produce
significant and consistent improvements, you have tuned the car better.
A final note about tuning tools - the "butt
dyno" is a totally inappropriate way to determine how the car is
performing - most of the changes you will make to a computer program
will be subtle enough that you probably will not be able to "feel" them
accurately. The butt dyno has almost zero precision - I've had many
kids report "very different" results from no real changes to a chip.
Also, the butt dyno is much better for detecting rapid increases in
torque than consistently more torque. Consistent torque is what makes a
car fast, not how quickly torque increases. What this means concretely
is that a car may "feel" faster on the butt dyno because it has sharp
spikes of torque, but in reality it is slower than a car with a
smoother powerband with gradual increases in torque.
Beware of most aftermarket "chips": more often
than not these programs just dump more fuel and increase timing greatly
while doing things like raising revlimiters far beyond safe levels.
There are very limited gains to be had from most "performance chips."
Tuning not "chipping" generally produces usable, real world gains. That
being said, changing the program of a ECU is generally not that tricky. First, it would probably be wise to focus on some basics of how ECUs work so that it is more apparent where we could makes changes to have a positive effect on performance.
Most ECUs seem to operate in two modes. In one mode, the ECU
is monitoring as many engine sensors as possible, trying to get the
best fuel economy. This mode is normally referred to as "closed loop"
because it is a closed feedback system. In the other mode, the ECU
runs a much simpler routine that is most often engaged at wide open
throttle. This mode is normally called "open loop" because it does not
continuously monitor sensors and compute fuel correction. Open loop
conditions are generally stored in the form of a table where the ECU
"looks up" fuel and timing values using a relatively simple algorithm.
Modifying fuel and timing tables is the most basic way to retune a car,
however it bears remembering that the ECU
will be making adjustments to whatever information it has. In most
cases, open loop table values serve as base values for closed loop fuel
correction routines to adjust, but it is difficult to change the exact
behavior of adjustment routines. Problematic closed loop correction
routines require an understanding and possibly a re-write of the code
running the ECU to be fixed properly.
You can completely change the operating
characteristics of an engine by changing the fuel and timing tables
around. As an example, a PM6 (88-91 Civic/CRX Si) ECU
is normally used to run a D16A6, ~100HP. By little more than changing
the fuel, ignition tables and the revlimiter, a PM6 can run a DOHC
ZC, ~135HP, like it came out of the factory. Additionally, little more
than even more fuel/ignition map changes and revlimiter changes are all
that is needed to make it run a B18A/B18B or a B20B! Virutally the same
ECU hardware runs a D16Z6 SOHC vtec and a B16A2/A3 DOHC vtec motor - swapping chips will let one motor's ECU
run the other motor, and vise versa. In another more extreme example, a
friend of mine recently had success running a 2G accord engine with a
GM computer!
As I hope you have gathered, there is a certain
amount of art and a lot of skill/experience involved in tuning a car
well. An adequate explanation of how to tune a car perfectly is far
beyond both the scope of this article and my expertise. Please, be
careful changing your engine's fuel/timing tables - understand that
timing changes can completely change the operating characteristics of
the engine! Please be very careful, especially when doing baseline
tunes - you can destroy your engine in seconds with a bad program. Use
proper tools (wideband, EGT, accelerometer, dyno) whenever possible. We
are now going to assume that you now know what fuel
and timing adjustments you need to make, regardless of whether this is
actually the case. With that hefty disclaimer out of the way, the tools
and methods from this point forwards are going to become a lot more
specific:
Hexediting and Raw ROM editing
Hex is base a 16 numbering system. Instead of
digits from 0 to 9, hex uses digits from 0 to F. So A = 10, B = 11, ...
F = 15. Typically we distinguish hex numbers from other numbers by
either putting 0x at the front of the number or putting an 'h' at the
end. i.e. 0xFE and FEh are both the hex number FE.
Fuel and timing tables are stored in the middle of the code running the ECU.
Distinguishing them from code is generally not THAT hard because they
"look" different than the pseudorandom data that runs the computer. A
hex editor will let you manipulate the raw data in the ECU. WinHex
is a quality, shareware hexeditor available from www.download.com. You
might want to grab some checksum utilities from www.keil.com as they're
generally useful.
In winhex:
So, you've found the fuel and timing tables in your ECU's
program, edit away. How do you interpret all this? Well, first you mut
know about the addresses. Each byte has its own address referenced by
the left most column (the "offset" column) and the top row. As an
example, look to the bottom right corner of the above picture. Notice
the byte that has 6f as its value. Follow the row to the corresponding
row in the offset column and you will see a 3ef0. Then follow 6f's
column all the way up to the F on the top row. Put those values
together and you have the address of the 6f byte: 0x3eff.
Now what? This data is the binary representation of the actual machine code that runs in the ecu's processor and ROM data that the ECU
uses. To figure out what it does you must use a disassembler to convert
the binary code/data into the machine code instructions which are more
human readable.
Most ECUs have a Check Sum routine - the checksum gods must be appeased after any changes to the ROM
are made or the car will not run properly. It would take a long time to
tune a car if everyone only had hexeditors at their disposal. In many
cases, ROM editors are available to assist in the tuning process.
ROM Editors
Remember, anything you can do with a ROM editor can be done by hand with a hexeditor too.
Although most ROM Editors are specific to one or more ECUs, most are fairly similar visually - Understanding Maps
has a lot of pictures and more hands-on explanation of editor-based
fuel and timing table adjustment. Most of the concepts will apply to
any and all editors.
Ghettodyne (OBD0)
Ghettodyne (available at http://www.ghettodyne.com) is a free ROM editor that was the first to support the PM6 (88-91 CRX/Civic Si) ECU. It is no longer being actively developed. To give you an idea of what ghettodyne looks like:
Turboedit (OBD0)
TurboEdit has since largely replaced Ghettodyne as the most actively developed OBD0 ROM editor. It supports ROMs based off the PM6 and PM7 codebase at this point. Close communication between Team OBD0
and Jason Parker, TE's author, ensure that it supports the latest
features quickly. As you can see, the interface is very similar to
earlier editors:
BRE (Ben's ROM Editor - OBD0 Vtec)
BRE is arguably one of the best editors for OBD0Vtec ECUs, like the PR3 and PW0. It runs under Windows. Hopefully Ben will come by and add more information about it.
Uberdata (OBD1)
Uberdata was the first publicly available ROM Editor for OBD1
Civics/Integras, written by Blake Warner (Uberteg). It uses primarily
the P72 and P75 code, but has been adapted to run almost any Honda
motor. It has solid boost support, support for the Transtronics
Romulator, and recently added support for inline assembly scripting. It
runs on windows.
Crome (OBD1)
Crome is the first scriptable OBD1 ROM Editor, written by John Cui. Core features are designed for the JDM P30 "203" code, but it has support for many other ROMs to lesser degrees. The new version of Crome (March 04) supports the PGMFI Real Time Programming
solution, and has improved boost code compared with earlier versions.
It also has a new plugin interface allowing HTML based front ends to
scripts.
Chipping an ECU: hardware
Chips and ROM Burners
At this point, the assumption will be made (regardless of whether it is actually true) that you have successfully created a new ROM image and you want to put it into an ECU. The next step towards reprogramming is to take the electronic image you have created and program it into an EPROM(Erasable Programmable Read Only Memory). EPROMs for automotive use are generally 128K, 256K or 512k in size. Almost all 88-95 Hondas use a 27 C256 EPROM. There are many kinds of Chips For ECUs that you can use. Pay attention to the speed of the chip and whether your Rom Burner can program it.
ROM burners are the devices used to program chips. It does not really matter which model you get as long as it can program Chips For ECUs. The Rom Burner Wiki entry has a list of some common types of burners used for ECU
programming, and has links to reviews and prices in some cases. It
doesn't matter WHICH programmer you have; being able to program the
right chips matters.
Soldering and Desoldering gear
I purchased a Xytronics soldering and Desoldering Station
with temperature control for under $400 shipped from Howard Electronics
Inc. Professional desoldering tools with integrated vacuum sources can
be obtained readily from ebay or other merchants - Pace and Metcal gear
is always on ebay. I've spoken with plenty of people who purchased
professional gear for under $100 that has worked well for them. If you
do a lot of ECUs, a quality Desoldering Station will be one of yoru favorite tools for the time and suffering it saves.
On the cheaper/DIY side, there are several other tools that work adaquately. A cheap Desoldering Iron will work pretty well, especially with the right tip and some small mods. Often, an existing Desoldering Tool can be modified to make it more effective. Desoldering Braid can be very effective when used properly, and can even be superior to a Desoldering Station in some cases.
A quality Soldering Iron
is another tool that you will thank yourself for purchasing every time
you use it. Small tips and less power will make things easier on you.
Temperature control is a nice feature, although by no means required. I
have had a lot of luck with the cheapie 12-15W 3-prong blue Rat Shack irons in a pinch.
Learning To Solder and Desoldering Tips
contain a lot of good tips for those starting out, but there really is
no substitute for practice. Working on a couple of sacrificial ECUs/circuit boards prior to an ECU
that needs to go in your vehicle is probably a really good idea. Much
like welding, getting comfortable with the iron, solder and workspace
you have is key! I messed up about half of the first dozen ECUs
I did. Most were simple poor solder joints that were easily fixed,
although I cooked two PR3s by not desoldering them fully and ripping
the pads + traces off the board. Repairing a destructive soldering
adventure like that can be very stressful and difficult. After buying
my Desoldering Station, I've fried approximately 3 ECUs
out of 200. (and one of those I still think was a bad
alternator/voltage reg...) Part of this was certainly practice, but
having the right tools made a big difference.
OBD0 ECU Chipping
If you have a OBD0 ECU, chipping the ECU might not be straightforward. Almost ALL 90-91 PM6, PM7, PR4 and PP5(with catalytic converter) ECUs had external EPROMs, and are easy to change the program on. Almost all 88-89 PG7, PM6, PM7 and 88-91 PM8 ECUs did not have an external EPROM. It is possible to chip these ECUs, but it requires considerably more work and is beyond the scope of this article. See Chipping An88-89 ECU for more details. The following ECU is a PM7 that does not have an external ROM:
If you are luckier and have an ECU with an external EPROM from the factory, the ECU you have will look more like this:
An OBD0 ECU with an external EPROM
is very simple to chip. First, cut all 28 pins with a razor blade or
utility knife. BE CAREFUL YOU DO NOT SLIP AS YOU CAN PERMANENTLY DAMAGE
THE CIRCUIT BOARD. It is not absolutely necessary to do this before
desoldering, but removing the chip will make it much easier,
particularly if you do not have a good desoldering station. Once the
original ROM is desoldered and removed and you can see through the holes in the circuit board, add a socket for an EPROM and then place the new ROM you have created into the socket.
OBD1 ECU chipping
Now, with your new EPROM ready, crack the case of your ECU. All 92-95 ECUs made by Honda were able to accept an external EPROMs, even if they did not come with one from the factory. All 92-95 ECUs use the same procedure for chipping. Beginners beware of Japanese ECUs as they use surface mount components that are marginally harder to work with than US/European ECUs. See here for Chipping JDMP30 ECU.The section of the example P28 93 Civic Si ECU
that is important for chipping is outlined in red in the following
picture: (Honda was nice and outlined it in a dashed white line for you
on the board too)
First, you must de-solder the parts silkscreened
in white on the circuit board. Once all the pads are desoldered and you
can see through holes for components in the red section above, you need
to start soldering in components. No bizarre components are used -
everything should be readily obtainable from your local electronics
store, Radio Shack, Digikey, Newark Electronics or just about any other
electronic parts distributor.
Honda was nice enough to label on the board where everything goes. Place the 74 HC373
chip on the board where indicated and solder it in place. R54 should be
filled with a 1k to 1.2k resistor(the exact value does not matter). C51
and C52 are 0.1µf ceramic disc capacitors(12V or better will work
fine). Place a 28 pin socket for the ROM
where 27256 is marked. (BTW, spend a bit more money and get the much
higher quality machined-pin sockets instead of the cheapy bent metal
leaf type.) Once the socket is in place, place a the ROM you programmed earlier in it. Finally, connect J1 with a small wire to enable the external ROM. No changes other than cutting J1 are needed to restore the ECU to its original state.
Here you can see a chipped P28 ECU. The person who chipped it used a socket for the 74HC373 as well as for the ROM
socket, and used a real jumper instead of just connecting J1 with a
wire. Nevertheless, it will give you an idea of what it should look
like when you are done:
If you have a OBD2 ECU, you are just going to have to wait or buy commercial Tech Tom gear. It is possible to remove the 66K MCU and replace it with another OTP 66P507 or FLASH 66Q589 (As the case may be) but this is far from trivial. Little is known about OBD2 code. See Chipping OBD2 by Doc
Troubleshooting
At this point, you should have a working ECU with a new program. If you get a solid red light on a OBD0 ECU or a continuous CEL on OBD1
car and the car runs terribly with a very low rev limit and a stumbling
idle, you probably have a bad connection. If the same thing happens
30-45seconds after you start the car, you probably failed to pray to
the checksum gods. If the car runs weird, try putting a stock program
in an verifying that the fuel/timing changes you made were not
detrimental.
Conclusion
Hopefully, at this point, you have learned a little about ECUs, how they work and break, and how to modify them. If you have further interest check out the rest of the Wiki, or Further Reading. The ECU is just a tool allowing precise fuel and timing delivery - knowing how to modify the ECU
itself is only half the battle to having a well tuned car. Spend the
time and budget the money for the right tools to tune the car, not just
chip the ECU.
|