Alfa Romeo 145 146 Menu
Home 145/146 Specs Tuning OBD (KWP2000) Technical Downloads My Car Photos Forum Links Me Guestbook Computing

OBD Programming for the Bosch M1.5.5 KWP2000 (ISO 14230) Compatible ECU
As found in the face lift (later than mid 1999) Twin Spark 145 & 146, 156, GTV & Spider TS with M1.5.5 ignition, mounted on top of the throttle body. here

NB Does not apply to earlier Twin Spark engines (M2.10.3 & M2.10.4), they used an older protocol.

NB NB It won't work on your boxer engine either, they used an even older protocol than the old Twin Sparks.

The Program - Alfa Romeo TS Diag

Latest Version: 1.13.2 - Released 20/09/2005 - Check the Alfa Romeo Diag Forum
The Price for the software is £11.00 GBP, licenced per ECU. If you wish to use with more than one ECU (e.g. for trade garage etc), please contact me.

Buy The Latest Version Now for £11.00

The interface can be bought below, or sourced elsewhere or easily made (see below).

Tester Program:
This is used to test the interface & laptop you will be using to prove the program will communicate with your ECU, and secondly to provide a unique key to register the program.

Screen Shot of successful ECU read

Download Alfa_Tester v1.05 (zip/25k)
Please note, the airbag procedure is present, but is very flakey - use at own risk. For 145/146 the connector is behind the dash panel next to the airbag on the passenger side, for 156/166 it is on pin 3 of the 16 pin OBD connector - simply bridge this to pin 7, it is located at a different address to the main ECU so both can be connected at once.

Older Versions:
Download Alfa_Tester v1.03 (zip/22k)
Download Alfa_Tester v1.04 (zip/22k)

Main Program:
NB - You must place your licence file into the same folder where you extract the zip file to.

Download Alfa TS Diag M1.5.5 v1.13_2 (zip/223k)

Older Versions:
Download Alfa TS Diag M1.5.5 v1.13_1 (zip/209k)
Download Alfa TS Diag M1.5.5 v1.12_1 (zip/151k)

M1.5.5 ECU Information
Screen Shot 1 - Shows the ECU information such as the serial number, chassis number, the date the ECU was programmed, software version of the ECU, the odometer reading, the immobiliser status, and the maximum no. of revs the engine has reached, amongst other data. Also shown is the real time information populated. This contains such information as current rpm, speed, air flow, air temp, engine temp, voltage, lambda mv, throttle angle, injector timing, and various switch states (air con, full throttle, idle position, etc).
NB most of the data will read 00 as no sensors were connected at the time.

Error DTC Codes
Screen Shot 2 - Displays the DTC trouble codes - when the engine management light (or injector symbol) on the dashboard is illuminated the current fault code (and relevant item) will get displayed, and can be cleared from here. It also keeps a log of all faults, even if the fault is no longer present and the warning light is not illuminated. The error condition (open circuit, low/high resistance) is also displayed along with the component.

ECU M1.5.5 Reset
Screen Shot 3 - Displays the Actuator Functions - With these it is possible to check the current state of the following components and also provides you with the ability to control the component directly:

Modular Manifold
Timing Variator Solenoid
Fan low speed
Fan high speed
Airconditioning Pump
Water Overheating Light
Each Injector (individually)
Fuel Pump

It is also possible to reset the MDS learnt values and force the ECU to relearn operating values for sensors

Real time ECU information - RPM
Screen Shot 4 - Displays a graph of RPM vs Lambda Sensor voltage reading vs Lambda value.

Real time ECU monitoring - Lambda sensor
Screen Shot 5 - Displays a graph of just the lambda voltage reading when it has entered closed loop state.

ECU monitoring - speed accleration test
Screen Shot 6 - Displays the acceleration timing window.


_Check ECU serial no. and hardware & software versions (Screen Shot 1)
_Check the state of the CODE immobiliser (Screen Shot 1)
_Read & reset DTC codes (Screen Shot 2)
_Obtain real time data based on values calculated by the ECU such as Engine RPM, vehicle speed, air temp, air flow, battery voltage, throttle angle, lambda voltage, lambda value, self learning status (Screen Shot 1)
_Graphs for sensor values when in real time update mode with adjustable time scale on the horizontal axis (Screen Shots 4 & 5)
_Log the realtime sensor data to file with a time stamp against each reading. Log file is in .CSV (comma seperated value) format Sample
_Carry out actuator tests - open/close each injector, turn on the cooling fan, open the petrol evaporation valve, change the path to short or long for the variable inlet manifold, operate the variator solenoid, and finally reset the learnt MDS values (Screen Shot 3)
_Acceleration timing tests - measure the time taken to accelerate to a given speed and plot the results on a graph. The timing runs can be saved to a log file for later analysis, and multiple runs can be loaded and plotted on the same graph for comparison. (Screen Shot 6)

Planned Future Features

_Graphing function for the log file
_Realtime graphing function for the remaining sensors


O/S: Win95, Win98, Win2k Server & Pro, WinXP Pro
HW: Works on Intel 386 upwards, 1024x768 display, 1 free COM port
Interface: One that works with VAG-COM should be compatible with minor modifications (the connector)

FAQ - Program

1. Will this work with my interface?
If you have built the interface I detail above, yes. If not, then I cannot answer - as the interface is based on Andy Whittaker's interface, any interface which does basic voltage level shifting should work as well (+/- 5v ECU to +/-12v RS232).
It will therefore work with the basic VAG COM cable.

