Słomkowski's technical musings

Playing with software, hardware and touching the sky with a paraglider.

Installation of Webasto Thermo Top Evo heater in Mercedes-Benz W124

Detailed writeup of installation of Webasto Thermo Top Evo auxiliary heater in '94 MB W124. Contains some quirks like using W-BUS emulator and fooling the heater to use already-present circulation pump instead of separate one.

Winter has not kicked in for good here in Poland yet at the time of writing this article, but being prepared for it seems like a good idea. Speaking of preparation: I decided to install parking heater, so called Webasto, in my ‘94 Mercedes-Benz W124 diesel. These cars optionally came with parking heater DBW46/BBW46, but these are hard to obtain and quite complicated; to make things worse, spare parts are no longer available. I chose to use much more modern and compact solution - Webasto Thermo Top Evo. I wanted to keep the interior or the car original, so I used genuine clock/timer from W124, as shown in the cover photo.

The installation process for generic vehicle is described in the official installation manual, no need to repeat it here. I’ll just provide the insights about installation specifically in my car. What differs my setup from the one described in the manual:

To clarify things: when I write Webasto, I mean the whole parking heater installation. When I write heater, it means just the rectangular module, which is the central element of the system.

For starters, all relevant documents I have found are gathered here:

Additional references:

Diagnostic interface RS232 - W-BUS

Thermo Top Evo uses so called W-BUS (Webasto Bus), which is in fact K-line, single line of two (K and L), defined in ISO 9141-2 and ISO 14230-4 (On-board diagnostics standards). It is a low speed bus using +12 V an 0 V as hi/low states respectively.

Schematic of RS232 - K-Line interface.
Schematic of RS232 - K-Line interface.
↑ click to enlarge ↑

I know, it’s quite old-fashioned, but I’m a bit nostalgic about RS232. The circuit is straightforward, I’ve assembled it on a piece of universal board. You can use almost all low-power NPN and PNP transistors. I myself used male DB9 connector and null modem cable. Replacing it with female connector requires swapping RXD and TXD pins. The circuit also works with USB-serial converters without issues.

Instead of building the dedicated RS232 converter, you may probably get away with using OBD-II interface. K-line is on pin 7. It is important that the device presents itself to the PC as serial device, which is to be used by Webasto Thermo Test software.

W-BUS is available at timer connector, normally connected to 1530 or 1533 timer. Pinout:

Color: Function:
red +12 V
brown ground
yellow W-BUS

Testing the heater before the installation

To test my Webasto before the installation, I set up an ad-hoc circuit consisting of the heater module, fuel pump, circulation pump, water tank and some rubber coolant hoses. The tank was filled with demineralised water. Fuel line was put into small canister of diesel. 12 V power was provided by a server computer power supply. Probably any ATX will do as well: about 20 A is needed during start-up sequence.

Diagnostic software for the heater is Webasto Thermo Test. Versions 2.x are freely available on the Internet. The software works well under Linux (with Wine too). You just have to map serial port to be visible under Wine beforehand.

Before the test run, you can and should test each component of the system separately. You should also prime the fuel line, so it is filled with fuel. This is the screenshot of WTT when idling:

Thermo Top Test Wait State - idle.

After you start heating sequence, circulation pump turns on, and you should start hearing the clicks of the fuel pump after a while. Status of each subsystem is visible in the Overview window. Eventually, it should look somewhat like the screenshot below. Water goes hot quite fast, so better stop the heating sequence after a while.

Thermo Top Test Full Load.

Mechanical installation

The car is not equipped with air conditioning, so there’s a lot of free space under the power steering pump. This is the only viable place to install the heater I’ve came up with. I’m not sure if there would be enough space at all if there was an A/C compressor present. The other possible places to install the heater are empty areas between the wheel well and the front bumper (on both sides), but that would require much more complicated coolant hose installation.

The heater was installed as high as possible to make room for its muffler below it. The exhaust has to follow straight line, tilted a bit down towards the outlet. This is to prevent condensing water from staying in the lines. These issues are detailed in the manual.

To fix the heater to the chassis, a metal bracket was welded up. One of the upper arms is welded to the original piece of metal holding the cables (shown in the first photo). The bracket is screwed to the chassis by three metal screws, originally siting there. I had concerns whether this is strong enough, but after yanking it a bit, it seemed that it will hold indeed.

Coolant hoses

On the cooling system diagram I marked (red and blue) places where it is preferable to integrate the heater. Red place is just at the engine’s outlet. Blue place bypasses windshield washer fluid heater, but the fluid will be heated up by returning coolant anyway.

