beepee
how hard can it be?
- Joined
- Sep 25, 2008
- Location
- Southern MD
Update: 10/26/2012
So, I'm out of the LH game right now (and have been for a while). If you want a chip, please contact thelostartof. To everyone who bought a chip from me, thanks!
Update: 8/14/2011
www.jetronic.info IS BACK UP!!
If you are getting 'Page not found' errors it is because the page you are trying to view hasn't been created yet. Jetronic.info is a Wiki. I strongly encourage all of the chip-tuners and Ostrich users to register and share their experiences so we can build a comprehensive guide.
My hosting provider (123 Systems) deleted my VPS on accident and did not have a backup. Fortunately, I had written some scripts to do nightly backups so no data was lost!
E-mail registration is temporarily down while I reconfigure/lockdown sendmail...
----------------
Update: 8/03/2011
Because there are many folks working on LH besides myself, I have created a small, wiki-style site at:
www.jetronic.info
This site contains a file library that includes all of the factory BINs as well as the latest XDFs.
It is, naturally, a work in progress. Several folks have already contributed to the site, and when i have time and energy, i've been trying to gather all of the tidbits of LH-hacking related info (from turbobricks and other sites) and put it together in a meaningful way. ipdown has also added information relating to the more technical side of LH.
I welcome everyone to join and contribute!
----------
I have put together a package for tuning LH 2.4 9xx series ECUs and (chippable) EZKs. I am also actively developing a comprehensive XDF for the fuel ECU. New to this? Scroll down to "What is this?" heading below and start reading!
Last update: 4/19/2011
It's been nearly a month since I've updated this post. Blew up my car, working on a new job, etc. But! Every spare moment has been spent here:
And, after a bunch of coding, testing, and some frustrating issues with RS232 communication, I'm coming out of the lab, and now it's time to start datalogging folks:
What this requires:
1. Modified VAG-COM KKL Cable from eBay
2. Ostrich or chip burner
3. Laptop
4. Modified BIN and XDF: Download Here: beepee-logpack-v1.zip
5. Patience
Once you get it, open up your KKL cable, de-solder the OBD2 connector, and wire it as shown:
Or, alternately, you can go hard and do what Kenny did:
The datalog software is in ALPHA (i.e. it sucks), and we're still working on exactly what RAM locations are worth logging... but it's all very workable as-is!
Shameless plug: If you don't have a chip burner or ostrich, I will glady take your money and burn you a chip with datalogging enabled!
3/29/2011
LH 2.4 Doesn't suck as hard as it once did. Check it out:
<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/f4qxAN2NiaY" frameborder="0" allowfullscreen></iframe>
ATTENTION: If you don't have an EPROM burner or blank chips, I will now burn a chip to your specs and mail it out to you for relatively cheap! See my thread for details.
Latest XDFs: Volvo 93x Fuel XDF v10 - Volvo 950 Fuel v10 - Volvo 984 Fuel XDF v3 (not being maintained) - Volvo EZK v208 XDF (not being maintained)
Currently I am focusing on the XDFs for 93x and 950 fuel software ONLY. Unless anyone has good reason, no other software will be considered by me.
Here's what's available in the version 10 XDF for 950:
Click image and say "ENHANCE" for larger view
Download the BINs here: BIN Kit: 93x and 984 Fuel, 204 EZK116 BIN, Tables, etc.
933 and 951 XDFs by mrjaybeeze: The latest will always be posted at at ECUProject.com's 'Volvo LH Systems' section. Register and git to downloadin'! 2/27/2011: ECUProject has updated their forum software and it is MUCH better! Check it out!
Build your own BIN from ASM source!
(If you don't know what this means, then don't do it. It won't make your car faster )
This pack contains everything you need to build a 950 BIN from scratch. This is possible because of the well documented 8052 disassembly ipdown/Vlad has put together. If you know anything about assembly, you will understand how awesome this is. Thanks Vlad!
I have included modified ASM files with fuel maps and constants from stock B230FT software (the 950 s/w was originally for the B204FT). These should compile and run, but not necessarily well. These files are experimental!
I have also included ASM-formatted tables with the 012 and 016 AMM tables.
Also includes a fairly thorough 950 XDF with a bunch of untested stuff. Use at your own peril!
Download: Volvo 950 S/W source kit v1
-------- UPDATE LOG --------
NEW 4/19/2011
- added datalog stuff
NEW 3/29/2011
- Released v10 XDF for 937 and 950!
- added lots of stuff
- updated descriptions with better info
- ???
- too many changes to list, major overhaul.
NEW 3/17/2011
- Updated 937 and 950 XDFs
- changed "injector constant" to "fueling constant" to help clarify how Things May Actually Work
- changed injector/fueling constants #4 and #5 to a proper representation of their actual 12-bit value (makes things simpler!)
- changed a few other odds and ends in descriptions, can't remember, has been a while
- 937 bin: found a bunch of (switched?) sub-tables in the area for what i thought was a 1x7 idle table, needs testing, not sure of their function
NEW 2/23/2011
- Added 950 XDF (I have been sitting on it for a bit, heh)
- Added compatibility matrix
- Updated 93x XDF to 9.6
- semi-identified some tables
- found a table that tweaks overrun fuelcut
- polished some stuff
NEW 2/20/2011
Note: The ZIP file will no longer include the XDFs because it is a pain in the butt to constantly update. Download the XDFs directly.
- updated 93x XDF
- added a TON of unknown tables to play with
- verified some stuff with the o-scope
NEW 2/18/2011
- updated 93x XDF to 9.4
- fixed main fuel table load axis calculation (was inverted)
- minor tweaks
NEW 2/07/2011
- Added 950 bin source kit
- Polished 950 XDF somewhat
NEW 2/06/2011
- Quick fix: I got Inj. Constant 5 labeled backwards. Thanks Mike/TLOA for pointing this out! (re-download for correct version)
- 93x XDF updated to 9.2
- Added Tq signal adjustment (be careful!)
- Added Checksum disable flag
- Found an Accel enrichment table!
- Cleaned up injector constants
- Other minor tweaks and updates
NEW 2/3/2011
Added 951 bin/XDF by mrjaybeeze
- For NA configurations
NEW 1/30/2011
Minor updates to the 984 XDF, some fixes
- Added TQ signal adjustment: BE CAREFUL
- Added checksum disable flag, untested
- Added all injector constants as scalars until we understand them more
- Fixed fuel cut table (was in wrong location, oops.)
NEW 1/26/2011
93x XDF:
- minor comment tweaks
984 XDF:
- All new!
- Main fuel table and configurable axes w/RPM calculation
- Rev limit
- Fuel cut table
- Warm up enrichment
- A/C on/off Idle adjustment
- Injector constants (new format, I think they are 16-bit, give it a shot)
- Lambda enable/disable
- AMM calibration table & multipliers
Lots of stuff in the 984 XDF is untested but it looks to be correct; tables looks similar to other BINs with better XDFs.
NEW 1/25/11:
- New fuel XDF with lots of fixes
- Added lots of undefined 2d and 3d tables thanks to ipdown's editor
- Added injector constants, fixed idle map, verified some stuff in car
- Identified switched idle table (A/C compressor on/off)
- Edited tables to be more consistent
- Updated some comments and descriptions
- Added categories (use "Parameter Category" view in parameter tree)
NEW 1/24/11:
- Added TunerPro/Ostrich getting started, updated EZK XDF
- Updated Fuel XDF to calculate RPM automagically.
- Replaced the "turbo" bin with a REAL turbo bin. Heh.
Fuel:
Maps for 012 and 016 AMMs
Three different compatible 93x BINs (v932 B200FT (012 AMM), v935 (NA, 016 AMM) and v937 (Turbo, 016 AMM)
One 984 BIN (B230FT, 016 AMM)
RPM calculation sheet for LH 2.4
XDF file for TunerPro (for included 93x and 984 bins)
Ignition:
EZK 208 Bin
XDF file for TunerPro (now updated with correct timing calculations, Thanks ipdown! )
What is this? Why do I care?
This package should let you get started with tuning you factory fuel and spark computers. No more messing with resistors, zener diodes, and other nonsense in order to make the factory computer do what you like.
OMG! That's Great! What do I need?
I'm so glad you are asking all the right questions! You will need:
0. Get a bleeding wideband!
1. Vehicle with a LH2.4 fuel computer, part # ending in 9xx (not just 93x as stated)
2. Chippable EZK (not needed if only tuning fuel)
2. EEPROM Reader/burner
3. TunerPro RT v5 software (Free/donationware) Ensure you have version 5, 4.x won't work!
4. Moates.net Ostrich 2.0 EEPROM Emulator
5. XDFs and BINs (see above)
6. Programmable chips for storing your final tune
Crap! My ECU isn't a 93x-series? It's a [928, 946,962, etc] Will this work?
Yes! The 900 series ECUs have interchangable software. That's why I have included the BIN files; they should be compatible with nearly all 900 series ECUs. My XDF is only compatible with a select few BIN files, so I decided to work on BINs that have been proven to be very compatible (at least one chip is based on it).
Some Tbrickers have helped me put together a chart of compatible software/hardware, this is by no means complete:
Blank spots are where we have no information yet. If you have an ECU that has not been tested yet, let me know what software it will run and I will update accordingly.
Whoa there, what the heck are XDF and BIN files?
Note: BINs and ROMs are two terms for the same thing I use the two terms interchangeably in this article... because I just do.
Every LH-series ECU has an 27c256 compatible EEPROM chip. To grossly oversimplify, the chip is the 1970's version of a USB memory stick that only holds one file. That file contains all of the code and data that makes the ECU work. You could think of it as sheet music for an instrument, with the instrument being the entire fuel injection system.
Looking at raw BIN files won't get you very far unless you are an Uber-hacker and know 8051 assembly language, so we create XDF files that tell us where the important bits of the BIN file are. Smart people (like ipdown, blabla, and others I am sure) who understand 8051 machine code have helped by prying the file apart and identifying where the important bits are.
Generally BINs have two different types of information: code and data. The code is typically left alone in most chips, as it usually is fairly well written for the application. The data is what we are interested in.
When you start prying a BIN apart, you may find that at location X, a fuel table begins. TunerPro lets you create definitions (basically a slightly more complex bookmark) of sorts that indicates the location of anything you wish.
So let's say we've found the fuel table. We tell TunerPro that the table is 16x16, starts at offset 0x38c1, and is 8-bit (0-255). TunerPro uses this information and makes a nice table that is easy to adjust.
Once you have defined a few tables, flags, or constants, you can save the definitions in an XDF file. Other folks can use the XDF file to easily adjust the defined parameters in similar ROMs. So, a XDF file is a template file that makes it simpler to modify ECU ROMs/BIN files.
The downside is that you can have extremely similar ROMs with data in different locations. For example, the software on most of the 9xx series LH 2.4 ECUs is interchangable, but the XDFs are not. For example, an XDF for a 962 won't work for 984.
Once you play with it for a bit, it will start to make more sense.
TL;DR: XDF files tell TunerPro where parameters are stored in memory, making changes easy.
How does all this work?
Install TunerPro and load the provided XDF, then load one of the provided BIN files. At this point you should be able to double click any of the parameters and start changing bits:
I have tried to include appropriate information in each of the XDF parameters to get everyone started.
Ok, I think I understand this stuff, now what?
There are two methodologies for tuning LH 2.4. The cheapest way is to edit files using TunerPro, burn them to chips, and then test them out in your vehicle. Rinse, repeat.
The preferred way, however, is to use the Ostrich to do "real-time emulation". In short, you plug the Ostrich into the ECU in place of the chip, and make changes with the engine running!
But really, the best part is address tracing. With the Moates Ostrich, you can see what parts of the maps are being accessed by the ECU in real time. This is ideal for driver/co-driver tuning with the help of a wideband.
Where's the ignition stuff? My car doesn't ping and knock enough already.
The LH-Jetronic system only controls fuel delivery. If you have a chippable EZK you can use the same process to tune spark by installing the Ostrich in it's EEPROM socket. I have updated the ZIP file to include EZK stuff as well for those too lazy to hunt it down on their own
I have a 5xx series ECU and feel left out *sob*
The 5xx series are just as easily modified as the 9xx! Go look on the TunerPro site for an XDF. I'd still recommend getting a 9xx series however. The processor speed is faster, they can control E-fans, and just seem generally more reliable (I have a small pile of dead 56x ECUs ). Also, if everyone works on the same ECU version, we can more easily share our work! Go grab a 9xx unit from your local boneyard; they are literally plug-n-play! (well, electrically they are. Don't grab a NA unit and plug it into your turbo car until you have updated the programming!)
How did you figure out all this stuff?
I didn't. There are already XDFs floating around, and lots of information was gathered from the fine folks in the Volvo LH system area of ECUProject.com's forums. I believe the expression is "standing on the shoulders of giants".
What about chips?
While these tools will enable you to develop your own tune, this is no replacement for the effort and testing that has been put into professional tunes made available commercially. I bought chips even after I had some of this capability because personally I couldn't tune a 4-string banjo let alone a 4-cylinder turbo. And it was 100% worth it!
So why bother?
Why not? I'm positive someone else can improve on the work that has been done already. Perhaps not tune-wise but feature-wise. For example, changing to E85 will be much easier if you can adjust the fuel tables.
Help! I blew it up!
I told you to get a wideband you cheapskate. Tweaking LH2.4 is even more dangerous than playing with Megasquirt because there is no public documentation on exactly how LH2.4 works. So be careful!
heh, stock is crap yo, y don't u just get megasquirt?
x 1,000
The advantages of modifying the factory system are clear. Go look at the Honda/DSM/Ford guys online. That said, I know MS is capable of more, and better documented. If you need water injection or nitrous or launch control then a standalone is the way to go. BUT, lots of power has been made with LH, and Megasquirt may be overkill for those not looking to go beyond a certain level of complexity.
Also, I'm tired of the infamous and extraordinarily helpful one-sentence reply, "time for MS". So there
I found something! I found something!
Great! Update the XDF and re-post it!
That being said, good luck to everyone and thanks again to all the folks at ECUProject for sharing the information!
Installing the Moates Ostrich 2.0 EEPROM Emulator in my '90 740
IMPORTANT: You really should load a BIN into the Ostrich before installation. Follow my "Emulating with the Ostrich" tutorial up to Step 5 and you should be good. The Ostrich doesn't need to be installed to program it.
Note: if images don't load, try again. Dropbox sucks.
So you took the plunge and are ready to start tweaking your ECU. Great! Here's a step-by-step of getting the Ostrich installed.
You will need:
Electrical tape
Small flathead screwdriver or needle-nose pilers
Phillips head screwdriver for removing kick panel
Socket for removing ECU retaining bolt
Ostrich Emulator (hurrr)
Steady hands
Remove the kick panel from the right hand side of the passenger's footwell. You should see the ECU. Remove the retaining bolt from the ECU.
Pull the ECU out of the slot BEFORE attempting to disconnect it from the harness. I've done it a few times and it's way easier without the ECU in it's cradle. Disconnect the harness.
Flip over the unit and there are ten metal flaps holding the lid on. Use your flathead screwdriver or needle-nose pliers to bend them out of the way. Find a relatively static free location to work and open the lid!
NOTE: I didn't write 'FUEL CONTROL' on the ECU, the PO did. Ugh.
Alt image: http://i.imgur.com/c2dIC.jpg
I have already removed the factory EEPROM in this picture; it is in the socket in the top left and usually has a white plastic retaining clip.
Using your flathead screwdriver, remove the EEPROM retaining clip. Then, gently start easing the EEPROM out of it's socket by slowly wiggling in the flathead screwdriver from either side, a little bit at a time. Be careful not to scratch the PCB. Once the EEPROM is out, put it somewhere for safekeeping. An old film canister or Rx bottle works fine for this. If you have some antistatic foam, press the EEPROM's pins into it to prevent them from being bent.
Time to install the Ostrich!
Alt image: http://i.imgur.com/MbNAZ.jpg
Note the orientation and insert the emulation header into the socket. It should press fit snugly. Ensure that all sides are inserted securely.
Alt image: http://i.imgur.com/KSjr6.jpg
Fold the cable back on the header; it will be exiting the ECU via the top
Alt image: http://i.imgur.com/EFtCM.jpg
Wrap some electrical tape around the cable where it contacts the metal edge of the case. This will prevent the case from pinching the cable.
Alt image: http://i.imgur.com/0WA43.jpg
Install the case. From the rear, bend the right-most tab on top all the way back to clear the cable.
Alt image: http://i.imgur.com/TusH4.jpg
Bend the highlighted tabs back into place to secure the ECU. We will leave the ones near the cable unsecured to prevent pinching the cable any more than necessary.
Alt image: http://i.imgur.com/SJihO.jpg
In the car, run the cable into, behind, then out of the ECU retaining bracket. Gently re-install the ECU while taking up slack on the cable.
Alt image: http://i.imgur.com/2ihJB.jpg
Take your pliers and slightly bend the retaining bracket outwards. Feed the cable back in, and attach the Ostrich. Fold the cable and press the Ostrich into place as shown. Vacuum your carpet! You're done!
Emulating with the Ostrich 2.0
So everything is plugged in, nice and neat. You've got your wideband installed, and a nice shiny gauge to go with it. Now we need to get the Ostrich loaded up with some firmware; it does not inculde any by default.
Step 1. Install the drivers
My Ostrich didn't come with a driver disk; they are available online.
Go here: http://www.moates.net/usb-driver-p-215.html
Note: The Ostrich is a FTDI chipset USB->serial device; you may have drivers already. I still recommend using the drivers available online.
Step 2. Plug it in!
Windows should do its thing and indicate that the hardware has installed successfully.
AT THIS POINT YOUR KEY SHOULD BE OUT OF THE INGITION. DON'T TURN YOUR KEY ON WHEN THE OSTRICH HAS NOT BEN PROGRAMMED YET, THE ECU COULD DAMAGE SOMETHING, FLOOD YOUR MOTOR, OVERHEAT A COMPONENT, POSSIBLY KILL YOUR NEIGHBOR'S CAT. DON'T DO IT. It probably won't do anything, but don't take the chance.
Step 3. Launch TunerPro RT
Open TunerPro RT. If everything has gone well up to this point, you should hear a two-tone "happy" beep, and TunerPro will acknowledge the Ostrich. The status bar at the bottom of the TunerPro window should say something to the effect of "Connected: Ostrich II USB". You are now officially cooking with gas. Let's load a bin and start the car.
Step 4. Load BIN and XDF
From the XDF menu, click Select xdf. Next navigate to the folder where you extracted the zip package posted above (you did download it, didn't you?). Because our Ostrich is installed in the LH2.4 fuel computer, we need to load the XDF labeled Volvo_LH24_93x-beepee-v4.xdf'
When the XDF is loaded, you should have a few items in the Parameter Tree in the left hand side of the TunerPro Window: Scalars, Flags, and Tables. Scalars are single-location memory values; a good example is the RPM limit. Flags are simple parameters that can be toggled on/off. Tables are where the interesting stuff is. We'll get to this more later
Next, load a BIN file. From the File menu, select Open Bin. Again, navigate to the folder where you extracted the zip. At this point, select the appropriate BIN file for your configuration: 0280-000-935_1010205_NA_LH244 for NA motors, 0280-000-935_1010307_Turbo_LH244 for Turbo. If you are a +T, you want the turbo file. The third BIN is for a B200FT, if you have that, use that BIN. Select the file and click OK.
Step 5. Sanity Check
Let's make sure the BIN we've loaded and the XDF we have are compatible. Under the Tables section of the Parameter Tree, select "Main Fuel map" (double click to open). It should look similar to this (NA will be a little different):
If the XDF and BIN are matched correctly, your fuel map should have a nice smooth gradient. If it is all one value or has odd stripes running through it, something went wrong. Slap yourself and go back to Step 4!
Step 6. Program Ostrich
We've got our BIN, we've got our XDF, and we are ready to go. In the middle of the TunerPro toolbar, there is a series of three arrows. From left to right, they are Upload, Download to TunerPro, Download to File. We want to upload. After you click the upload button, you should see a status bar at the bottom of the window, it usually only takes a few seconds. When the upload is done, Select Tools > Emulation > Start Emulating .
Step 7. Start the car!
At this point, we are plugged in, programmed, and itching to start the car. The bottom left corner of the TunerPro window should have a GREEN inicator (Emulating). Now we are ready.
Turn the key to run (not start) and listen for the fuel pump. You should hear it run for a few seconds, then shut off. If it does not run, you need to check your connection between the Ostrich and the ECU.
If the fuel pump primes successfully, start the car! Congratulations!
What's next?
Well, first we can try something simple. Let's change the revlimit of the fuel computer. Select the Scalars > RPM Limit from the parameter tree (double click). You should have a value of 39. If you open the RPM Calc sheet included in the zip package, you can convert LH2.4 8-bit values to RPM. Let's set it to 90 (about 2100 RPM). Once you have entered 90, click Save. You should hear some more "happy beeps" which mean your changes have been sent to the Ostrich. Step on the gas and see if it worked! For other RPM limit values, hold the mouse over the RPM Limit parameter and read the tooltip, I have included some common ones there. Don't forget to change it back when you are done!
Ok, that's neat, get to the cool stuff already!
Address tracing is where it's at. With the car running, open the Main fuel map. Click the large "A" button in the toolbar for the fuel map. You should see a cell highlight. Rev the engine a few times and watch it move. The highlight is the active fuel cell being used by the computer! Increase for more fuel, decrease for less.
The table axis looks all funny. What is going on?
Because LH2.4 is ancient (in the computer world at least) it stores all (well, most) of it's data in 8-bit values. This means that no number can be less than zero, and greater than 255. When you start counting RPM, this obviously becomes a problem. I have more or less figured out a formula to calculate RPM and put the RPM table for that reason. TunerPro has built in facilities to do unit conversion, but it doesn't like my formula for some reason. Grr.
A table axis in LH 2.4 is not the most straightforward thing in the world. The axis starts with the minimum value, and each column after contains a value that is subtracted to establish that column's value. Here's a simple example:
Basically, each value is subtracted from the result of the previous column. What a pain, huh?
Other notes:
- Be sure to disable Lambda when tuning with a wideband, LH2.4 likes nothing more in the entire world then an afr of 14.7 and will attempt to stay there religiously!
- If you suddenly get a Check Engine light, it's probably because the checksum is incorrect. When ipdown's program is done, it will auto-correct the checksum on the fly. It shouldn't hurt anything.
- You can remove the usb cable from the Ostrich and still operate the car just like normal. It retains it's memory even when the car is off.
And, finally, just in case it isn't clear:
ipdown, blabla, sbabbs, frpe82, mrjaybeeze and many others who I am forgetting from the ECUProject forums are who made this possible!
(if I left you out, sorry let me know!!)
Thanks for all of your hard work!
Pictures will be posted... eventually. Good luck everyone!
So, I'm out of the LH game right now (and have been for a while). If you want a chip, please contact thelostartof. To everyone who bought a chip from me, thanks!
Update: 8/14/2011
www.jetronic.info IS BACK UP!!
If you are getting 'Page not found' errors it is because the page you are trying to view hasn't been created yet. Jetronic.info is a Wiki. I strongly encourage all of the chip-tuners and Ostrich users to register and share their experiences so we can build a comprehensive guide.
My hosting provider (123 Systems) deleted my VPS on accident and did not have a backup. Fortunately, I had written some scripts to do nightly backups so no data was lost!
E-mail registration is temporarily down while I reconfigure/lockdown sendmail...
----------------
Update: 8/03/2011
Because there are many folks working on LH besides myself, I have created a small, wiki-style site at:
www.jetronic.info
This site contains a file library that includes all of the factory BINs as well as the latest XDFs.
It is, naturally, a work in progress. Several folks have already contributed to the site, and when i have time and energy, i've been trying to gather all of the tidbits of LH-hacking related info (from turbobricks and other sites) and put it together in a meaningful way. ipdown has also added information relating to the more technical side of LH.
I welcome everyone to join and contribute!
----------
I have put together a package for tuning LH 2.4 9xx series ECUs and (chippable) EZKs. I am also actively developing a comprehensive XDF for the fuel ECU. New to this? Scroll down to "What is this?" heading below and start reading!
Last update: 4/19/2011
It's been nearly a month since I've updated this post. Blew up my car, working on a new job, etc. But! Every spare moment has been spent here:
And, after a bunch of coding, testing, and some frustrating issues with RS232 communication, I'm coming out of the lab, and now it's time to start datalogging folks:
What this requires:
1. Modified VAG-COM KKL Cable from eBay
2. Ostrich or chip burner
3. Laptop
4. Modified BIN and XDF: Download Here: beepee-logpack-v1.zip
5. Patience
Once you get it, open up your KKL cable, de-solder the OBD2 connector, and wire it as shown:
Or, alternately, you can go hard and do what Kenny did:
The datalog software is in ALPHA (i.e. it sucks), and we're still working on exactly what RAM locations are worth logging... but it's all very workable as-is!
Shameless plug: If you don't have a chip burner or ostrich, I will glady take your money and burn you a chip with datalogging enabled!
3/29/2011
LH 2.4 Doesn't suck as hard as it once did. Check it out:
<iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/f4qxAN2NiaY" frameborder="0" allowfullscreen></iframe>
ATTENTION: If you don't have an EPROM burner or blank chips, I will now burn a chip to your specs and mail it out to you for relatively cheap! See my thread for details.
Latest XDFs: Volvo 93x Fuel XDF v10 - Volvo 950 Fuel v10 - Volvo 984 Fuel XDF v3 (not being maintained) - Volvo EZK v208 XDF (not being maintained)
Currently I am focusing on the XDFs for 93x and 950 fuel software ONLY. Unless anyone has good reason, no other software will be considered by me.
Here's what's available in the version 10 XDF for 950:
Click image and say "ENHANCE" for larger view
Download the BINs here: BIN Kit: 93x and 984 Fuel, 204 EZK116 BIN, Tables, etc.
933 and 951 XDFs by mrjaybeeze: The latest will always be posted at at ECUProject.com's 'Volvo LH Systems' section. Register and git to downloadin'! 2/27/2011: ECUProject has updated their forum software and it is MUCH better! Check it out!
Build your own BIN from ASM source!
(If you don't know what this means, then don't do it. It won't make your car faster )
This pack contains everything you need to build a 950 BIN from scratch. This is possible because of the well documented 8052 disassembly ipdown/Vlad has put together. If you know anything about assembly, you will understand how awesome this is. Thanks Vlad!
I have included modified ASM files with fuel maps and constants from stock B230FT software (the 950 s/w was originally for the B204FT). These should compile and run, but not necessarily well. These files are experimental!
I have also included ASM-formatted tables with the 012 and 016 AMM tables.
Also includes a fairly thorough 950 XDF with a bunch of untested stuff. Use at your own peril!
Download: Volvo 950 S/W source kit v1
-------- UPDATE LOG --------
NEW 4/19/2011
- added datalog stuff
NEW 3/29/2011
- Released v10 XDF for 937 and 950!
- added lots of stuff
- updated descriptions with better info
- ???
- too many changes to list, major overhaul.
NEW 3/17/2011
- Updated 937 and 950 XDFs
- changed "injector constant" to "fueling constant" to help clarify how Things May Actually Work
- changed injector/fueling constants #4 and #5 to a proper representation of their actual 12-bit value (makes things simpler!)
- changed a few other odds and ends in descriptions, can't remember, has been a while
- 937 bin: found a bunch of (switched?) sub-tables in the area for what i thought was a 1x7 idle table, needs testing, not sure of their function
NEW 2/23/2011
- Added 950 XDF (I have been sitting on it for a bit, heh)
- Added compatibility matrix
- Updated 93x XDF to 9.6
- semi-identified some tables
- found a table that tweaks overrun fuelcut
- polished some stuff
NEW 2/20/2011
Note: The ZIP file will no longer include the XDFs because it is a pain in the butt to constantly update. Download the XDFs directly.
- updated 93x XDF
- added a TON of unknown tables to play with
- verified some stuff with the o-scope
NEW 2/18/2011
- updated 93x XDF to 9.4
- fixed main fuel table load axis calculation (was inverted)
- minor tweaks
NEW 2/07/2011
- Added 950 bin source kit
- Polished 950 XDF somewhat
NEW 2/06/2011
- Quick fix: I got Inj. Constant 5 labeled backwards. Thanks Mike/TLOA for pointing this out! (re-download for correct version)
- 93x XDF updated to 9.2
- Added Tq signal adjustment (be careful!)
- Added Checksum disable flag
- Found an Accel enrichment table!
- Cleaned up injector constants
- Other minor tweaks and updates
NEW 2/3/2011
Added 951 bin/XDF by mrjaybeeze
- For NA configurations
NEW 1/30/2011
Minor updates to the 984 XDF, some fixes
- Added TQ signal adjustment: BE CAREFUL
- Added checksum disable flag, untested
- Added all injector constants as scalars until we understand them more
- Fixed fuel cut table (was in wrong location, oops.)
NEW 1/26/2011
93x XDF:
- minor comment tweaks
984 XDF:
- All new!
- Main fuel table and configurable axes w/RPM calculation
- Rev limit
- Fuel cut table
- Warm up enrichment
- A/C on/off Idle adjustment
- Injector constants (new format, I think they are 16-bit, give it a shot)
- Lambda enable/disable
- AMM calibration table & multipliers
Lots of stuff in the 984 XDF is untested but it looks to be correct; tables looks similar to other BINs with better XDFs.
NEW 1/25/11:
- New fuel XDF with lots of fixes
- Added lots of undefined 2d and 3d tables thanks to ipdown's editor
- Added injector constants, fixed idle map, verified some stuff in car
- Identified switched idle table (A/C compressor on/off)
- Edited tables to be more consistent
- Updated some comments and descriptions
- Added categories (use "Parameter Category" view in parameter tree)
NEW 1/24/11:
- Added TunerPro/Ostrich getting started, updated EZK XDF
- Updated Fuel XDF to calculate RPM automagically.
- Replaced the "turbo" bin with a REAL turbo bin. Heh.
Fuel:
Maps for 012 and 016 AMMs
Three different compatible 93x BINs (v932 B200FT (012 AMM), v935 (NA, 016 AMM) and v937 (Turbo, 016 AMM)
One 984 BIN (B230FT, 016 AMM)
RPM calculation sheet for LH 2.4
XDF file for TunerPro (for included 93x and 984 bins)
Ignition:
EZK 208 Bin
XDF file for TunerPro (now updated with correct timing calculations, Thanks ipdown! )
What is this? Why do I care?
This package should let you get started with tuning you factory fuel and spark computers. No more messing with resistors, zener diodes, and other nonsense in order to make the factory computer do what you like.
OMG! That's Great! What do I need?
I'm so glad you are asking all the right questions! You will need:
0. Get a bleeding wideband!
1. Vehicle with a LH2.4 fuel computer, part # ending in 9xx (not just 93x as stated)
2. Chippable EZK (not needed if only tuning fuel)
2. EEPROM Reader/burner
3. TunerPro RT v5 software (Free/donationware) Ensure you have version 5, 4.x won't work!
4. Moates.net Ostrich 2.0 EEPROM Emulator
5. XDFs and BINs (see above)
6. Programmable chips for storing your final tune
Crap! My ECU isn't a 93x-series? It's a [928, 946,962, etc] Will this work?
Yes! The 900 series ECUs have interchangable software. That's why I have included the BIN files; they should be compatible with nearly all 900 series ECUs. My XDF is only compatible with a select few BIN files, so I decided to work on BINs that have been proven to be very compatible (at least one chip is based on it).
Some Tbrickers have helped me put together a chart of compatible software/hardware, this is by no means complete:
Blank spots are where we have no information yet. If you have an ECU that has not been tested yet, let me know what software it will run and I will update accordingly.
Whoa there, what the heck are XDF and BIN files?
Note: BINs and ROMs are two terms for the same thing I use the two terms interchangeably in this article... because I just do.
Every LH-series ECU has an 27c256 compatible EEPROM chip. To grossly oversimplify, the chip is the 1970's version of a USB memory stick that only holds one file. That file contains all of the code and data that makes the ECU work. You could think of it as sheet music for an instrument, with the instrument being the entire fuel injection system.
Looking at raw BIN files won't get you very far unless you are an Uber-hacker and know 8051 assembly language, so we create XDF files that tell us where the important bits of the BIN file are. Smart people (like ipdown, blabla, and others I am sure) who understand 8051 machine code have helped by prying the file apart and identifying where the important bits are.
Generally BINs have two different types of information: code and data. The code is typically left alone in most chips, as it usually is fairly well written for the application. The data is what we are interested in.
When you start prying a BIN apart, you may find that at location X, a fuel table begins. TunerPro lets you create definitions (basically a slightly more complex bookmark) of sorts that indicates the location of anything you wish.
So let's say we've found the fuel table. We tell TunerPro that the table is 16x16, starts at offset 0x38c1, and is 8-bit (0-255). TunerPro uses this information and makes a nice table that is easy to adjust.
Once you have defined a few tables, flags, or constants, you can save the definitions in an XDF file. Other folks can use the XDF file to easily adjust the defined parameters in similar ROMs. So, a XDF file is a template file that makes it simpler to modify ECU ROMs/BIN files.
The downside is that you can have extremely similar ROMs with data in different locations. For example, the software on most of the 9xx series LH 2.4 ECUs is interchangable, but the XDFs are not. For example, an XDF for a 962 won't work for 984.
Once you play with it for a bit, it will start to make more sense.
TL;DR: XDF files tell TunerPro where parameters are stored in memory, making changes easy.
How does all this work?
Install TunerPro and load the provided XDF, then load one of the provided BIN files. At this point you should be able to double click any of the parameters and start changing bits:
I have tried to include appropriate information in each of the XDF parameters to get everyone started.
Ok, I think I understand this stuff, now what?
There are two methodologies for tuning LH 2.4. The cheapest way is to edit files using TunerPro, burn them to chips, and then test them out in your vehicle. Rinse, repeat.
The preferred way, however, is to use the Ostrich to do "real-time emulation". In short, you plug the Ostrich into the ECU in place of the chip, and make changes with the engine running!
But really, the best part is address tracing. With the Moates Ostrich, you can see what parts of the maps are being accessed by the ECU in real time. This is ideal for driver/co-driver tuning with the help of a wideband.
Where's the ignition stuff? My car doesn't ping and knock enough already.
The LH-Jetronic system only controls fuel delivery. If you have a chippable EZK you can use the same process to tune spark by installing the Ostrich in it's EEPROM socket. I have updated the ZIP file to include EZK stuff as well for those too lazy to hunt it down on their own
I have a 5xx series ECU and feel left out *sob*
The 5xx series are just as easily modified as the 9xx! Go look on the TunerPro site for an XDF. I'd still recommend getting a 9xx series however. The processor speed is faster, they can control E-fans, and just seem generally more reliable (I have a small pile of dead 56x ECUs ). Also, if everyone works on the same ECU version, we can more easily share our work! Go grab a 9xx unit from your local boneyard; they are literally plug-n-play! (well, electrically they are. Don't grab a NA unit and plug it into your turbo car until you have updated the programming!)
How did you figure out all this stuff?
I didn't. There are already XDFs floating around, and lots of information was gathered from the fine folks in the Volvo LH system area of ECUProject.com's forums. I believe the expression is "standing on the shoulders of giants".
What about chips?
While these tools will enable you to develop your own tune, this is no replacement for the effort and testing that has been put into professional tunes made available commercially. I bought chips even after I had some of this capability because personally I couldn't tune a 4-string banjo let alone a 4-cylinder turbo. And it was 100% worth it!
So why bother?
Why not? I'm positive someone else can improve on the work that has been done already. Perhaps not tune-wise but feature-wise. For example, changing to E85 will be much easier if you can adjust the fuel tables.
Help! I blew it up!
I told you to get a wideband you cheapskate. Tweaking LH2.4 is even more dangerous than playing with Megasquirt because there is no public documentation on exactly how LH2.4 works. So be careful!
heh, stock is crap yo, y don't u just get megasquirt?
x 1,000
The advantages of modifying the factory system are clear. Go look at the Honda/DSM/Ford guys online. That said, I know MS is capable of more, and better documented. If you need water injection or nitrous or launch control then a standalone is the way to go. BUT, lots of power has been made with LH, and Megasquirt may be overkill for those not looking to go beyond a certain level of complexity.
Also, I'm tired of the infamous and extraordinarily helpful one-sentence reply, "time for MS". So there
I found something! I found something!
Great! Update the XDF and re-post it!
That being said, good luck to everyone and thanks again to all the folks at ECUProject for sharing the information!
Installing the Moates Ostrich 2.0 EEPROM Emulator in my '90 740
IMPORTANT: You really should load a BIN into the Ostrich before installation. Follow my "Emulating with the Ostrich" tutorial up to Step 5 and you should be good. The Ostrich doesn't need to be installed to program it.
Note: if images don't load, try again. Dropbox sucks.
So you took the plunge and are ready to start tweaking your ECU. Great! Here's a step-by-step of getting the Ostrich installed.
You will need:
Electrical tape
Small flathead screwdriver or needle-nose pilers
Phillips head screwdriver for removing kick panel
Socket for removing ECU retaining bolt
Ostrich Emulator (hurrr)
Steady hands
Remove the kick panel from the right hand side of the passenger's footwell. You should see the ECU. Remove the retaining bolt from the ECU.
Pull the ECU out of the slot BEFORE attempting to disconnect it from the harness. I've done it a few times and it's way easier without the ECU in it's cradle. Disconnect the harness.
Flip over the unit and there are ten metal flaps holding the lid on. Use your flathead screwdriver or needle-nose pliers to bend them out of the way. Find a relatively static free location to work and open the lid!
NOTE: I didn't write 'FUEL CONTROL' on the ECU, the PO did. Ugh.
Alt image: http://i.imgur.com/c2dIC.jpg
I have already removed the factory EEPROM in this picture; it is in the socket in the top left and usually has a white plastic retaining clip.
Using your flathead screwdriver, remove the EEPROM retaining clip. Then, gently start easing the EEPROM out of it's socket by slowly wiggling in the flathead screwdriver from either side, a little bit at a time. Be careful not to scratch the PCB. Once the EEPROM is out, put it somewhere for safekeeping. An old film canister or Rx bottle works fine for this. If you have some antistatic foam, press the EEPROM's pins into it to prevent them from being bent.
Time to install the Ostrich!
Alt image: http://i.imgur.com/MbNAZ.jpg
Note the orientation and insert the emulation header into the socket. It should press fit snugly. Ensure that all sides are inserted securely.
Alt image: http://i.imgur.com/KSjr6.jpg
Fold the cable back on the header; it will be exiting the ECU via the top
Alt image: http://i.imgur.com/EFtCM.jpg
Wrap some electrical tape around the cable where it contacts the metal edge of the case. This will prevent the case from pinching the cable.
Alt image: http://i.imgur.com/0WA43.jpg
Install the case. From the rear, bend the right-most tab on top all the way back to clear the cable.
Alt image: http://i.imgur.com/TusH4.jpg
Bend the highlighted tabs back into place to secure the ECU. We will leave the ones near the cable unsecured to prevent pinching the cable any more than necessary.
Alt image: http://i.imgur.com/SJihO.jpg
In the car, run the cable into, behind, then out of the ECU retaining bracket. Gently re-install the ECU while taking up slack on the cable.
Alt image: http://i.imgur.com/2ihJB.jpg
Take your pliers and slightly bend the retaining bracket outwards. Feed the cable back in, and attach the Ostrich. Fold the cable and press the Ostrich into place as shown. Vacuum your carpet! You're done!
Emulating with the Ostrich 2.0
So everything is plugged in, nice and neat. You've got your wideband installed, and a nice shiny gauge to go with it. Now we need to get the Ostrich loaded up with some firmware; it does not inculde any by default.
Step 1. Install the drivers
My Ostrich didn't come with a driver disk; they are available online.
Go here: http://www.moates.net/usb-driver-p-215.html
Note: The Ostrich is a FTDI chipset USB->serial device; you may have drivers already. I still recommend using the drivers available online.
Step 2. Plug it in!
Windows should do its thing and indicate that the hardware has installed successfully.
AT THIS POINT YOUR KEY SHOULD BE OUT OF THE INGITION. DON'T TURN YOUR KEY ON WHEN THE OSTRICH HAS NOT BEN PROGRAMMED YET, THE ECU COULD DAMAGE SOMETHING, FLOOD YOUR MOTOR, OVERHEAT A COMPONENT, POSSIBLY KILL YOUR NEIGHBOR'S CAT. DON'T DO IT. It probably won't do anything, but don't take the chance.
Step 3. Launch TunerPro RT
Open TunerPro RT. If everything has gone well up to this point, you should hear a two-tone "happy" beep, and TunerPro will acknowledge the Ostrich. The status bar at the bottom of the TunerPro window should say something to the effect of "Connected: Ostrich II USB". You are now officially cooking with gas. Let's load a bin and start the car.
Step 4. Load BIN and XDF
From the XDF menu, click Select xdf. Next navigate to the folder where you extracted the zip package posted above (you did download it, didn't you?). Because our Ostrich is installed in the LH2.4 fuel computer, we need to load the XDF labeled Volvo_LH24_93x-beepee-v4.xdf'
When the XDF is loaded, you should have a few items in the Parameter Tree in the left hand side of the TunerPro Window: Scalars, Flags, and Tables. Scalars are single-location memory values; a good example is the RPM limit. Flags are simple parameters that can be toggled on/off. Tables are where the interesting stuff is. We'll get to this more later
Next, load a BIN file. From the File menu, select Open Bin. Again, navigate to the folder where you extracted the zip. At this point, select the appropriate BIN file for your configuration: 0280-000-935_1010205_NA_LH244 for NA motors, 0280-000-935_1010307_Turbo_LH244 for Turbo. If you are a +T, you want the turbo file. The third BIN is for a B200FT, if you have that, use that BIN. Select the file and click OK.
Step 5. Sanity Check
Let's make sure the BIN we've loaded and the XDF we have are compatible. Under the Tables section of the Parameter Tree, select "Main Fuel map" (double click to open). It should look similar to this (NA will be a little different):
If the XDF and BIN are matched correctly, your fuel map should have a nice smooth gradient. If it is all one value or has odd stripes running through it, something went wrong. Slap yourself and go back to Step 4!
Step 6. Program Ostrich
We've got our BIN, we've got our XDF, and we are ready to go. In the middle of the TunerPro toolbar, there is a series of three arrows. From left to right, they are Upload, Download to TunerPro, Download to File. We want to upload. After you click the upload button, you should see a status bar at the bottom of the window, it usually only takes a few seconds. When the upload is done, Select Tools > Emulation > Start Emulating .
Step 7. Start the car!
At this point, we are plugged in, programmed, and itching to start the car. The bottom left corner of the TunerPro window should have a GREEN inicator (Emulating). Now we are ready.
Turn the key to run (not start) and listen for the fuel pump. You should hear it run for a few seconds, then shut off. If it does not run, you need to check your connection between the Ostrich and the ECU.
If the fuel pump primes successfully, start the car! Congratulations!
What's next?
Well, first we can try something simple. Let's change the revlimit of the fuel computer. Select the Scalars > RPM Limit from the parameter tree (double click). You should have a value of 39. If you open the RPM Calc sheet included in the zip package, you can convert LH2.4 8-bit values to RPM. Let's set it to 90 (about 2100 RPM). Once you have entered 90, click Save. You should hear some more "happy beeps" which mean your changes have been sent to the Ostrich. Step on the gas and see if it worked! For other RPM limit values, hold the mouse over the RPM Limit parameter and read the tooltip, I have included some common ones there. Don't forget to change it back when you are done!
Ok, that's neat, get to the cool stuff already!
Address tracing is where it's at. With the car running, open the Main fuel map. Click the large "A" button in the toolbar for the fuel map. You should see a cell highlight. Rev the engine a few times and watch it move. The highlight is the active fuel cell being used by the computer! Increase for more fuel, decrease for less.
The table axis looks all funny. What is going on?
Because LH2.4 is ancient (in the computer world at least) it stores all (well, most) of it's data in 8-bit values. This means that no number can be less than zero, and greater than 255. When you start counting RPM, this obviously becomes a problem. I have more or less figured out a formula to calculate RPM and put the RPM table for that reason. TunerPro has built in facilities to do unit conversion, but it doesn't like my formula for some reason. Grr.
A table axis in LH 2.4 is not the most straightforward thing in the world. The axis starts with the minimum value, and each column after contains a value that is subtracted to establish that column's value. Here's a simple example:
HTML:
Human-readable axis: 100 105 110 125 140 150 155 160 180 195 200
The same axis in LH2.4: 5 5 15 15 10 5 5 20 15 5 200
Basically, each value is subtracted from the result of the previous column. What a pain, huh?
Other notes:
- Be sure to disable Lambda when tuning with a wideband, LH2.4 likes nothing more in the entire world then an afr of 14.7 and will attempt to stay there religiously!
- If you suddenly get a Check Engine light, it's probably because the checksum is incorrect. When ipdown's program is done, it will auto-correct the checksum on the fly. It shouldn't hurt anything.
- You can remove the usb cable from the Ostrich and still operate the car just like normal. It retains it's memory even when the car is off.
And, finally, just in case it isn't clear:
ipdown, blabla, sbabbs, frpe82, mrjaybeeze and many others who I am forgetting from the ECUProject forums are who made this possible!
(if I left you out, sorry let me know!!)
Thanks for all of your hard work!
Pictures will be posted... eventually. Good luck everyone!
Last edited: