Pages: 1 2 3 [4]
Print
Author Topic: 1996 EJ20 Legacy ECU "T8"  (Read 7330 times)
kochiro
Administrator
*****
Offline Offline

Posts: 38


View Profile
« Reply #45 on: June 15, 2009, 07:55:25 AM »

Daniel,
  Could you share the raw excel file you created the pdf from?  It would be a good thing to have in our file repository so that people can download it and fill in the values on their own.

Phil,
  Can you tell us any more about this ecu emulator program yet?  Is it available/ready for semi-public consumption yet?

Thanks,
Jay
Logged
mrdjc
*
Offline Offline

Posts: 38


View Profile
« Reply #46 on: June 15, 2009, 08:18:01 AM »

Jay,

Here you go:
http://home.zonnet.nl/mr.djc/T8Pinout.xls

I'd like to add though, I haven't managed to find anything else that is even remotely similar to this.
The pinouts/colours are completely different to the other ECU's I tried to compare to, let alone the connectors. 26/22/16 (B44, B43, B90)

You can take a look here for different pinouts of various ECU's some with colour scheme:
http://northursalia.com/modifications/misc/wiring/wiring.html

I think I might get my soldering iron out in a minute and create a mini bench board. Its raining outside, I'm not sure I have enough PCB material left though.

Cheers,
Daniel.

Logged
kochiro
Administrator
*****
Offline Offline

Posts: 38


View Profile
« Reply #47 on: June 15, 2009, 08:30:19 AM »

Daniel, I planned on just blanking out the data columns in the sheet and providing a link to your completed sheet as well as an example.  That way as hopefully more people get involved the way you are they can fill out the sheet without having to recreate the format. 

It would be ideal if we had one standard sheet format for all ecu's so people could go and look up their ecu and get the same format chart.  A universal standard if you will.  One thing I would like to add to this though is a column to store the addresses required to access the information from software.

Thanks,
Jay
Logged
mrdjc
*
Offline Offline

Posts: 38


View Profile
« Reply #48 on: June 15, 2009, 08:43:48 AM »

Good idea on the addresses column. But I'll add that once I get round to it.

No more PCB stuff lying around here sadly, so I've decided to order some 3a connector blocks and I'll print off a nice template and stick everything onto a plank of MDF or something similar.

Added bonus of using the connector blocks, you can stick your multimeter ontop of the screws and leave them so you can have your hands free to do something else.

I'll let you know how I get on once I receive the connector blocks.

Thanks,
Daniel.

Logged
kochiro
Administrator
*****
Offline Offline

Posts: 38


View Profile
« Reply #49 on: June 15, 2009, 11:27:15 AM »

Daniel/Phil,
  Regarding the "Type" column, I'm thinking that those values might be "fairly" standard across most/many models?  I was thinking they should be left in the blank template, what do you think?

  I've actually already made a few minor changes to the template adding in the software addresses column as well as a few labels and split things into individual fields to make editing them easier for the average user.

  What do you think?

Thanks,
Jay
Logged
mrdjc
*
Offline Offline

Posts: 38


View Profile
« Reply #50 on: June 15, 2009, 04:43:39 PM »

Daniel/Phil,
  Regarding the "Type" column, I'm thinking that those values might be "fairly" standard across most/many models?  I was thinking they should be left in the blank template, what do you think?

  I've actually already made a few minor changes to the template adding in the software addresses column as well as a few labels and split things into individual fields to make editing them easier for the average user.

  What do you think?

Thanks,
Jay

Jay,

I would leave the Voltage values in place as they are from the Subaru Manual and should be the same throughout the range, they are a reference to show what *should* be read if you were to measure it with a volt meter.

You also need to bear in mind that standardizing the form would require 4 different versions. 1 plug, 2 plugs, 3 plugs (mine) and 4 plugs, as there have all been reported cases of JECS Ecu's using all these different number of connectors.

As for the addresses you would probably need two different fields
One raw input field at which the ECU Captures the raw feed from the sensor.
One refined output at which the ECU has the processed data ready for reading by SSM.
There might be a third field in some sensors as there will be more than one readout (Like the TPS)

