Bendix Jeep 2.5L ECU Datastream

Here is my reverse engineering work on the Bendix 2.5L Electronic Control Unit found in 86-90 Renix Jeeps. This self contained unit is in charge of running the engines Renix Throttle Body Fuel Injection System as well as other engine Sub-Systems. The ECUs data stream output is available which we can use for datalogging and diagnostics.

The 2.5L was the first installment of the Renix Fuel Injection System in Jeeps and it’s a bit of an oddball even for Renix. Schematics are fuzzy but mentions the TX Pin supposably moves according to the vehicles transmission type and swaps places with the correlated transmission pin. The 1990 FSM mentions for A/T, Pin 1 is TX Data and Pin 3 is Park/Neutral Switch; but for M/T, Pin 1 is Upshift Light and Pin 3 is TX Data.

In my testing, I am able to get data from Pin 1 on either transmission type, BUT on Manuals the logic level will be pulled to battery voltage when the shift light is active so the labeling seems to sort of check out. Another oddity is for M/T, Pin 3 must be pulled low to complete the signal, but for A/T only Pin 1 is required just like the later 4.0L systems.

TX output is found on Pin 18 of the ECU which connects to Pin D2-1 in the 15 pin Renix Diagnostic Adapter found in the engine bay. For Manual Transmission equipped vehicles, ECU Pin 12 to Pin D2-3 also plays a role in this data connection.

This is some sort of open collector output circuit to vehicle ground, so the Receiver pulls the line high and the ECU will pull the line low to transmit. Due to possibly a protection circuit, logic low does not read zero as it sits closer to 1.1v instead, making it difficult to read in without signal modifications. A buffer with a high logic low tolerance is need, or use a voltage divider to cut down the signal until switching will occur. This gives us an inverted signal that will need to be flipped to be read with standard UART.

Data Protocol:

This ECU unit uses a standard Bendix Data Protocol which is as follows:
– Protocol: UART, Inverted Logic
– Baud: 62,500
– Frame Length: 30 Bytes
– Frame Start: value 0 is sent
– Frame End: value 255 is sent
– Special Case: data bytes must send duplicate 255 value to differentiate from Frame End. Duplicate value must be discarded to maintain proper framing.

Data Framing

Byte OrderReadingMathDump
Start Byte0
Byte 0Program VersionHEX32
Byte 1Vehicle CalibrationHEX98
Byte 2
Starter Signal
Park/Neutral Switch
A/C Select Switch
Throttle Switch
A/C Thermostat
Bit 0
Bit 1
Bit 2
Bit 3, 4
Bit 5
Byte 3

MAP Sensor

