How to swap ECUs

Recently I had to change an ECU (Engine Control Unit or ECM – Engine Control Management) for Citroen Berlingo (2001., 2.0HDi).

As I had to go a long way to get this done – I think it would be useful for those who are in a similar situation. Actually, it isn’t so hard, but I found out that there is very little information about doing it (or it is very scattered) on the internet.

So here it goes.

How the problem occurred

About 4 months ago me and my girlfriend went shopping. It was in the middle of winter and kinda cold (approx. -20°C). After shopping and spending money for things we need (and don’t) we got in to the car. It started as usual, at least I didn’t noticed any difference, and the engine was still a bit warm from the recent driving. After driving approximately 300m and stopping at intersection, the engine suddenly stalled. No unusual warning lights, no strange noises – no anything.

After checking the fuel gauge which showed that there still is more than quarter full of fuel I tried to start the car a couple of times with no success. The starter motor turned and the glow plugs were heating as expected. I opened the hood and checked if there is maybe any visible sign of the problem, but the only two things I noticed was that a pipe from exhaust gas recirculation solenoid (EGR) was off and there was a small air bubble in the pipe from fuel filter to fuel pump. I put the pipe to EGR back on, but as I couldn’t restart the engine – got the car towed back home.

Later, after checking all the basic things why the engine wouldn’t start (fuel, electricity, heating, inertia switch), we (I and my father) decided to tow the car to workshop. Shortly, after about two weeks the technicians didn’t have a clue what’s wrong with the car. They’ve got the car connected to PC to read the error codes, but, as they admitted, their diagnostic equipment wasn’t so advanced and they only got up with some “unknown error codes”. The situation was kind of confusing – even their technician who claimed to be working with Citroen cars for 13 years, didn’t know the cause of the problem. The only possible solution we came up with was that we need to diagnose the car with more advanced equipment, preferably at the Citroen dealer.

As there was a waiting list at the Citroen dealer’s workshop, we had to wait for two weeks for our turn. After about 1 and a half weeks we got an advice from them that we probably need to change the ECU which would cost approx. 18 000 Kr (~3000 USD) including work. It is almost 2/3 of the price of the car itself! And even after asking them if they were sure that the problem is caused by faulty ECU, they said that they aren’t totally sure. As the car was equipped with immobilizer, I asked if it also needs to be reprogrammed or something (because I didn’t know myself), but the answer: “Maybe” unfortunately didn’t encourage any trust for them.

It was a pretty considerable amount to pay for something that neither we or mechanics weren’t sure if it could fix the problem, so we towed the car back home, third time.

Diagnosing the engine

I’ve got nothing left but to try to find the actual cause of the problem myself, unless I wanted the car to get sent to scrap yard, without knowing what actually happened.

According to various sources of information, I have to admit that the un-unified terms makes the learning process even harder. For example, a device that is meant to cut the fuel supply to high pressure fuel pump is called as:

  • pump element shut off solenoid
  • 3rd piston cut off solenoid
  • piston cut-off solenoid
  • fuel shut-off/cut-off valve/solenoid
  • fuel flow control valve (FFCV)
  • etc.

(You can read more about the HDI direct injection system – high pressure fuel pump, it’s components, functions and working principles – by reading HDI Siemens function; general synopsis, operating stages and injection system’s functions.)

Anyways, this thing (I’ll call it FFCV) plays very important role in the operation of diesel engine. After a lot of reading, testing and gathering of some more information I thought it very possible that the immobilizer (aka. immobiliser) was preventing the engine from starting. You can read more about immobilizer working principle by reading this little guide. There wasn’t any “click” from the FFCV after switching on the ignition and there was no sign of smoke when cranking the motor – it means that the fuel didn’t get to injectors. But after a while I found out that the immobilizer isn’t causing the problem – I checked that, for example, by inserting a key without a transponder – and the immobilizer light came up at the info panel. So I assumed that it isn’t blocking the FFCV or ECU.