To complicate matters, you would most likely require 3 different variations of the 4 forms, one for N/A, one for Turbo and one for Twin Turbo. This isn't even going into the SVX League of Horizontal 6's which I know nothing about, Phil will be able to shed light on this.

The basic sensor layout on these 3 types will be different to each other.

Adding the type of transmission might also help with ID, i'm not 100% sure but I believe the TCU is tied into the ECU on some vehicles, I'm hoping Phil can clarify. Also I'd change the engine type to the Subaru Code, for example mine is EJ20ENWABA (On the VIN plate) and EJ20MUB (on the block)

A standardized form is a great Idea, but you'll need to make quite a few different forms to make it easier for people to grab the right ones and start filling them in.
Good work so far though, keep it coming!

Cheers,
Daniel.

Logged
kochiro
Administrator
*****
Offline Offline

Posts: 38


View Profile
« Reply #51 on: June 15, 2009, 04:49:53 PM »

Daniel, all good points that I hadn't even delved into yet.  I realize that there will need to be variations of the form for the various connector styles and such, I just figured we'd start with yours since you had created such a great base to work with.  The changes I've made are just quick changes as I thought of things and threw them in to make sure I didn't forget them. 

I'll go through your list and some of the other things I was thinking of and post up a new file when done.

Thanks,
Jay
Logged
mrdjc
*
Offline Offline

Posts: 38


View Profile
« Reply #52 on: June 19, 2009, 01:18:30 PM »

Ok.. Project Bench is complete! Smiley

All I need to do now is figure out how to input signals into it to make it believe its doing something..  I suppose I could wire the sensors into it and push twist the TPS etc.. and tap the knock sensor etc.

Is there a simple way to work out hex values into voltages from the A/D converter?
I've seen the table on your website Phil, http://www.alcyone.org.uk/ssm/ecureverse.html where exactly did you find the formula for each one? say i hooked up a 1.5V battery in the place of the TPS or MAF.. How would I work out what 1.5V is in hex? Do all the A/D converters use the same range in hex, or would a 5V one for the MAF be different to the battery voltage one (up to 14V)

All good and well having made the bench, but I'm not exactly convinced why I did it now!

Oh, the "CO Resistor" which we puzzled about earlier in this thread.. its actually a part of the MAF assembly. My ECU has the wire for it so you were correct in assuming the vehicle must have it fitted.

Also.. Is there a way to make Hex Com tool only reply with one line instead of polling it over and over again? I tried reading the error code addresses for example i tried reading 102D (78102D00)
It comes back with 102D00 over and over again until I type 12000000 to make it stop.
If I try 102E (78102E00) It comes back with 102E19 Now what exactly is the value "19".
Bit 1, 8 and 10? What about the rest? If I set it to ASCII return I get (10).(19)(10).(19)
102F comes back with 00 as well.

Considering this board is currently set up only with power and SSM and NO sensors whatsoever attached.. alarm bells should be ringing inside the box and the pixies inside the CPU will be scratching their head wondering what in earth has happened to Mr Maf and Mr TPS and Mr IACV etc.

Any Ideas?

I took some pics of the board being made, so I'll make a little how to guide at some stage if you want it for the forum.

Cheers,
Daniel.








Logged
kochiro
Administrator
*****
Offline Offline

Posts: 38


View Profile
« Reply #53 on: June 19, 2009, 01:59:00 PM »

Daniel,
  I'd love to see your bench and how you did it, I'm sure there's a couple others on here that would love to see it as well.

Jay
Logged
mrdjc
*
Offline Offline

Posts: 38


View Profile
« Reply #54 on: June 20, 2009, 01:46:52 PM »

Starting to wonder where Phil is, he must have his hands full at the moment or something. And yet again the forum grinds to a halt!  Grin

Right, the bench setup is complete, the how two can be found in the Subaru section on this forum.

