Involved
This would be the right word to describe the process of bringing a new product to market for a vehicle. This is true whether it is a physical product, a software product, or in the case of aftermarket engine control kits, both.
There are only so many details that can be shared without giving a heads-up to others what is being worked on, so these posts will appear in two phases. The first will have the category name of the project, in this case 2016A1. After the product is released, there will be others, and these posts will have both categories associated with them.
So what does it take to do this?
Acknowledgments
Before we get to the process for an overall project, without some key people I would not be here doing this at all. So thank you, Adam from e46fanatics, Neel Vasavada from Apex Speed Technology, and Jamie Bopp from Dundon Motorsports.
The Idea
Someone approaches you with an idea, or you have an idea yourself. Either way, you are looking for a potential market. As you will see, this process involves a lot of time, effort, and money. I always wrote off the saying that you needed money to make money - this is entirely true. Until I was able to get my life in a stable spot, and scrounge up some ‘extra’ cash, I was never in a position to get started. The key is to find a market that is just developing, so that you can get your solution out there before others. Or, even if yours isn’t first, hopefully it works better.
Research
After your target vehicle has been determined, it is in your best interest to find out as much as you can before even seeing the vehicle. Wiring diagrams are extremely helpful here. Determining characteristics of the engine, such as what items will need to be controlled on top of the minimum of fuel and spark. Electronic throttle control, camshaft positioning, variable valve lift, direct injection. These characteristics determine how many inputs, outputs, and what kinds are necessary to make the car run as good, if not better, than stock.
Data Gathering
You need to instrument the vehicle in order to determine how it is being controlled by the stock computer. This includes using an oscilloscope for capturing signals, and a CAN capture device for recording the data being transferred on the CAN bus. CAN stands for Controller Area Network, and is a two wire bus which is designed to be resilient against noise. It is the backbone of how the various computer modules in your car communicate with each other. The problem is that there is no standard - manufacturers are free to encode data in any which way they wish. Data gathering starts with…silence. Getting your CAN capture device connected before you even put the key in is crucial - as you can see messages which only happen once. These may or many not be critical to making the car work correctly. Then you control as much as you can - use the turn signals, press on the accelerator, brake pedal, push all the buttons, and see what changes. Then you can at least identify what’s going on with user interaction. Start the car, and let it idle. Then go for a drive, and gather as much data as you can. There can be tens of units in the vehicle, each transmitting multiple channels of data. These leads to hundreds of items to look through. This leads to the next phase.
Analysis
After you have lots of data, you need to identify the patterns which can help you discern what the data is, as you need to be able to replicate it in order for everything to work correctly. Today’s cars cannot just have an engine swapped and everything expected to work correctly. Lots of systems rely on accurate torque values being transmitted from the engine control unit to the rest of the vehicle. Just as important is to filter out items which are of no concern to you, and will happily exist with no work on your part. Given the number of items in a modern car, this filtering is important. This phase takes some time, and may be concurrent with the next phases.
Prototype
Building a prototype firmware for the car involves setting up the code to receive the data you’re looking for and transmitting what you will be responsible for. In M1 Build, you set up a ‘Channel’ (these are the things with the ~ symbol next to them - which will hold these values. In my experience, I also want to have the raw data available, at least during testing, so I also set up channels which are each byte of data that was received off of the CAN bus for the IDs I am interested in. A wiring harness is then built, with a varying amount of integration. Perhaps you take over only fueling and spark initially, and fool the existing computer with a set of resistors to simulate the fuel injectors, to keep it happy. At that point you can get a reasonably good picture of what is going on, with having enough data from your own sensors to help decode the data the stock computer is transmitting. This can also take quite a bit of time to shake out - getting the engine to run is the easiest piece. Dealing with a dashboard is usually not too hard, though sometimes you can miss a few things. Wheel speed, transmissions, and anywhere else the engine management interacts with directly are the parts where ‘simple’ can get very complicated, very quickly.
Production
At this point, all is well, you are marketing your product, and hopefully have customers. Maybe even making some money. You’ve got supply deals in place for the rest of your kit, or you work the other end of the deal and you are supplying someone else with your software. Either way, you’ve made it. Depending on how much time is dedicated to the project, this can be anywhere from 3-12 months.