What is BMW Coding and Programming?
Coding and programming reduces the number of ECU hardware versions by providing a means of electronically recording firmware onto a clean or used control module.
As a manufacturer of vehicles distributed worldwide, BMW must produce several ECU versions to meet different requirements due to:
- rules of a specific country of operation
- list of options installed on the car
- engine configuration
Before coding and programming became available through dealership services, this process was only performed at the manufacturer's factory. The factory programming equipment loaded base firmware into a blank control module. The basic firmware was common to all automotive markets. Then additional special data for the country of operation and control module options for specific vehicles were flashed.
As the number of ECUs installed in a vehicle increased, so did the number of modifications required to sell spare parts. This led to huge stocks of similar equipment, which differed only in the coded firmware.
Coding and programming — olution to this problem, allowing to reduce the number of spare parts and costs. Advantages of coding and programming in dealer services:
- software update possible (recoding and service activities).
- lower costs for spare parts and their inventories.
- adding new options to an existing car (for example, DWA).
- fewer ECU versions.
- fine adjustments to the operation of various units (for example, correction of engine CO).
There are several different methods used to provide operating instructions to the control module. The methods depend on the car, year of manufacture and type of ECU:
- variant DME coding.
- car and key memory encoding.
- EPROM DME programming.
- central key coding (ZCS).
- DME flash memory programming.
Where are the firmwares stored in the control module?
One of the differences between a personal computer and a car ECU is that the computer stores data on a hard drive, while the control module uses either an EPROM or an EEPROM, depending on the system.
EPROM (Electrically Programmable Read Only Memory) - is a removable chip with several connector pins that connect to the control module circuit board. Such a microcircuit cannot be reprogrammed. To change the ECU firmware, you will need to remove the old chip from the printed circuit board and install a new empty one.
EEPROM (Electrically Erasable Programmable Read Only Memory) is a chip soldered into a printed circuit board that is not removed from the control module. As their name suggests, EEPROMs can be electrically erased and reprogrammed without disassembling the control module. This is called "Flash Programming".
What is BMW coding?
Using coding, you can select a specific set of instructions that are already pre-programmed into the ECU. When an encoded module is ordered as a spare part, it already contains all the programs necessary for any version of the car.
Programs are stored in EPROM as «resident data». During the coding process, one set of instructions is activated in the control module (eg US version, with lambda probe, etc.). Coding is used for most control modules in a vehicle.
There are several types of encoding:
- Variant coding.
- ZCS encoding.
- Encoding code.
- Car and key memory encoding.
What is Variant Coding?
The variant code is a 4-digit hexadecimal code that activates certain control module functions required by the vehicle's operating market. The variant code is stored in the control module after it has been encoded.
Variant coding via DIS/MoDiC/GT1 applies to all DME M1.X engine control modules (e.g. M1.3, M1.7, M1.7.2, etc.). DME Control Modules M1.x are the only DME Control Modules that can be coded differently.
To put it simply, each DME 1.X ECU is already flashed with all the instructions and possible operating modes for any engine. The variant code simply activates or deactivates the necessary instructions (operating modes), for example: lambda probe, fuel tank ventilation, etc.
DIS/MoDiC/GT1 allows:
- code a new uncoded control module.
- recode a previously coded control module (up to 7 times).
The variant code is entered into the control module in one of the following ways:
- use of existing DME control module fault code (if diagnostic communication is possible).
- entering variant code manually.
During computer diagnostics of engines with Bosch DME 1.X control system, it is necessary to check the correctness of the encoded variant code. Incorrectly coded DME will create unusual and difficult to diagnose problems.
The four-character variant code structure is a two-word hexadecimal code. Each hexadecimal character provides specific information about the encoding of the control module.
Intentional incorrect DME coding will not provide any performance benefits and may very well result in engine damage. DISLauncher can calculate and recalculate variant codes.
What is a Coding Code?
Coding Code (Code Number) - this is a kind of analogue of a variant code, but if the variant code is used only in the engine ECU, then the coding code is used by body modules. Used as a temporary replacement for the ZCS while it was in development, from October 1990 to September 1991 on BMW E34 and E32 bodies. Only applied to DWA, EDC III and IHKR 2/3 encodings.
The coding code is one digit. As with variant coding, a unique code is entered into MoDiC. MoDiC then loads the correct encoding data into the control module on a single digit basis.
Coding of the coding code is only possible using BMW MoDiC or BMW Service-test Sun 2013!!!
Along with the VIN, the coding number of the installed ECU is printed on the label, located on the underside of the fuse box cover.
What is a Central Coding Key (ZCS)?
Central coding key — this is a unique 37-digit code that contains all the information about the model and installed equipment of the car. The ZCS code for a specific vehicle is created at the factory, based on the individual configuration and version of the vehicle. The encoding equipment duplicates the ZCS at the factory and, after assembly, encodes the control modules installed in the vehicle.
The ZCS code is stored in one or two modules (depending on the vehicle), and is retrieved by the DIS/MoDiC/GT1 software whenever coding of other control modules is required.
The coding process for ZCS-encoded modules occurs by selecting or activating data cards already contained in the control module. Control modules have an EPROM that is pre-programmed with «resident data». There is more information (data) than is necessary for the operation of the control module. This data is ready to be activated as soon as the key is available for «unlock » programs. ZCS is called a key because it unlocks a specific set of instructions for a new control module or recodes the control module in use.
Before coding the control module, DIS checks the correspondence of the stored ZCS code, the coding data and the control module version. If they differ from each other, DIS will determine a new «Central Code».
The use of a central coding key began with the introduction of the E31 in 1990.
ZCS consists of 37 digits and is divided into 3 segments. Segments represent specific information about the vehicle. Each segment ends with «checksum». Checksum — this is a number or letter used by coding software to detect unacceptable or implausible codes.
ZCS segments:
GM = main characteristics
9 digits GM describe:
- country of operation.
- body type (for example, convertible).
- vehicle type (E38, E46, etc.).
- body equipment.
- basic language.
SA = special equipment
17 digits SA describe:
- presence of headlight washers.
- presence of alarm (DWA).
- the presence of electric windows.
- car equipment.
- presence of a sunroof.
- presence of xenon headlights.
- etc.
VN = version number
11 digits VN describe:
- All data related to coding that does not belong to the general functions (GM) or special equipment (SA). For example: data depending on the model year, software and hardware version, coding instructions, etc.
The original ZCS code also contained a fourth line called AM = Drive Management. This 11-digit code was supposed to contain information related to the engine control modules. AM was never used and was removed from ZCS early in the design phase.
Where is the ZCS code stored?
A master copy of the ZCS is stored electronically in the vehicle to provide the coding software with a source for retrieval. The ZCS code is stored in the instrument cluster or EKM and additionally in the EWS module on vehicles produced from 1/95. When the control module is encoded by ZCS, MoDiC/DIS/GT1 automatically searches for a stored location based on the VIN and vehicle identification information.
A label printed with the ZCS code was used as a backup copy of the electronic version stored in the control modules. This backup was necessary in particular for vehicles in which ZCS was stored in only one control module. The ZCS badging was removed from all cars except the 318ti and Z3 from late March 1998. The 318ti and Z3 had the labels removed from September 1998 when the instrument clusters were linked to diagnostics.
What is BMW programming?
Programming is completely different from coding. New programmable ECUs contain identification information but do not have pre-recorded instructions.
During the programming operation, relevant specific data (e.g. ignition maps, fuel maps, switch points, etc.) are electronically written to the EPROM «base control unit».
There are two types of basic control modules: programmable and flash programmable. Programmable ECUs can only have instructions written to the EPROM once. If the data set needs to be changed, the EPROM should be removed from the module and replaced with a new blank one.
EEPROM control modules with flash memory are soldered into the printed circuit board and are not removable. However, they can be electronically erased and rewritten up to 14 times.
What is DME programming with EPROM?
DME programming is used to convert the «basic control unit» in «programmed control unit» by writing instructions to an empty EPROM. Programming is also used to update an existing DME program by writing additional instructions to complement the existing software. Programming is used on DME Bosch M3.X variants:
- M3.3 - 740i/iL (E32 & E38), 540i, 530i,it, 840Ci
- M3.1 - 325i, is and 525i, with M50 engines up to 8/92
- M3.3.1 - 325i,is, 525i,it, from 9/92 and the M3
In the unprogrammed base state, the EPROM contains only «resident data». Resident data provides identification of the control module/EPROM for MoDiC/DIS/GT1 before actual programming. During programming, the EPROM is filled with the required ignition and injection timing characteristics maps, ECU constants, identification data, etc.
The need to program the control unit arises when:
- recall companies or updating the firmware to a more recent version.
- installation of a new basic control unit in the car.
- replacing EPROM in an existing ECU.
Attention!!!
A new EPROM chip must contain basic «resident data». It is not possible to program an EPROM without basic data. This is why a new EPROM needs to be ordered by part number, and not just from AliExpress/Ebay. DIS simply won't program it.
What is DME firmware update from EPROM?
A software update is a customer service measure. The existing program in the EPROM is simply supplemented with new data. The amount of free space in EPROM is always greater than the amount of occupied primary firmware. It is into this reserved, but not used, EPROM section that new update data can be written.
Due to the limited free space reserved in the EPROM, the program update can only be performed once. DIS will display a notification if the EPROM has already been updated. Updates and new versions of DME firmware arrive with updated DIS versions.
Some larger updates have too many changes to fit into the reserved portion of the EPROM. An update with so many changes requires replacing the EPROM with a basic and further reprogramming procedure.
What is DME programming with EEPROM flash memory?
The procedure for programming a DME with flash memory is similar to programming an EPROM, except that there is no need to remove the chip, since the EEPROMs are soldered into the DME PCB.
When connected to the diagnostic connector, DIS/MoDiC/GT1 uses the downloaded software to communicate with the engine or transmission control module to set the «authorized unblocked connection» with control module. This connection is known as «seed/key relation» and is used for programming purposes only. The connection is established as follows:
- DIS/MoDiC/GT1 initiates communication by requesting «original» data from control module.
- The control module responds by sending the initial value to DIS/MoDiC/GT1.
- Based on the received seed, DIS/MoDiC/GT1 generates «key» data and sends it back to the control module.
- Then the control module compares the received «key» data with a previously stored value. If they are identical, the control module «unlocked» in preparation for programming and will send confirmation to DIS/MoDiC to continue. If the data «key» are incorrect, the control module will interrupt communication, preventing «unauthorized unlocking» as a safety measure.
- The control module then allows the DIS/MoDiC/GT1 to erase certain areas of the EEPROM to make room for update data or firmware programming from scratch when a new base module is installed in the vehicle.