I require a program by which I can poll my RAM segment of the ECU. (In my case 1000 to 14FF)
No idea how to go about it.. All I want is to ask the ECU what's stored at all those addresses and make a file for me telling me what was at what address. The Hex Comm tool can only be used for one at a time.
so it would be 78100000 up to 7814FF00 and see what it comes back with. I can't do all that typing on my own! I could do another Rom dump, but to spend 45 min every time I change a value to see how the RAM stores it is crazy.

I tried Kevin Franks VWRX software but its still buggy, some values disappear and re-appear when polled for the 2nd time so its not accurate enough.

Phil, How did you make the Memory map on your page here?
http://www.alcyone.org.uk/ssm/ecuinfo.html

Cheers,
Daniel.



Logged
b3lha
*
Offline Offline

Posts: 198



View Profile WWW
« Reply #55 on: June 22, 2009, 04:49:03 PM »

Starting to wonder where Phil is, he must have his hands full at the moment or something. And yet again the forum grinds to a halt!  Grin
Sorry for the slow reply. As you say, I'm rather busy at the moment. I can see you've been busy too.
I require a program by which I can poll my RAM segment of the ECU. (In my case 1000 to 14FF)
No idea how to go about it.. All I want is to ask the ECU what's stored at all those addresses and make a file for me telling me what was at what address. The Hex Comm tool can only be used for one at a time.
so it would be 78100000 up to 7814FF00 and see what it comes back with. I can't do all that typing on my own! I could do another Rom dump, but to spend 45 min every time I change a value to see how the RAM stores it is crazy.
AFAIK, the only software that will do this for you is my linux software. It's not hard to do. Use a knoppix boot CD and then run my ecudump program:
Usage: ecudump [-d device] [-f output_file] [-s start_address] [-e end_address]

eg.  ./ecudump -d /dev/ttyS0 -f ecu.bin -s 1000 -e 14ff

I tried Kevin Franks VWRX software but its still buggy, some values disappear and re-appear when polled for the 2nd time so its not accurate enough.

Phil, How did you make the Memory map on your page here?
http://www.alcyone.org.uk/ssm/ecuinfo.html
I downloaded the whole address space from 0000 to FFFF and then looked at it in a hex editor to try and identify areas of code, data and junk.

s there a simple way to work out hex values into voltages from the A/D converter?
I think we look at this briefly earlier in the thread, or maybe it was Brett's thread. I think the ADC produces a 10 bit number that is proportional to the voltage. ie: For 0 volts the number is 0000000000, for 5v it is 1111111111 and for 2.5v it is half way in between, etc. The ECU code then rescales this to an eight bit number by shifting it right 2 places.
I've seen the table on your website Phil, http://www.alcyone.org.uk/ssm/ecureverse.html where exactly did you find the formula for each one?
Some of the formulas came from looking at the code, some I copied from other people's software. I've recently been looking at the Select Monitor code to try and find the exact formulae that Subaru use, but I haven't figured it out yet.
say i hooked up a 1.5V battery in the place of the TPS or MAF.. How would I work out what 1.5V is in hex? Do all the A/D converters use the same range in hex, or would a 5V one for the MAF be different to the battery voltage one (up to 14V)
I *assume* that the hardware is designed so that full-scale on the ADC matches the expected maximum voltage of the corresponding input pin. In normal operation, the ECU supplies power for the TPS and MAF and measures the return. You should be able to use a potentiometer rather than a 1.5v battery. Try to copy the car's wiring diagram as closely as possible.

All good and well having made the bench, but I'm not exactly convinced why I did it now!