Component locations

FPS - Fuel pressure signal, FPCV - Fuel pressure control valve (solenoid), FFCV - Fuel flow control valve, ECU - Engine control unit

To get a better understanding about the electrical situation for the car’s electronics I decided to get a LEXIA-3 Citroen/ Peugeot diagnostic tool on eBay. Actually, the whole diagnostic set itself costs approximately the same as to do the diagnostic for car at one of workshops here in Norway! Here’s how it looks:

Diagnostic set

Lexia-3 Citroen/ Peugeot diagnostic tool

About the tool from seller:

This is a dealer diagnostic scanner for comprehensive Citroen and Peugeot cars diagnostic. You can do all as a authorized dealer does.This diagnostics software allows you to perform complete diagnostics of all from 1995 until present models. Diagnostics is performed via OBD-II connector (which is located near steering wheel) or via manufacturer-specific connector (only older cars, pre-2001).

Unlike other universal car scanner tools which only read fault codes, this software performs nearly ALL the functions like the original dealer diagnostic tool. Our diagnostic interface contains K-Line multiplexor, CAN-BUS interfaces and SAE J1850 bus (both PWM and VPW).

In short – you can do all sorts of things with this tool, and I have to admit it – I’m really happy about this purchase. With it I was able to confirm that there’s no immobilizer fault, and read error codes like:

  • P0193 – Fuel pressure signal short circuit to + or open circuit,
  • P1641 – injectors control power stage,
  • P1210 – fuel pressure regulation electrovalve open circuit and
  • P1180 – fuel flow regulation open circuit.

After reading some engine testing tutorials I also checked the voltage supply wire to FFCV which showed +12 V as it should be, but I couldn’t find what voltage should be on the second wire as it showed stable + ~3.85 volts. Only after quiet a while I found out that the ECU is working as a ground switch for FFCV (and fuel pressure control solenoid and some others), therefore that wire should have very little resistance between itself and a grounding when the engine is on.

Now I was sure that the problem is that the fuel doesn’t get to injectors and that it is related to those three components – FPS, FPCV and FFCV. But to detect the source of the problem I had to use a reduction method – by disabling all unnecessary engine systems one by one and at the same time monitoring voltage supplied to the FFCV.



Here is a pin management for the Siemens SID801 ECU:

Terminal side (on the ECU) A-grey, B-brown, C-Black:

Wire side A-grey, B-brown, C-Black:

For better understanding of the pins and signals you can take a look at ECU pin management.

After disconnecting all the wire harnesses (connectors) from the ECU, I took out only the minimum necessary wires which are required for the ECU to work. They were: Bh1, Bf1, Bk2, Bg4 and (Cc1), Cc3 (Ch4, Cg4 – for the grounding).

To take out the wires from connector casing you have to remove the top cover by pressing two knobs on the outer sides, simultaneously sliding the cover towards yourself. After that you’ll need somewhat custom-shaped (needle) pins to push them from the bottom of the connector. I made them by grinding some nails to the exact shape (one triangle and other rectangle). You’ll have to use either of the pins for corresponding type of wire. After you have pushed the pin from bottom of the connector, you can pull out the corresponding wire.

To make this a bit shorter – I found out that when the pin Ae3 (Af3, Af2) is connected, it is causing the extra voltage on the solenoids/ control valves; but with out it the ECU gets incorrect voltage readings >20V, which is preventing the engine for starting. So I was sure that the problem was in the ECU, not any of the external systems. I found used ECU from eBay which was also SID801 (for PEUGEOT 307, CITROEN C2 C3 C4 C5 C8 and others) but with different serial, software and hardware numbers. I asked seller about it, but he said that it will work, so I purchased it.

Swapping, programming

Now the pre-final stage.

It is not able to simply take out the old ECU and put in a new one, if that car has an immobilizer, because the BSI will detect that the ECU PIN and Immobilizer codes does not match.