2. My laptop doesn't have a COM port, can I use a COM->USB convertor?
No - the program needs to use a physical COM port. There is no way (that I'm aware of) to make a USB port appear as a logical COM port. This is essential due to the rare baud rates used. There are PCMCIA cards which have COM ports on - but I have not tested with any of these, so they may not support the necessary baud rates.

3. How can I change which COM port to use?
Edit the file alfa_ts_diag.ini and change the necessary entry.

4. Will this work on my car?
It will work on an Alfa Romeo with M1.5.5 ECU - if in doubt try using the tester program, or contact me with your details. To check, the ECU is mounted on top of the throttle body, and should be marked with one of the following Bosch ECU numbers:           Alfa Romeo 156 1.8 16v TS           Alfa Romeo 156 2.0 16v TS		Fiat Bravo/a 1.2 16v           Alfa Romeo 145/146 1.8 TS 16v           Alfa Romeo 145/146 2.0 TS 16v           Alfa Romeo Spider/GTV 1.8 TS 16v           Alfa Romeo Spider/GTV 2.0 TS 16v           Alfa Romeo 156 1.8 TS 16v           Alfa Romeo 156 2.0 TS 16v           Alfa Romeo 145/146 1.4 TS 16v           Alfa Romeo 145/146 1.6 TS 16v           Alfa Romeo 156 1.6 TS 16v           Alfa Romeo 147 2.0 16v TS		Fiat Bravo/a 1.2 16v

5. The program does not wake up the ECU
Try it again - there are issues sometimes where the ECU just will not wake up. All bytes appear to have been sent correctly, but the ECU just refuses to wake up. In this case wait ~1-2 seconds before retrying. If this is not the case, then ensure no other software is using the COM port (such as mobile/PDA sync software, or a MODEM) and retry. If you still have no success then there could be an issue with the interface, or a wiring issue with the connector or even the ECU itself not responding. Also make sure your laptop is not running other resource hungry programs at the same time, and that disk activity is not going wild. Timing is critical, if Windows gives another process more CPU time than the diagnostic software, often the bytes do not get sent at the correct time interval.

6. When using the real time data why does communication drop after about 5 minutes?
The ECU just gives up. I cannot figure this out - bytes get sent successfully, but the ECU will just give up - reconnect and everything will be fine again.

7. I'm having a lot of communication issues, is there anything I can do to change the timing?
Yes - edit the file alfa_ts_diag.ini and change the interbyte1 & interbyte2 times.

8. Who is this program aimed at?
The home mechanic, independant garage, or anyone who is interested in monitoring exactly what the engine is doing, the realt time data make it particularly good for engine tuners.

FAQ - General

1. How do I get the program?
It will be available to buy from here for a VERY modest price.

2. How do I become a tester?
Just because your engine management light on does not grant you rights to become a tester. I have been able to simulate many error conditions myself simply by unplugging essential engine sensors. You can become a tester by emailing me with a good reason. One good reason might be that you live near me so that I can see the test for myself! Or get down to Ace Cafe (North Circ) every 2nd Thursday of the month for Italian car night, I usually have my laptop/interface with me.

3. Can I buy an interface from you?
No, I only have 2. One is a spare in case my main one breaks and I'm not selling either! You can check ebay for LLC, or join a VAG themed forum and join in on a group buy on their cables, then when you get it you can modify it. I may consider making & selling the interface if the demand is great enough.

FAQ - Support

NB Support can be offered for this software by myself. If you have any issues please don't hesitate to email me at or to post in the Diag Forum at

1. Cannot find file MSCOMM32.OCX
Please download from here (ocx/102k) and place either into the same folder as the program or into the \Windows\System32 (or \Winnt\System32) directory.

2. Cannot find file MSSTDFMT.DLL
Exact error message:
Run time Error 713
"Class not registered"
"You need the following file to be intalled on your machine: MSSTDFMT.DLL"

Please download from here (dll/116k) and place either into the same folder as the program or into the \Windows\System32 (or \Winnt\System32) directory. You then need to register the .dll file by clicking Start -> Run -> regsvr32"C:\windows\system32\msstdfmt.dll"
Type the exact text (with quotes) above into the box, changing the path if necessary, and then press the Run button.

General Information

The K line is used for initial unit wake up & all following communication. There is no seperate L line needed for wake up or otherwise.

The ECU is mounted on top of the throttle body here

The ECU can be found at address 0x10h (16 dec)

The diagnostic plug for the ECU on the 145/146 models can be found on top of the offside suspension turret. Photo

The diagnostic plug for the ECU on the 156/166 models can be found behind the panel underneath the steering wheel

The black 3 pin connector is the one we are looking for, only 2 wires are used. Black = signal ground (to ECU), white = K line (to ECU).

The opposite gender plugs are made by AMP and TYCO and can be bought from Farnell/RS/Maplin

The interface used is a generic LLC (Line Level Convertor), from +/-5v (ECU) to +/-12v (rs232 standard)

Purchase ISO 9141-2 Interface

3 pin interface Tested 3 pin interface for £31.37(€46.04) including p&p. Please contact for shipping to other countries. 3m cable length with DB9 connector. (Suitable for 145/146, check for early Spider/GTV and 156)
Buy 3 Pin Interface Now for £31.37(€46.04)

3 pin interface Tested 16 pin interface for £31.37(€46.04) including p&p to the UK only. Please contact for shipping to other countries. Contains additional plug for airbag connection, 3m cable length with DB9 connector. (Suitable for 156 & Spider/GTV)
Buy 16 Pin Interface Now for £40.00(€46.04)

ISO 9141-2 Interface Schematic/Drawing

AJ OBD 16 pin or 3 pin LLC interface based on VAG simple interface
CAD Schematic/Drawing of Interface (Thanks to JAM from the forum)

Which is based on the Original Circuit Diagram

Component Layout Schematic (pdf/50k)
PCB Component Layout Schematic (pdf/64k)
PCB Layout (copper side) (pdf/32k)

OBD Connector Pinout:

Pin 2 - J1850 Bus+
Pin 4 - Chassis Ground
Pin 5 - Signal Ground

Pin 6 - CAN High (J-2284)
Pin 7 - ISO 9141-2 K Line
Pin 10 - J1850 Bus
Pin 14 - CAN Low (J-2284)
Pin 15 - ISO 9141-2 L Line
Pin 16 - Battery Power (+12v)

ISO 9141-2 connector required pins in bold

The 16 pin OBD connector was not present in the 145/146 (at least I've never found it, but apparantly it does exist according to AutoData), so a 3 pin general AMP automotive connector is needed instead. You could as I have done run one of each connector, just split the signal + and - wire, this makes your interface useable with cars with 16 pin OBD connectors as well. The interface will need a +12v, normally supplied by the OBD connector - but if it's not there, you will need to run a seperate cable - i just used a croc clip on the end so I could connect it straight to the batt positive terminal. The interface is of the same type required for VAG-COM.

^ Back To The Top ^

Contact Details