Oh, the "CO Resistor" which we puzzled about earlier in this thread.. its actually a part of the MAF assembly. My ECU has the wire for it so you were correct in assuming the vehicle must have it fitted.
Sounds like it's probably the heater element for the MAF. As I understand it, a MAF works by heating up a small plate by a known amount and then measuring its temperature. The more air that is flowing over the plate, the greater the difference in temperature.
Also.. Is there a way to make Hex Com tool only reply with one line instead of polling it over and over again? I tried reading the error code addresses for example i tried reading 102D (78102D00)
It comes back with 102D00 over and over again until I type 12000000 to make it stop.
If you can figure out how to use ASCII mode, you can get the values one at a time. We did a bit of experimentation with it in the SVX forum thread, but couldn't find any real reason to use it.
If I try 102E (78102E00) It comes back with 102E19 Now what exactly is the value "19".
Bit 1, 8 and 10? What about the rest? If I set it to ASCII return I get (10).(19)(10).(19)
102F comes back with 00 as well.
Convert the 19 from hex to binary: 00011001. Now match that up against the table of error flags for byte 102E that we found earlier in the thread. I know that you know how to do that, but we've taken a break and you've forgotten.
Considering this board is currently set up only with power and SSM and NO sensors whatsoever attached.. alarm bells should be ringing inside the box and the pixies inside the CPU will be scratching their head wondering what in earth has happened to Mr Maf and Mr TPS and Mr IACV etc.
Yes, but look back at when we examined the code that tests each sensor. There are often preconditions that must be satisfied before the ECU will carry out the test. Many of the tests will not be carried out, for example, unless the engine is running. To convince the ECU that the engine is running, you might have to generate something that looks like valid pulse signals from the crank and cam sensors.
Logged

See my Subaru ECU and TCU website.
http://www.alcyone.org.uk/ssm
mrdjc
*
Offline Offline

Posts: 38


View Profile
« Reply #56 on: June 23, 2009, 08:48:38 AM »

Sorry for the slow reply. As you say, I'm rather busy at the moment. I can see you've been busy too.

That's quite alright Phil, its just staggering to see that you seem to be the only person out there willing/able to help idiots like me do this kind of stuff. But naturally, family and work comes first! I'm grateful you manage to find time to reply to threads in such detail like you do. I can't say thank you enough!

AFAIK, the only software that will do this for you is my linux software. It's not hard to do. Use a knoppix boot CD and then run my ecudump program:
Usage: ecudump [-d device] [-f output_file] [-s start_address] [-e end_address]

eg.  ./ecudump -d /dev/ttyS0 -f ecu.bin -s 1000 -e 14ff

I might go to "the dark side" and get another pc set up to do this, there's a few spare ex-server setups (Celeron 1400, 1800 etc) kicking around in shed somewhere.
I've tried Linux before but always got fed up trying to figure things out which are almost second nature to me in windows.

I downloaded the whole address space from 0000 to FFFF and then looked at it in a hex editor to try and identify areas of code, data and junk.
Hmm.. Ok I'll take your word for it! I don't posses the skill to do this.. all I see is just letters and numbers!  :Smiley

I think we look at this briefly earlier in the thread, or maybe it was Brett's thread. I think the ADC produces a 10 bit number that is proportional to the voltage. ie: For 0 volts the number is 0000000000, for 5v it is 1111111111 and for 2.5v it is half way in between, etc. The ECU code then rescales this to an eight bit number by shifting it right 2 places.

A 10 bit number? what a strange number. I don't know how important it is to understanding the coding, but I had a faulty power supply which was kicking out 16V... and it actually registered this in the ECU, so I have no idea how high the sensor is willing to go without going pop.
Another "odd" thing i've noticed.. if i hook up the multimeter to the adaptor, I get 12V +-0.5V, as soon as I connect it to the board and measure it again at the first point its suddenly bumped up to 15V.. disconnect it and its back to 12V.. I wonder if its something to do with the circuitry/capacitors hiking up the voltage?

I *assume* that the hardware is designed so that full-scale on the ADC matches the expected maximum voltage of the corresponding input pin. In normal operation, the ECU supplies power for the TPS and MAF and measures the return. You should be able to use a potentiometer rather than a 1.5v battery. Try to copy the car's wiring diagram as closely as possible.
I like the thinking behind that... I never thought of re-using the feeds. I know the TPS uses 2 measurements, it feeds in 5V and watches how close to 5V it is when its fully open and at the same time looks how far away it is from the other end, so it comes back with 2 separate readings, for example if it was half open it would be 2.5V from closed and 2.5V from fully open.. 1/4th open would be 1.25 from fully closed and 3.75v from fully open. Anyhow, I'll have to get potentiometers then.

