BMW Coding & Programming Introduction

You are here:
Estimated reading time: 6 min

What is BMW Coding?

It is a process utilized by BMW, which groups system specific operating
requirements (Data) together and then assigns a label/code to each of these
groups of data. The various groups of data are all pre-loaded into system
specific °∞codable°± control modules,along with a basic set of operating
instructions (Program).

BMW Coding Software
NCS Expert BMW Coding Software
BMW E-sys 3 Coding Software

Types of operating requirements:

Nominal values of device input signals (0.25V to 2.5V, 5W ®C 25W, °≠)
Type of device input signal (PWM, square wave, analog °≠)
Operational parameters (device activation/deactivation time, °≠)
Market specific operations (O2 Sensors, Fuel Type, Emission Control,
Country Specific Regulations (U.S., Canada, Japan, UK, ECE, °≠)
Powertrain Configurations (Manual, Auto, TLEV, ULEV, SULEV, Diesel,
The procedure of assigning one specifically labeled group of data to the
operating program of a specific control module/component is referred to as

A °∞codable°± control module has a basic operating program already
installed along with several specific variations of operating data. The
coding process allows a specific set of operating data to be assigned to the
basic operating program of that module/component,with respect to its specific

Coding can be performed for some systems/components:
By installing a specific plug (coding plug) into a device/component
By entering a 4 digit alpha-numeric code (variant code) via the programming
selection on DISplus/GT1/SSS
Selecting customer specific system operational settings from a list of
available features (VKM)
Automatically by selecting a specific coding process available via ZCS
Coding or CIP using the DISplus/GT1/SSS
Note: Codable control modules/components are system specific, which means
that not all control modules are codable.

What is Programming?
It is a process utilized by BMW to load application/system specific
operating instructions
(Program) into a module/component which already has the systems operating
requirements (Data) installed, plus it can be used as a means of updating
data and operating instructions previously installed in a control
Basic programmable control modules have a pre-defined set of operating data
already installed which allows the module to be fairly generic until a
specific operational program is installed.


Programming of system control modules is performed using a
Note: Programmable control modules are system specific and not all control
modules are programmable using workshop equipment like the DISplus,GT1 or
SSS. The ability to program a module is limited to the number of times it has
already been programmed and the hardware version of the control module

What is the Purpose of Coding and Programming?
As a global manufacturer, BMW must design a large variety of control
modules to meet numerous vehicle requirements pertaining to issues such

Country Specific Regulations (U.S., Canada, Japan, UK, ECE, °≠)
Vehicle Equipment Level (Phone, Navigation, HiFi, IHKA, IHKR, °≠)
Vehicle Powertrain Configurations (Manual, Auto, TLEV, ULEV, SULEV, Diesel,
System Specific Operating Requirements (Nominal values, type of input
signal, °≠)
By using Coding and/or Programming, the large variety of control modules
needed can be reduced to a smaller number of model specific hardware

Codable control modules contain:
A common operating program
A large number/variety of specific operating data groups
In order to use this type of control module it must first be CODED to
ensure that the operating data specific to that vehicle/model application is
used by the operating program of the control module.

Programmable control modules contain:

The required/specific operational data
No operating program
In order to use this type of control module it must first be PROGRAMMED to
ensure that the operating program specific to the vehicle/model application
is used.

Prior to the availability of Coding and Programming in the workshop this
task could only be performed at the factory.
Initially the factory installed Control Module(s) with a common operating
program or data into vehicles and as theses vehicles reached various points
in the assembly process the control modules were updated with the required
operating data or program specific to the application for that particular
vehicle. Since replacement parts always need to be available, parts inventory
needed to contain all variations of preprogrammed control modules installed
in all varieties of vehicles that were manufactured. This was not a big
problem in the early years, when the variety/quantity of models was

As the number of control modules and the complexity of the various systems
installed into vehicles increased, the number of modules that needed to be
stored in parts inventory began to increase as well. Eventually this led to
the stocking of hundreds of different control modules that were either
pre-programmed or pre-coded for a specific application and model, but only
differed slightly in the way they were coded or programmed.

Pre-programmed and pre-coded control modules always needed to be available
in the event a control module failed once the vehicle left the factory floor,
since this was the only place programming & coding procedures could be
performed. In order for repairs to be made quickly, dealers were required to
maintain a stock of several varieties of control modules, since technicians
could only remove the failed module and installed a new preprogrammed or
pre-coded module into the vehicle.

As a result of having to maintain a very large inventory of pre-programmed
and pre-coded control modules in parts inventory, it was decided to make
coding and eventually programming available in BMW workshops.

The following advantages have occurred since programming and coding can be
performed in the workshop:

Fewer control module hardware versions are needed (only need basic control
Lower parts and inventory costs
Able to update software in a control module without having to replace the
module (Re-Code/ Re-Program to address service Measures)
Ability to add special equipment features to existing control modules (DWA,
Day Time Running Lights, °≠)
Customization of vehicle operation (Conversions, VKM, A/C, °≠)

The means by which coding or programming information is provided to a
control module varies and is determined by the vehicle, model year and type
of module(s) installed.

BMW currently uses the following methods to perform Coding or

Coding Plug
DME variant Coding
Coding Code
Central Coding Key (ZCS) or Vehicle Order (VO)
EPROM Programming
Flash Programming
Vehicle and Key Memory (VKM)

Where is Data Stored in a Control Module?

The control modules used in our vehicles store data/information on one of
the following:
EPROM (Electrically Programmable Read Only Memory)
EEPROM (Electrically Erasable Programmable Read Only Memory)
In essence these devices are similar to the harddrive of the PC (Personal
Computer) that many of us use daily to store the images and documents/files
of information.

EPROM (Electrically Programmable Read Only Memory)

An EPROM is a computer memory chip that can be electrically programmed,
however in order to erase data that is stored on the chip it must be removed
from the device and exposed to UV lighting for a specific time period. An
EPROM has what is commonly called a °∞window°± on the top portion of the chip
usually located underneath a protective label, it is this area that must be
exposed to UV light of a certain intensity for a specific time period in
order to erase the information stored on it. Early engine control modules
(DME 3.X) and transmission control modules were the first devices which
allowed technicians to first remove the chip from the module, install a new
°∞blank°± EPROM and then program the module.

EEPROM (Electrically Programmable Read Only Memory)
An EEPROM is a computer memory chip that can be electrically programmed and
electrically erased, thereby not requiring the chip to be removed from the
module or exposed to light. In general this chip is not easily removable from
the device it is installed into.
Since the entire process of programming and erasing is done electronically
this device is commonly referred to as °∞Flash Programmable°±.

During the programming process the following type of information may be
loaded into the control module depending on the specific application or
update that needs to be installed:

Characteristic Maps (Ex. Ignition, Injection, Purge Control, DSC
Regulation, °≠)
Control Constants/ Operational Data
Operational Program
Control Module Identification Information (Ex. Hardware Number, Program
Number, Date of Modification, °≠)

What is needed to Code and Program?
In order to code or program a vehicle or control in the workshop, specific
equipment and special software is required such as a DISplus, GT1 and an SSS
which must all be connected to a network and have the must current version of
CIP (Coding, Individualization & Programming) installed. CIP is the
software program that contains all the latest data and program information to
allow control modules to be updated to the latest level to address customer
concerns and implement service solutions.

With the release of CIP 15.0 and the implementation of Progman (see Progman
section for additional information) the DISplus and GT1 will only be capable
of performing vehicle diagnosis and activation/initiation of a Coding,
Individualization or Programming task through the SSS. A special program
management tool (Progman) will only allow the DISplus and GT1 to act as
remote terminals to the SSS (regarding Coding,Individualization &
Programming), which means that the SSS will be the single supplier of Coding,
Individualization and Programming information to a vehicle and its respective
control modules.

Was this article helpful?
Dislike 0
Views: 7
Previous: NCS Expert Reset and Coding Adaptive Light Control Modules(ALC)
Next: How to Coding for Changing BMW iDrive Language