Broken! Busted! Before Giving Up, Give It A Go And Try To Fix It

Hi my name is Amadeusz, and I am currently completing my university placement year as a Software Engineer here at Zircon. In addition to computer technology, I am also a fan of fast cars and motorsports. For this article I would like to tell the story of how this hobby sparked my interest in software engineering for embedded systems.

How Did it all Start?

After doing well in my A level exams, I wasn’t sure on where I wanted to go or what I would be good at. I had so many potential ideas I decided to take some time to mull things over, so to keep myself busy I relocated and found myself a fulltime job. After a few years of employment I decided to treat myself to a nice car, a BMW from a local auction, which is where our story begins.

It took less than a couple of hours for my ‘treat’ car to start throwing errors at me. A quick inspection highlighted that the source of my woes was the left side headlight that had stopped working. Naively hoping for burnt bulbs I got hold of some replacements, but it was no help at all. Not one of the local garages could provide me with a solution, instead directing me to a BMW authorised garage. Taking this advice I booked my car in for an inspection, however the resulting quote I was given exceeded a third of the value of the car itself.

My nature wouldn’t simply let me accept such a high price. Having asked for some clarification of the problem, I found myself presented with two options:

  1. Give up and pay for the repairs
  2. Try finding a solution for the problem itself

“If someone else can do it, surely I can do it too. Nothing is impossible” was the thought that pushed me to take my car back from the garage and begin my research. Unsurprisingly the garage wasn’t too keen on sharing their knowledge on the procedure, and I quickly found that no one within the UK had managed to solve this problem. Unable to find any DIY instructions online I turned to international forums, where I was advised to acquire a number of books. I was able to glean the information I needed but only after they were translated from German.

CANBUS

For me the most challenging step of the repair process was understanding the functionality and architecture of the CANBUS, a vehicle bus standard that allows microcontrollers and devices to communicate with each other in applications without a host computer. I ended up spending a lot of time figuring out how I could interact with the CANBUS in my car using my laptop and a simple OBD interface.

We can imagine CAN as a multi-master serial bus on the car, used for connecting electronic control units/nodes, such as the engine/transmission ECU or the Light Control Unit (LCU). There have to be two or more nodes on the CAN network, there is no need for a hosting machine. The complexity of the node can range from a simple I/O device up to an embedded computer with a CAN interface and sophisticated software. The node may also be a gateway allowing a standard computer to communicate over USB or Ethernet port to devices on a CAN network. In the automotive industry this node is referred to as the ON Board Diagnostic (OBD) port, and it allowed me to connect to the CANBUS of my car.

The First Line Of Code

With the cable in hand and knowledge in place, I connected to the OBD port and managed to send a request to the Light Control Module (LCM). In return I was presented with a long piece of data, encrypted in hexadecimal values, which typically I was unable to understand right away. After yet another round of research and investigation I realised that a data interpreter, such as HEX Visualiser, and a database translator called NCS Expert were required to successfully interpret and modify the data.

Having run the data through these tools within the space of a few hours, I had figured out that the main checksum responsible for the faulty headlight had triggered and cut the circuit. It turns out that BMW implement this method to prevent vehicles from catching fire as a result of incorrect resistance bulbs or damaged wiring. In the case of my car the previous owner had fitted aftermarket LED bulbs, which caused the problem as LEDs have a much lower resistance than standard H8 wire bulbs. He sold the car at auction as it would not pass an MOT.

Going Further

Having found a solution to my problem I decided to help fellow BMW owners avoid hefty repair bills and posted a set of simplified DIY instructions to a popular forum. For a brief period I even offered a service to fix the issue for other owners, receiving 17 requests on just the first day which I think demonstrates just how frequent these cases are. I decided to stop this service after a short period as the procedure required using my car as a socket for the LCM module.

Knowing that I was capable of interacting with my cars ‘computer’, when my Beemer didn’t feel as fast or as responsive as it had done initially I felt it was time to up the game a little bit. Having successfully accessed and edited the memory data of the LCM, I was confident that I could do the same with the ECU to increase the power output of the engine.

I really enjoyed the time spent working on my car, and helping others in the same seemingly hopeless situation gave me a feeling of accomplishment and satisfaction. However, it was a private message from one of the forum users telling me that I could be an embedded engineer if only I wanted to, that really triggered a spark. It made me realise that software engineering is more than typing blocks of script. It can be an opportunity to express passion and creativity.

A few months later I quit my job and began applying for university courses.

More From The Blog

IR35, Here it Comes Again…

IR35, Here it Comes Again…

IR35, Here it Comes Again...In 2021 the reform to IR35 Off-Payroll rules is to be rolled out to the private sector. As before the reform will only affect companies that do not meet the following attributes: an annual turnover below £10m fewer than 50 employees or a...

Solving the Resource Conundrum

Solving the Resource Conundrum

Solving the Resource ConundrumPicture this. One minute all is fine and dandy, you have access to all the resources you could possibly need, then bam an unexpected challenge arises. Suddenly you find yourself lacking the capacity to meet the new need. What are your...

Quality – An Aid to Produce Consistent Rubbish

Quality – An Aid to Produce Consistent Rubbish

Quality - An Aid to Produce Consistent RubbishAnother year has passed, and myself and a colleague have hosted a BSI auditor for our annual ISO9001/TickITplus check-up, and in fact this was more than the regular check, in that it was our 3-year re-certification audit,...

The Hazards of Legacy Systems

The Hazards of Legacy Systems

The Hazards of Legacy SystemsBeing the owner of a software system with a dedicated customer base sounds like the kind of position one would like to find themselves in. At least until it gets superseded and you have to face dealing with a legacy system. Many developers...

How to Test Without Access to The Test Environment

How to Test Without Access to The Test Environment

How to Test Without Access to The Test EnvironmentIn many of our previous articles, we have expressed the importance of achieving a high standard of testing. Potentially blocking this achievement, several factors can come together to affect the quality of your...

The Technical Workshop – How To Make Them Work For You

The Technical Workshop – How To Make Them Work For You

The Technical Workshop - How To Make Them Work For YouAnyone experienced in product design will understand just how valuable a facilitated workshop can be. Bringing together a project's key stakeholders into a single space allows for the exploration of diverse...

Developing Software for Safety Related Systems

Developing Software for Safety Related Systems

Developing Software for Safety Related SystemsSoftware systems should always be both robust and reliable, however the moment you introduce a safety element, this need for reliability increases significantly. The level of safety required is governed by the severity and...

How to Choose an Outsourcing Partner

How to Choose an Outsourcing Partner

How to Choose an Outsourcing PartnerHaving recognised a need to outsource, and worked your way through the initial preparations, you are now in a strong position to seek out a suitable partner. Choosing an outsourcing partner is no trivial affair, so taking the time...