The PIN code and probably some other information like software and serial nummber are stored in special EEPROM chip. Particularly 93C56 in a SO8 packaging. To read and flash (write) it, you’ll need an EEPROM programmer and probably a SMD (SO8) 24Cxx, 93Cxx adapter. I used Willem EPROM Programmer PCB5.0 from

Willem EPROM programmer

To program the chip you’ll need either to desolder it or solder some wires to corresponding pins. I used the second method:

Connecting to the 93C56 EEPROM of the SID801 ECU

As you can see from the images – pins 3 and 4 are connected together to orange wire and pins 5 and 6 together to the blue wire. Pin 7 is not used. Those and other wires are correspondingly connected to the adapter which is inserted in ICSP (In Circuit Serial Programming) 5-pin male port of my programmer.

After selecting correct EEPROM in the programmer’s application you can read it and save as for example ORIGINAL.BIN. After that, connect to the new ECU. Just in case read it’s EEPROM and save it like NEW.BIN. Now open the ORIGINAL.BIN file and write it to the new ECU. If everything’s fine – congratulations! You can try to connect the new ECU.

After I put the new ECU, there were some little problems to read the Injection system using the diagnostic tool – I had to manually select the ECU type in the application. But, other than that – I was able to erase the old error codes and start the engine! Oh, happiness!

I have to admit that there appeared some faults on control panel – it isn’t showing engine RPM and the engine temperature gauge doesn’t show the current temperature. When I use the diagnostic tool I’m able to move the needles, also I am able to read the revs and coolant temperature using my laptop, so I’m a bit confused about that. If you have any idea why it is like that – I’ll be glad to hear it.

Meanwhile – the important thing is that the engine is running smoothly and it is able to drive the car.

If you have any questions, comments regarding the above information – I’ll be happy to hear them/ help as much as possible.


, , , , , , , , , , ,

  1. avatar

    #1 by razvan on August 3, 2011 - 00:37

    hy there !
    nice handling of a problem!
    i also have a friend with an Scenic 1.5dci with siemens injection system ,and also it keeps throwing P1641 code .the car runs great ,but i wonder what should i do.i also noticed a lot of bubbles in the fuel supply but that cured 100% after filter replacement.
    regarding your problem you may check the original ECU for internal power supply failures (like voltage regulators) maybe you already considered that ,and give it a good clean and reainstall,sometimes help.
    anyway you have my 10!keep up the good work
    razvan ,romania

  2. avatar

    #2 by cophan2009 on November 8, 2012 - 19:43

    hi, can you help show me what you select on your Eeprom writer, I have same Willem Eprom 5.0, it won’t read the chip type:s93c56 bd vh5 9357

    • avatar

      #3 by KristoZ on November 20, 2012 - 12:41

      Hi! Please make sure that all the 12 DIP switches are in OFF position, also check that the ICSP connector has been inserted correctly, as well all the wire connections. There are a lot of possible points of failure – mostly hardware related.
      The selecting and reading of the 93c56 was pretty straightforward – if I am remembering that correctly – I selected the chip from the menu and pressed the “Read” button.
      You can also try and check if Willem programmer is able to read other chip types (and working at all) – if you have some laying around (which is supposedly supported) put it in the ZIF socket and try to read it. If it succeeds then you”ll know that the problem is probably with the wiring or the chip is damaged.

  3. avatar

    #4 by John Kahts on May 16, 2014 - 22:02

    Hi All,
    Its been a while since my last post. I got hold of an ECU, BSi and transponder set via eBay, and after fitting did the starting part. The starter turned fine but it did not start. I realised that it was not getting diesel. After connecting the low pressure pump, which supply the diesel, it started straight away. I am now sorting to see why the pump does not come on by itself, maybe just a broken wire. This is a 206 MX and does not have a separate relay for the pump.
    The siemens systems do not make use of a low pressure pump.

(will not be published)