OM60x coolant diagram.
OM60x coolant diagram.
↑ click to enlarge ↑

I decided to put the heater at blue’s. This was especially convenient because I avoided cutting original hoses altogether, just redirected and extended them. The line which originally had gone from the engine to the heat exchanger, was slightly bent and extended with 18 mm hose. The hose has to be specialised kind for coolant circuits. The other one goes from the heater directly to heat exchanger inlet.

Exhaust lines and silencer

Because of space constraints I was forced to use non-original muffler, a smaller one, which usually goes with older Webasto models, like Thermo Top. The original one was too big to ensure straight line of exhaust. This modification won’t cause any issues with heating process, but it is probably a bit noisier.

I haven’t taken the photo of installed silencer, sorry. I’ll update this article with photos as soon as I need to make some repairs in this area, which might happen in the future.

Fuel pump and lines

The manual recommends installing separate fuel line directly from the tank and putting the pump nearby. It is however possible to leverage engine fuel return lines. Webasto fuel line has 5 mm external diameter, MB’s fuel line - 8 mm internal diameter. I used 8 mm - 5 mm - 8 mm tee-splitter. I also added a small filter, it is not mentioned in the installation manual, but I added it for good measure.

Warning! When leveraging engine’s fuel lines, it is possible to drain the tank completely when running Webasto long enough! You should never go below reserve. Separate line with standpipe short enough ensures that when fuel level goes below the lower end, the heater shuts down.

Electrical installation

W124 is an old car, so its electric systems have no smartness, that is: no diagnostics and no digital communication. This has its perks, namely being modification-friendly. I’ll describe each component separately and then - the overall wiring.

Fragment of the electrical schematic concerning heating subsystem. Version without A/C.
Fragment of the electrical schematic concerning heating subsystem. Version without A/C.
↑ click to enlarge ↑

I extracted the relevant part of the MB’s electrical schematic and color-marked important places:

Schematic marking: Function: Cable marking:
green circulation pump M13 brown/green + black/pink
red +12 V of valve solenoid Y21 black/pink
blue first gear of the blower green/blue

Circulation pump and valves

The official manual assumes that separate brushless circulation pump is to be installed. However, I decided to use the one which is already a part of interior heating system. That means that there’s a need to drive the pump both from Webasto and from native car heating system. Let’s look again at the coolant circuit. Hot coolant from the engine (or Webasto) goes to the heat exchanger and then to the electromagnetic valves A31y1, A31y2. The valves are driven by the car heating electronics. They are normally-open, so we need to ensure that they are not powered when Webasto is running. Looking back at the electrical schematic, we see that the valves are driven open-collector, so we just need to disconnect supply +12 V to ensure they’re fully open.

The circuit has to do following things:

This was done by three automotive relays as shown in the schematic. This automotive SPDT relay guide shows how to wire an ordinary car relay.

Circulation pump circuit.
Circulation pump circuit.
↑ click to enlarge ↑

But why transistor with accompanying elements? That is because Webasto constantly checks if the pump is connected - it does this by sending 2 ms pulses of 12 V every 100 ms when heating is turned off. Without delay circuit, it would generate an audible clicks in relays, which is annoying. It also draws power. The transistor with capacitor fools Webasto to accept this circuit as brushless pump.


The blower is originally controlled by mechanical switch S4 and resistor array R14. The switch just connects subsequent resistors in parallel on each gear. First gear cable is marked blue rectangle by me on the schematic. I used genuine MB STST relay with integrated fuse. I replaced the fuse with 25 A one, which is the same value as blower’s main fuse.

The relay simply connects 12 V supply to the first gear resistor. However, because of the switch S4 workings, when second gear is selected, the blower will run on second gear and so on. This might cause fast depletion of the car battery. SPDT relay should have been used, but I didn’t have the one compatible with the fusebox sockets. Guess the switch should never be left on max gear when Webasto is scheduled to run.


My timer was extracted from other W124, which had Webasto as an option. This timer, apparently known as 1522, was put in many kinds of vehicles, with some slight variations. Versions for 12 V and 24 V exist. My timer was manufactured specifically for MB as indicated by MB-specific connector.

Down below is a block schematic of the timer extracted from MB documents. Originally, the pinout was as such:

Color: Function:
red +12 V supply voltage, always present.
brown Ground.
gray/blue +12 V illumination light, lights up the buttons.
black Supply voltage for the heater, switched on by internal relay. Originally went to BBW/DBW46 controller box.
red/blue A bit tricky, unused in some installations. When not connected, green status LED lights up when relay is on. Looking at the schematic of BBW/DBW46 we can determine that the LED is shorted by circulation pump. So the diode lights up only when circulation pump is running.
W124 Webasto timer pinout.

I thought it would be a good idea to replace green status LED with red-green one. Green will be still powered from the relay, red one - from the circulation pump. In this case, we can visualise following states:

Color: State:
green Timer activated Webasto, but it haven’t started running yet.
yellow Webasto is activated and circulation pump is running.
red Webasto was turned off, but the pump is still running, probably the system is in cooldown phase.

Old green diode was removed, a piece of the board was cut. Green part of the new diode was soldered to the old pads, red one was connected to the circulation pump through 680 Ω resistor.

Another problem which required attention was that Thermo Top Evo accepts only commands sent though W-BUS. Analog timer is just a switch in fact. Fortunately I found a small module named OLB 400, manufactured and sold by this seller. The module generates start and stop commands just as 1533 digital timer.

W-BUS converter/emulator module.

However, I noticed that the module drew a lot of idle current, almost 17 mA. This was unacceptable. I notified the manufacturer, and they sent me a new module with updated firmware. The idle current dropped to ~6 mA. Almost good, but not quite. I noticed this was caused by on-board 78L05 stabilizer, which normally draws about ~5 mA of bias current. To mitigate this I removed the stabilizer and powered the module directly from +5 V which is available on timer board (at pin 16 of ‘4060 IC, to be exact). It decreased overall current consumption to ~2 mA when idle, which is completely fine.

I made a new wiring harness for the timer with two Superseal connectors: 4 pin and 2 pin. It gave me 6 pin overall, but 5 are used:

4-pole plug:

Pin number: Function:
1 Supply +12 V, always available.
2 Ground.
3 Circulation pump - running indicator.
4 +12 V console illumination.

2-pole plug:

Pin number: Function:
2 +12 V for independently starting the heater, perhaps by remote control. Currently unused.

Wiring everything together

I made a wiring harness, the cables were put into wire conduct, their respective ends were covered with wiring harness tape. It starts at the heater itself, diverges at the fuel pump, and ends inside the fusebox.

Inside the fusebox there is fuse E for the heater itself and blower relay with its fuse integrated. +12 V is supplied from the binding post just under the box. Ground is available there too. I added three fuses overall:

Fuse: Value: Description:
Main 20 A Placed inside the fusebox in socket numbered E. Originally reserved for heated seats, but I don’t have this option.
Blower 25 A Separate fuse for the blower when turned on by Webasto. The same value as the original blower fuse.
Timer 1 A Separate fuse for the timer, mounted on the cable.

Cables from the fusebox were put in the existing cable tray under the steering wheel and go to the center console. Here they diverge to the blower, the timer and the circulation pump driver. Blower cable should be 2.5 mm² since it may carry potentially large amount of current. Other wires’ cross-section is not critical.

Timer is connected through Superseal connectors. The harness then follows one of the existing cables to the right side of the vehicle and goes through one of the cable glands to the compartment behind the battery. Here it connects to the circulation pump relays.

Milling hole for the timer

W124’s center console is made of veneered plywood with lacquer finish. It would be almost impossible to cut the hole by hand, so decided to mill it. I designed the shape of the hole in FreeCAD. Design files are published in the project repository. The repo contains FreeCAD project and also Grbl file. Warning! I cannot guarantee that the Grbl file is 100% correct. I had some issues with milling machine going haywire, so beware!

I borrowed DremelCNC, a small CNC milling machine constructed from 3D-printed parts as shown in this description. It is Grbl-compatible; I myself controlled it with cncjs, but several other tools exist. Spindle was powered by Proxxon FBS 240/E mini drill.

End mill.

Equipped with Drillpro 3.175 mm end mill (SKU192030, shown in the photo), it did a good job. Milling parameters were as such:

The starting point is in the middle of the hole, as seen in the photos. It should be distanced 11 mm + 21 mm = 32 mm from the upper edge (by upper I mean the side towards the front of the vehicle). The measurements were taken from the other car which had Webasto as an option. In retrospect, I should have had moved the reference point about ~5 mm up so the timer had been more visible; currently the buttons are obscured by the gearshift from the driver’s perspective.

The CNC went haywire when finishing, fortunately the visible area had been already successfully milled. I had to cut the remaining hole by jig saw.

Final thoughts

I had managed to finish the installation just before the winter started. After a couple of runs with outdoor temperatures ranging from 0°C to -8°C I highly recommend installing it. Snow just comes off the warmed-up vehicle by itself and the comfort of being in the pre-warmed interior is hard to overstate. If you have any questions regarding the installation, I’ll gladly answer.