# / 51.2 = [0 – 4.98V]
# / 9.13 + 3.1 = [3.1 – 31″hg]
Byte 4CTS # * 1.125 – 40 = [-40 – 247F] 141
Byte 5IAT # * 1.125 – 40 = [-40 – 247F] 142
Byte 6Battery Voltage# / 31.875 + 8 = [8 – 16V] 197
Byte 7o2 Sensor mV # * 4.34 = [0 – 1,107mV] 229
Byte 8RPM Low Byte30,000,000 / # = [30,000 – 457]56
Byte 9RPM High Byte16 bit Number = (#9, #8)161
Byte 10Injector Pulse Low Byte# / 1000 = [0 – 65.5ms] 170
Byte 11Injector Pulse High Byte16 bit Number = (#11, #10)8
Byte 12TPS# / 51.2 = [0 – 4.98V]
# / 2.55 = [0 – 100%]
Byte 13Spark Advance ºBTDCDEC10
Byte 14M1? No Change Noticed0
Byte 15M2? Slow Increase126
Byte 16Baro Pressure

Manifold Vacuum
# / 51 = [0 – 5V]
# / 9.13 + 3.1 [3.1 – 31″hg]
Baro – Byte 3
Byte 17M3? Engine Bit Values
Engine Run Flag
Closed Loop Attempt?
Power Steering Switch Dup

Bit 0
Bit 4
Bit 6
Byte 18Loop Status
Power Steering Switch
Exhaust Mixture
Bit 1, 6
Bit 4
Bit 7
Byte 19M4? No Change Noticed0
Byte 20M5? No Change Noticed0
Byte 21EGR
A/C Clutch
Bit 3
Bit 6
Byte 22M6? ISM Offset Value1
Byte 23ISM Cold Enrichment Offset# / 2.553
Byte 24Short Term Fuel TrimDEC181
Byte 25M8? RPM Idle Offset91
Byte 26Long Term Fuel TrimDEC128
Byte 27M9? IAT Offset6
Byte 28M10? No Change Noticed
Frame Checksum?
Stop Byte255

– Most of the Math was Reverse Engineered from the MT2500 1099 Cartridge
– I’ve noticed that the 1099 Cartridge math has been a tad off on a few accounts for 2.5L
– I have tried to cross reference with some MS1700 cartridges but resolution can be corse

Bit Logic Breakdowns

– Values that have been observed to change are marked with a “?”
– Values that have not been observed to change will display their normal Value.
– Values that have been confirmed as direct readings will show ECU Pin Label.

Bit 0C29 Starter Signal OffC29 Starter Signal On
Bit 1C12 Park/Neutral – YesC12 Park/Neutral – No
Bit 2C30 A/C Select OffC30 A/C Select On
Bit 3C25 TPS ClosedC25 TPS Partial
Bit 4TPS WOTTPS Partial
Bit 5C34 A/C Thermostat NoC34 A/C Thermostat Yes
Bit 611
Bit 700
– Partial takes priority if Bit 3 & 4 are equal
– When bench testing, Bits 3 & 4 are true. When Pin 25 is grounded Bit 3 turns false
– Bit 0 similar to Byte 17 Bit 0
– Bit 1 reads false on M/T
Bit 0Engine OffEngine RPM Detected
Bit 1??
Bit 2??
Bit 3??
Bit 4Closed Loop Not Attempted?Closed Loop Attempted?
Bit 500
Bit 6P/S Sw Dup OffP/S Sw Dup On
Bit 700

– I consider this Mystery Byte 3 as it is undocumented
– Bit 0 similar to Byte 2 Bit 0
– Bit 6 similar to Byte 18 Bit 4

Bit 0??
Bit 1Bit 6Decel LP
Bit 2??
Bit 300
Bit 4C8 P/S Switch OffC8 P/S Switch On
Bit 5??
Bit 6Open LPClosed LP
Bit 7Exhaust LeanExhaust Rich
– Decel takes priority over Bit 6 when true
– Bit 4 similar to Byte 17 Bit 6
– Bit 5 similar to Bit 7
Bit 000
Bit 111
Bit 200
Bit 3EGR Off?EGR On?
Bit 4Fuel Pump Off?Fuel Pump On?
Bit 511
Bit 6A/C Clutch OffA/C Clutch On
Bit 7Spark/Fuel Off?Spark/Fuel On?
– Bit 5 is used for EGR on MT2500, always true 2.5L Short Drive Log
– Bit 3 suspected to be actual EGR Bit
– Bit 4 Seems to be fuel pump related
– Bit 7 pulses a lot while engine is running

ECU Pinout Breakdown

Connector CavityECU CircuitData Stream Relation
1Power Ground
2Power Ground
5EGR Control
6Fuel Pump Relay
7Latch Relay
8Power Steering InputByte 18, Bit 4
10System Ground
11Engine Speed Input
12Start Signal (-) / ECU Serial Data – ManualByte 2, Bit 1
13TPS Ground
14Air Temperature InputByte 5
15Coolant Temperature InputByte 4
165 Volt Supply (TPS/MAP)
17MAP Ground
18Upshift Indicator / ECU Serial Data – Auto
Connector CavityECU CircuitData Stream Relation
19B+ Latch
21Injector Control
22A/C Clutch Control
23ISCA (Retract)
24ISCA (Extend)
25Closed Throttle InputByte 2, Bit 3
27Timing OutputBytes 9, 8
28Engine Speed Input
29Start Signal (+)Byte 2, Bit 0
30A/C SelectByte 2, Bit 2
31TPS InputByte 12
32Temperature Sensors Ground
33MAP InputByte 3
34A/C RequestByte 2, Bit 5
35Oxygen Sensor InputByte 7

– When bench testing, o2 reading follows MAP reading.  0 – 3 o2 to 0 – 255 MAP
– When bench testing, pin 35 o2 is sensitive enough to pick up touch noise

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.