something else I've noticed on the wiring, there are 4 separate injector 12V feeds which are ALWAYS live, even when the ignition is switched off. However there are only 2 grounds, presumably matched to Ignition control (also 2 feeds) one doing cylinder #1,#2 and the other #2,#3.

I've never really looked at the firing order.. but I take it they fire in pairs then?
the 12V feed to all the injectors is in "waveform" as well.
So does that mean the ECU grounds for a few ms when it injects and leaves the 12V live permanently?



If you can figure out how to use ASCII mode, you can get the values one at a time. We did a bit of experimentation with it in the SVX forum thread, but couldn't find any real reason to use it.
Convert the 19 from hex to binary: 00011001. Now match that up against the table of error flags for byte 102E that we found earlier in the thread. I know that you know how to do that, but we've taken a break and you've forgotten.
Aaaaaaa.. here was me thinking there was "only" Hex and ASCII, ASCII being the same as Binary! Clearly not.. Lips Sealed
Forgive me as I'm still a novice at all these languages.. I can count from 1 to 10 and do my ABC's, I've just managed to get my head round Hex. Luckily there are Hex to Binary converters on internet available.. It all makes sense now Smiley

Yes, but look back at when we examined the code that tests each sensor. There are often preconditions that must be satisfied before the ECU will carry out the test. Many of the tests will not be carried out, for example, unless the engine is running. To convince the ECU that the engine is running, you might have to generate something that looks like valid pulse signals from the crank and cam sensors.

Generating pulses will be a bit hard as I don't have any device which can do it, and I am still very much skint. I'm going to try and re-use most of the sensors which I've chopped off the looms, We've just ordered up a "large" 6.5L Ultrasonic cleaner.. so all the sensors are going for a swim first as they are extremely mucky oily and covered in carbon due to a wrongly set up LPG system. On the plus side I have got the full setup, as well as the pin out.. so it should be interesting.

What linux distro would you recommend for a pc with a novice linux user?

Cheers, and thanks a million again,
Daniel.



Logged
b3lha
*
Offline Offline

Posts: 198



View Profile WWW
« Reply #57 on: June 24, 2009, 03:58:20 PM »

something else I've noticed on the wiring, there are 4 separate injector 12V feeds which are ALWAYS live, even when the ignition is switched off. However there are only 2 grounds, presumably matched to Ignition control (also 2 feeds) one doing cylinder #1,#2 and the other #2,#3.

I've never really looked at the firing order.. but I take it they fire in pairs then?
the 12V feed to all the injectors is in "waveform" as well.
So does that mean the ECU grounds for a few ms when it injects and leaves the 12V live permanently?
Yes. You've figured out how it works.

The injectors are always powered and the ECU supplies a ground pulse to fire them.
On our cars, the spark plugs use a "wasted spark" system and fire in pairs.

Generating pulses will be a bit hard as I don't have any device which can do it, and I am still very much skint. I'm going to try and re-use most of the sensors which I've chopped off the looms, We've just ordered up a "large" 6.5L Ultrasonic cleaner.. so all the sensors are going for a swim first as they are extremely mucky oily and covered in carbon due to a wrongly set up LPG system. On the plus side I have got the full setup, as well as the pin out.. so it should be interesting.

What linux distro would you recommend for a pc with a novice linux user?
If I was going to try and generate pulses I would probably use a PC parallel printer port. There are 8 pins that you can individually set to 5v or 0v using software. But it's been over 15 years since I last played with it and I don't really remember how to do it.

I use Centos Linux, a clone of RedHat Enterprise Linux. It's doesn't have all the bleeding edge bells and whistles, but it is rock solid stable so you can run servers for months at a time without worrying about anything crashing.
Logged

See my Subaru ECU and TCU website.
http://www.alcyone.org.uk/ssm
Pages: 1 2 3 [4]
Print
Jump to: