Making the adaptor plate

[2020-08-08]

Another week or so of big progress. Tomorrow (sore muscles permitting) I will test fit the motor and gearbox for the first time.

Adaptor Plate

Over the last week my daughter and I have measured and drilled the holes in the two halves of the adaptor plate (marking them out with a transfer punch), bolted them up to the motor and gearbox respectively, welded on some captive nuts, then welded the two plates together with a square made from the box section in the middle. It took two hole saws and a lot of sharpening of bits but we got there in the end. As of today the whole assembly can be bolted together and it is ready to go into the car for test fitting.

There's still lots of work to do on the adaptor plate. It will need cutting down to save a bit of weight. Some of the holes need adjusting. A few more welds wouldn't go amiss. And then it needs painting. But first we need to make sure it all fits, and work out how the engine mounts will bolt up. Plan is to use some of the 40mm box cantilevered off the motor plate to bolt up to the existing engine mounts. The two circles of steel cut out from the centre of the plates are actually a perfect fit for the mounts. So those will be welded on underneath. It will all make sense when you see it.

Coupler

The steel tube I bought was for the coupler to link the gearbox and the motor. I bought two diameters, but it turns out I only needed the 37mm as both clutch centres will sit inside it if turned the right way around. The BMW clutch is a really nice tight fit so getting that square was fairly easy. The Fiesta clutch less so. It has funny little stepped splines that take a little balancing to get them square. And when I say 'balancing', I mean welding it, spinning it, cutting one of the welds off, hitting it with a big hammer, welding it again, until it looked pretty straight.

This just left me with the outside of the clutch centre to sort out. There's a few rough bits from where I cut it out with the angle grinder. I'd been looking for a local company to turn it down in a lathe. But then I got chatting to my neighbour from three doors down and it turns out he has three lathes in his basement workshop! It's with him now.

Before I dropped it round to him, we used it to make sure everything aligned properly before putting in the final welds on the adaptor plate. Sticking the box into gear I could rotate the prop end and watch the motor turn through the hole left by the clutch cylinder. Despite the rough way in which the coupler was put together it all seems to spin pretty smoothly. Hoorah.

CANbus

While I've been working on the hardware in the day time (when I can get away from work), I've been working on the software in the evenings.

So far, I have hacked together a little sketch for an Arduino Mega clone - one with loads of easily accessible i/o pins - that can read the CANbus data from the inverter and change its state or trigger actions based on what it sees. The first thing it does is switch between a series of states: Off/On/Charging/Run etc. Each of these states will require a different set of actions. e.g in run, I have two thermostatic switches coded that will turn on the cooling pumps for the motor and the inverter when they reach a defined temperature. These will be triggered by relays connected to the Arduino.

Next step is to start reading in the shunt data and then mount it all in the car so I can begin interacting with the ABS/ASC. Fortunately, all the devices seem to run at the same bus speed (500kbps).

I also need to knock up a mount for the Arduino, CANbus interface, and various sundries. I bought an old ECU/DME off a BMW forum and I plan to harvest the connector so that I can re-use the existing loom and connectors. The stuff I want to fit in won't go in the old case so I'll 3D print something that will slot into the old cradle.

Back to navigation


Conscious coupling

[2020-07-25]

Per our plan from the last entry, we have spent much of the last week cleaning the engine bay and components and preparing to start putting things back together. There's still some cleaning to do (transmission mostly) but we're now at a stage where we can start building. First order of business is getting a coupler made to link the electric motor to the transmission.

First thing I noticed on removing the flywheel from the old motor is that it is bloody heavy. A dual-mass unit, it is rather more weighty than I was expecting and I am concerned about the load it will place on the electric motor's bearings - a load I don't think they are designed to bear. You can see pictures of the flywheel temporarily connected to the electric motor on a 3D-printed test of my original coupler design below.

I could replace the heavy flywheel with a light weight aluminium version but that will add another couple of hundred to the build cost. So I am tempted to just ditch the clutch idea and connect the output shaft of the motor directly to the input shaft of the transmission. We shall see.

The next challenge is getting the coupler made. My original plan was to put something together in Fusion360 and send it off to Protolabs to have it made. But this hasn't worked out. Protolabs' machining capabilities, although sophisticated, can't reach inside the 19mm hole of my original coupler design to carve out the splines that mate it to the motor. They can 3D print it instead, but this would cost £1400 - completely out of my budget.

I have found a local company (well, Oldham) who specialise in drive trains and can cut me a slightly redesigned adaptor using wire erosion. But this would cost over £400 for the single piece and I would then need a second piece made, albeit much simpler, to stop the coupler sliding on the shaft under pressure from the clutch (if I use the flywheel) or to mate to the input shaft on the transmission (if I don't).

The alternative is to get down and dirty and make my own coupler by finding things that will fit the splines on each end. I already have a clutch plate that mates to the transmission. The challenge is finding something that mates to the motor. My fellow EV adventurer Jamie has now acquired the same motor I have and believes that a Suzuki Jimny clutch plate will fit. I'm not so sure as the spline count doesn't seem to match. We will find out today when he picks one up.

Looking at the specs for them, an old Fiesta clutch has a 19mm bore and 17 splines. I'm wondering if that might work instead. I might drop by some garages today and see if they have any old clutches lying about.

The challenge then is making something that is sufficiently balanced to spin at 7,000 RPM without exploding. It needs to be very carefully balanced and that is hard to do without a lathe. I might have to outsource it anyway, if I were to go down this route. Or I might be able to make something good enough to get me going...

In the meantime I've ordered some more parts. My high voltage cabling (doubly insulated 35mm2 welding wire, and the conduit (to give it an extra layer of protection) is on the way.

I also bought another steering rack, this time from a Mini, because the 1-Series rack didn't fit in any dimension. It was too wide and the electric motor fouled the anti-roll bar. And the angle of the input shaft was all wrong. If this Mini one doesn't work, I may have to go back to the hydraulic one and buy an electric pump. But that feels like a messy solution for an electric vehicle.

The project continues...

Back to navigation


Engine be gone

[2020-07-20]

Yesterday was a wonderful day. The sun shone and my daughter and I spent the entire day outside, working on the car. She proved, again, that her mechanical instincts are sound and, dare I say it, sharper than mine. While I was hunting around on forum posts for safe alternative jacking points, she was sat by the car saying repeatedly "Dad, it's here." She was right of course.

It was a very productive day. The old engine is finally out, along with the gearbox. The two are separated and the flywheel is off for measuring. We also removed the exhaust and some of the heat shielding. And made a start on some of the areas of the bodywork that might need attention for the MOT - notably the inner sill on the driver's side which has a little more rust than I thought. We'll know more once we get the outer sill completely removed.

Big job now though is finishing my CAD model for the electric motor to flywheel adaptor. Then I can send this off to Protolabs to get it machined up. Plus we need to do some measurements for the adaptor plate between motor and gearbox and pop over to the steel stockholders to get some plate and box section.

Oh, and we need to swap the steering racks over now that the electric one has arrived and the old hydraulic one is mostly out. Need something to separate the tapers on the rod ends though.

Finally, before we start the install process, there is lots of cleaning and prep to do. Looks like the motor was a little leaky (apparently common with M43s), so everything around and under it is pretty filthy. We'll give the transmission a clean up as well, while we're at it.

Back to navigation


Doing the can-can-CANbus

[2020-07-19]

With the motor running and the rain falling yesterday, I put some time into the electronics that will run the car, beyond the inverter. I stripped out the existing ECU (what BMW calls a DME) from its neat little hidey-hole up against the driver's side bulkhead in the engine bay. It sits in one of a pair of slots under a water-proof cover and I figure I may as well re-use this arrangement.

My plan is to re-use as much of the existing loom as makes sense, so I'm aiming to get hold of a knackered DME that I can cannibalise for its connectors. These will then slot into a 3D-printed case that itself will slide into one of the slots.

Inside this case, my current plan is to use a Mega 2560 Pro microcontroller. I came across these thanks to Les Pounder's blog. They run a 16MHz ATMEGA 2560 chip, the same as an Arduino Mega, but have 70 i/o pins in a nice small form factor and all of them are easily accessible. This will give me loads of scope for control of relays and both digital and analogue inputs - for example, for the RFID-based immobiliser that I'm thinking of adding to replace the one that is built into the engine management system that I will be selling.

Connected to the microcontroller will be a relay board, an MCP2515 CANbus interface, and maybe a serial interface for the BM's old K-line diagnostics (though that may not add much value - we shall see)

I am not sure how many relays I will need yet but I have space for a 16-way board. Probably overkill but nice to have the capacity. I did think about routing the 5V signals from the inverter that control the pre-charge relays and contactors over to this position and then routing them back again to the high voltage junction box. But I really want to keep any 5V signal wires as short as possible, however well shielded they may be. So I have returned to my original plan of having a 4-way relay board in a small box connected directly to the inverter, right next to the AMPSeal connector. This is on its second design revision at the moment. Based on the layout currently in my head (all of which depends on how the motor and batteries fit in - i.e. TBD), there will then be just a short hop from this box to the HV junction box where the contactors and relays sit.

The CANbus interface is what will allow me to pull data from the inverter and charger and feed it to the dashboard or other places. It should also allow me to control and monitor the ABS and Active Stability Control system (ASC). I'm completely new to CANbus apart from a few experiments earlier in the project, but with some help from the forum, am now happily gathering messages from the inverter and starting to translate and store them in a form that I should then be able to relay back out to the dash - e.g. recreating the signal that drives the oil temperature sensor with data from the motor or inverter.

Back to navigation


Rotation!

[2020-07-16]

It has been another rollercoaster of a week on this project. At the end of last week I posted my inverter control board off to Jamie on the other side of the Pennines for him to test it in his setup. He found the same problems I did and set about trying to fix them. After much experimenting he came to the conclusion there was a slight short on the pin of the 50-pin connector (bane of this project) that carries the signal for the DC supply voltage. So, he wicked away some of the excess solder around the connector and...success! He got a stable reading on the DC bus.

Jamie kindly got the board straight in the post to me and I received it on Saturday. Excited and confident it was now working, I slotted it back into the Prius inverter, reconnected everything and bolted it all up. Where it promptly worked for all of ten minutes before failing again. Clearly the short was still there, now just intermittent. I tried cleaning around the connector some more but even though I got it working for another ten minutes, it clearly wasn't going to be reliable.

So, on Monday I took the board back to my local repair shop where Nav desoldered the 50-pin connector, removed one from the stock board, and put this in its place. I got the board back yesterday and finally, it works!

I was too tired last night to do anything really exciting with it, so I set it aside for today. Work out of the way I tried the basics of getting the motor spinning. WARNING: we are entering territory here where I know very little right now.

The first thing I did was try to get the motor spinning with the default firmware. This was relatively straightforward - with some help from the forum. If you've been following this project you will know that I installed a heating element from a washing machine as a current limiting resistor. This was chewing up too much current, starving the motor. So I swapped this out for a 20 amp fuse, stuck the inverter in manual mode and hit the motor with some hertz and some amps. And sure enough, it turned.

The nature of my motor (synchronous) means that you need a variation on the firmware to control it properly. This is called 'field oriented control' and if I'm honest, I don't really understand it yet. But I do understand how to update firmware - especially as the OpenInverter software makes it so easy. So I downloaded the latest FOC firmware, stuck it on the board and started tweaking parameters.

One I had checked the parameters matched my board, I started going through the setup process for my motor documented here. Almost immediately the motor started spinning freely with very few amps applied.

I've done some basic tuning now so that the throttle controls motor speed. But I have a few issues: it takes a lot of throttle to start the motor and then it slows at half throttle. This might be an issue with the inverter complaining about a lack of cooling, so I'll add that tomorrow.

Back to navigation


Pedal to the...plastic?

[2020-07-09]

So, I've now ruled out human error on the inverter control board. I sent it across to a fellow OpenInverter forum member on the wrong side of the Pennines and he dropped it into his working setup. Sure enough, the DC supply voltage was all over the place. He's kindly trying to work out why now. In the meantime, we're cracking on.

We're making progress on three parts of the project: the throttle pedal, the high voltage junction box, and stripping the car.

Throttle Pedal

In this project I'm using a BMW 1 Series electronic throttle pedal to replace the old mechanical unit. The challenge is that - understandably given the ~20 years between the two cars - they have different fittings. So I've been working up an adaptor that will allow the 1-Series pedal to drop into the Z3 mount. This is 3D printed from PETG and currently on its third iteration

My 3D printer has chosen this moment to play up, so I can't print the latest - and what I hope will be the final - iteration straight away. But it's nearly there and I should have it sorted this weekend.

HV Junction Box

One of the first things I got working with the inverter was the high voltage electronics for the drive system. This is a relay and two contactors (effectively high voltage/high current relays) that pre-charge the capacitors in the inverter then connect it to the full force of the main battery pack, under control from the clever EVBMW control board. The next step is to assemble all this, along with a massive fuse, and maybe some other gubbins, into a weather-proof junction box

I've narrowed down my selection of boxes to a variety of ABS units with steel mounting plates in the base. I'll probably order one this weekend. In the meantime I've received the standoffs I need to mount the high voltage connections to. Just need some bus bars now.

Engine Removal

Turns out the M44 engine I have is worth a few quid. If I'm lucky I'll recoup the entire price of the car, minus delivery. So I'll be careful getting it out. Ancillaries are first and my workshop now contains some plastic trim and an air box. Radiator and some other bits will come out tomorrow, work permitting - I've started to get busy at a financially-welcome but project-blocking time.

Engine crane ordered from eBay (£130) has arrived and will be assembled to lift the lump out this weekend with a little luck. Then it will be on to a pallet and covered with a tarp ready for eBay listing.

Onwards and upwards.

Back to navigation


The price of ignorance

[2020-07-04]

Progress over the last two weeks has been slow to non-existent. Two steps forward and two steps back. The problem is this: I am feeding around 30 volts into the inverter. The inverter is reading anything from 3 to 150 volts. Why? I have no idea.

First thought was that the connection between the ADC (analogue to digital converter) on the microcontroller and the sensor on the inverter was broken. But I had the board looked over and any dodgy looking connections on the 50 pin connector between the two fixed by a local electronics engineer. He had it under the microscope and all that should be ticketyboo. I checked the path with my multimeter and it seems to be fine.

Second thought was that the power supply to the Toyota board through which the sensors connect was insufficient. This came from me doing some voltage checks on my logic board and finding that the 5V and -5V supplies were a little low. Sure enough I had missed a required modification to the supplied board to swap out one of the resistors that controls the 5 volt supply. I hadn't realised this was still required on boards of my revision. So, back to the local electronics engineer to get that resistor swapped. Now I had a really solid supply voltage and... still the same issue.

Third thought was that maybe I just had a bad inverter? Only way to test this - at least in lockdown - was to go back to eBay and find another one. Unfortunately testing requires taking the inverter apart so there would be no way to return it. I stripped the control board out of my old inverter, popped it in the new one, bolted everything back together and... same result.

Now this is interesting because it confirms the problem sits either with my board or with something idiotic that I'm doing. Only suggestion from the forum so far was a bad or missing connection somewhere but I've been around and checked everything and the result is the same. Hmmm.

Unfortunately almost none the steps in trying to resolve this problem is free. Because I've learned (expensively) that I'm not good enough at soldering to handle surface mounted stuff, every modification to the board costs a few quid. And a second inverter was another £150. I can't really afford to keep thrashing around in the dark.

So, I'm going to need to find some help, through friendly people on the forums or spending some more money on consultancy from the person who designed the logic board.

One way or another I'm going to get this project done. I know that these moments of frustration will just make it more rewarding in the end. But right now the price of my ignorance feels pretty high.

Back to navigation


Tilt and slide - fixing the driver's seat

[2020-06-21]

There was one electrical job left on the car that I could do while waiting for the builders to finish and clear the driveway, and for the electronics engineers I had contacted about fixing the inverter control board to get back to me. The driver's seat has both electric slide and tilt, in theory. But only the slide was working. Hit the switch for the tilt and you would get a click and tiny shudder but not a lot else. So I decided to sort this while the sun was out (briefly).

Hood down, I removed the two bolts and two nuts that hold the seat down, following the instructions on the ZRoadster forums. I then unplugged the two cables at the base and flipped the seat upside down to take a look at the mechanism.

Unsurprisingly for a 21-year-old car, it was pretty grim down there. Lost makeup containers, chewing gum packs and various other detritus, as well as some spider webs. I cleaned it all up as best I could then set about understanding how the mechanism worked.

The tilt mechanism is driven by a threaded rod that slides in and out of an aluminium retainer. I undid the nut from the pin that runs through one end of this retainer and then levered it out, thinking I would be able to spin it on the thread. But it wouldn't turn at all.

Confident that I was on the right line, I grabbed an adjustable spanner and fitted it to the retainer before giving it a twist. Grudglingly, it turned.

When it got through 180 degrees I could see that the retainer was open on the other side and that a penny had dropped in and become wedged under the end of the screw thread. This in turn was gummed in with what looked like a melted sweet or two. Nice.

I cleaned all the gunk away and then levered the penny out with a screwdriver. It was pretty deformed by the time it came out. I applied some fresh grease and sure enough the screw now turned freely in and out of the retainer.

I reassembled it all, plugged it in and bolted it down. And voila, the seat tilt worked again. I now have a much better driving position low down and a lot more headroom.

BMW Z3 seat tilt screw mechanism

Back to navigation


Fifty pins of woe

[2020-06-20]

So, it looks like my nemesis on this project is going to be the 50 pin connector on the EVBMW board. Though the board functions beautifully now, it isn't talking to the rest of the inverter and I'm getting some really weird readings from the sensors. Diagnosis from the forums (and the board's creator) is that the 50 pin connector that originally caused me so many problems isn't soldered down correctly.

This time I need to find a real electronics professional as I can't afford to take another gamble on an enthusiast - welcome as their help was. Hoping to get this sorted in the next week.

In the meantime we can't really do a lot on the car as we have builders in working on the front of the house and the car is now pinned in by scaffolding. I'll just have to take some more time off later in the summer to catch up the lost time.

EVBMW Prius Gen3 inverter fifty pin connector

It's not all bad news though. Before I realised the connector was borked I got the all the high voltage electronics working beautifully. I'd post a video but it all failed before I could. When you turn the key, the negative contactor and pre-charge relays engage, then when you twist to the start position it engages the primary contactor giving the inverter the full juice. This means that once I get the inverter sorted I just need to plug it back in and I should be into motor testing.

It's all a bit of a mess in this photo because it was taken after the inverter was disconnected. But you can see the primary components and the brackets I 3D printed to hold the keyswitch, direction switch (forward/reverse) and the brake button (the red momentary pushbutton standing in for the brake signal).

Test board for Hv components in EV conversion

In the meantime I'm focusing on 3D design and some missing components. I might have a trade lined up for my old engine in return for some cash and an electric steering rack. And I'm nearly there with the shroud for the high voltage connections on the inverter.

Back to navigation


A new hope (OK, controller board)

[2020-06-16]

The control board and modified inverter came back this weekend and everything seems to be working. Hit it with 12V and you get a WiFi connection and web interface. Hoorah!

I've also received from Damien a daughter-board that provides the 35-pin AMPSEAL male connector and have designed a new 3D printed part to enclose this. A few designs for this have been floating around the forum but didn't quite fit my needs so I created a two part piece to enclose the daughterboard on the outside of the inverter case. You can download it from here.

EVBMW Prius Gen3 inverter AMPSEAL connector housing

Now that all the critical components are assembled it's time to begin wiring everything up for testing.

We have a few spare old car batteries that we picked up for free from an auto electrician down the road to power things. Initially one will give us 12V for the inverter and ancillaries and the other two will give us 24-28V as primary power.

We've screwed all the HV components down to a board (the top of the same washing machine from which we got the 'current limiting resistor') along with some controls in 3D printed brackets - throttle, keyswitch, direction switch, and a button for the brake.

For now all the connectors have been terminated with connecting blocks and we are routing a motley selection of cables between them, including (of course) some that were rescued from the washing machine.

Back to navigation


Central locking and wing mirror sorted

[2020-06-14]

We've now fixed the main issues with the car itself. Like the power hood, the central locking just seemed to be bad earth/connection issue. Once I stripped off the actuator, greased it and put it back together, it worked fine.

We picked up a second hand driver's door mirror from the ZRoadster forum and fitted that. Not as cheap a job as I was hoping but easy at least.

I haven't yet managed to get the INPA diagnostics software working properly - it connects but refuses to complete the diagnosis process. I've ordered a new cable to see if that's the problem but actually I'm not sure how useful it's going to be. Following someone's advice on the forum I stuck an old Bluetooth dongle on the end of the adapter for the unique BMW 20-pin connector and managed to get out the error code I was expecting, basically confirming a vacuum leak.

A little more visual inspection showed that the secondary air pump is knackered and detached from its mountings. And there's a split in the air intake hose that connects to the MAF (mass air flow) sensor. All standard stuff and not really worth fixing before I pull the lump out.

Back to navigation


Fixing the electric hood

[2020-06-05]

So, one of the first things to tackle on the car was the electric hood, which the previous owners had told us was broken. Sure enough when we first tried it we heard clicking but there was no movement. My initial diagnosis (fuse, ground etc) was rather undermined by my not understanding the process you had to go through to make the hood work: ignition in second position, foot on brake, before pushing the button. I got it right the first time but then clearly didn't repeat the process. Once we worked that out and charged up a flat battery it progressed pretty fast.

When we peeled off the carpet around the hydraulics we found that the rubber bush had been replaced with a stack of medical gloves. That was a new one on me. Wish I had taken a photo before I removed them but I was in shock. Weirdly the original rubber bush was still there, just sitting in the bottom of the bracket.

We removed the pump and the rubber gloves, and scraped out the residue where they had degraded, then replaced the correct bush and tightened it all up.

I'm guessing this restored the earth connection because when we then read the manual and understood the hood process properly, it all worked fine.

Rubber gloves removed from BMW hydraulic hood motor mount

Back to navigation


The car arrives

[2020-06-04]

The car has arrived! Rolled off the transporter this morning. And after waiting for some joker to unblock my driveway, I got it home.

Car runs nicely with a bit of right boot but won't idle and there's an engine management light on. Not got the diagnostics hooked up yet so not sure what the cause is, but if anyone's in the market for a four pot with 'only' 174,000 miles on it, then let me know!

First inspection only threw up a few things that need doing... Most of them are straightforward - door dings, broken aerial, rust on slam panel. Fair few scrapes, dings and cosmetic rust, but since I'll be doing a body swap that doesn't worry me (doors matter as those are kept with the body swap. Important stuff: no signs of structural rust yet (until I get those sills off) and it is very clean in the boot and under the bonnet. Hood seems in good nick with the rear window only slightly milky. Good for a few years yet, even in Manchester weather.

Things that do need doing:

  • Electric hood doesn't work (more on this to come)
  • Driver's side wing mirror needs replacing (currently held together with duct tape)
  • Both sills are badly rusted at the ends (these will be replaced as they are kept on the Z300)
  • Boot gas struts have failed (new ones ordered)
  • Passenger door central locking doesn't work - boot and drivers door fine
  • Driver's side electric seat tilt doesn't work (moves back and forward fine)
  • Water ingress in boot (carpets damp and a puddle in the left hand well below the hood hydraulics)

Took some measurements under the bonnet and the battery pack I want to use *should* fit length and width-wise, with some alterations to the radiator shroud and fan - though I'll likely swap these out for a smaller unit that can be mounted further forward and sell them on.

Still need to have a look through the service history. Then the plan is to get it up on ramps & stands and have a look underneath before we start stripping it. Oh, and I need to tap into the CANBus and capture all the messages I'll later have to spoof before I start taking the engine out. Mustn't forget to do that...

Back to navigation


My first disaster... Controller board borked

[2020-06-01]

The Prius Gen 3 controller board from EVBMW comes as a kit that you need to do some soldering on to add various connectors. I've been soldering for about 35 years. But only ever through-hole stuff. Never surface mount and never particularly fine scale. I watched the instruction video from Damien at EVBMW and thought, "How hard can it be?" The answer: £300 hard. In short, I borked my first board. Or rather, the mistakes I made were so bad that by the time I handed it over to someone a bit more talented, it was pretty much unrescuable.

So, a new board is on its way direct to the person who is going to solder it up for me, and I am now practicing my surface mount soldering on old circuit boards. I'm still screwing it up. The lesson? If you are AT ALL unconfident in your ability to complete the soldering required to put this board together, hand it on to someone else and spend some money.

EVBMW Prius Gen3 inverter logic board kit

Back to navigation


CANBus & BMW diagnostics

[2020-05-17]

While I wait for the car I've started sketching out the electronics and particularly the bus systems I will need to tap into in order to keep things like the instrument panel working. The ZRoadster forum has been absolutely invaluable here with links to wiring diagrams and service manuals for the Z3.

Z3s, which were built on the E36 3-Series platform, use two different bus systems - the digital communications networks for the electronics. And they still have a bunch of individual stuff as well - sensors and controls that have their own wiring rather than sending everything over a shared bus. This is both good news and bad. It's potentially simpler to wire up, but there are more wires to deal with.

These are the two buses I will be dealing with:

  • CAN Bus: the Controller Area Network (CAN) bus is used to communicate with the DME (Digital Motor Electronics - the bit that runs the engine and charging system, when it's an internal combustion engine. Largely interchangeable as a term with ECU - Engine Control Unit), ABS (Anti-lock Braking System), and on an automatic (I think) the EGS (Electronic Transmission Control - guessing the acronym comes from the original German). I will need to replicate some signals from the DME, and likely send some signals to the ABS system to keep things working.
  • D-Bus: The Diagnostic Bus is what routes information from the car out to service technicians so that they can plug in a computer and work out what is going on. My plan is to collect all the diagnostic information from inside the car and route it so some sort of onboard computer or microcontroller for logging and perhaps local control.

I used to own a late 90s E36 Coupe, and being a hoarder, I kept the diagnostic cable I bought for it back then.

BMW diagnostic cable

Now, according to this diagram, the OBD2 (On-Board Diagnostics) port should offer me access to both buses. But my 99 car is fairly early for compliance with the OBD2 standard, so I suspect it may not. Sure enough, a look at the relevant pages of the wiring diagram shows that the CANBus isn't brought through to the 20 pin connector under the bonnet, and having opened up the serial cable I can see it is only wired for the D-Bus and other old-school connections.

Inside BMW diagnostic cable

BMW INPA

BMW's diagnostic software to use with the cable I have is now widely available, particularly the stuff for my vintage of car. I acquired a set but then remembered that it requires a true serial port rather than a USB adapter. This meant digging through my box of old laptops (of course I have a box of old laptops) until I found something suitable. A 16 year old Dell X300 with a docking station, and a serial port on that docking station. I also managed to find a matching PSU in my box of laptop PSUs (of course I have one of those as well). The laptop was running an old version of Ubuntu with a command line interface so I loaded LXLE onto it, then added Virtualbox on top of that, then installed the free version of Windows XP into there. Probably easier ways to go about it, and I won't document the whole process here, including screwing around with ini files and configuring serial port access, but eventually I had a running XP instance and could install INPA on that.

After a bit of fettling the machine started talking to the car and I could begin to do some diagnostics...

Back to navigation