BMW has a bad reputation for programming modules and performing updates. Using the factory software and tools, it can take up to eight hours to program a new module or perform an update. This reputation is because the modules are updated together. Some aftermarket tools can reduce the time required for the procedure by reprogramming one module at a time.
The first bit of advice is to follow the procedures on the screen and in the service information to the letter. Skipping a step can result in an aborted procedure.
Encoding and Programming
With BMW, there is some confusion between encoding and programming. Encoding is configuring the module for the vehicle. The module has the basic firmware already installed. Encoding the module makes it specific to the vehicle by turning on programming for the region and options. Depending on the module, coding might only be required.
Programming installs a larger part of the firmware to the module. This type of programming is often required for modules on the CAN Bus, or they are security related. This process is more time-intensive and is considered a reflash if it came from another manufacturer.

The module will determine if the parts need encoding or programming. For some modules, you can use a salvage module and still perform encoding or programming.
If you are using the factory programming tool or a scan tool, make sure your internet is stable. Some of the programming files are over a gigabyte. If there is an interruption in the connection, it could cause problems. The best advice is to avoid WiFi. A hard-wired Ethernet connection is recommended.
TIP: Update Now
Before you start a procedure, make sure all your software is up to date with the latest versions and the specifications match the specifications. This includes your operating system on your PC or scan tool. Also, make sure you are using the latest drivers for your reprogramming device.
TIP: Power Supply
The other consideration is the amount of current required during a reprogramming procedure for an extended period. BMW recommends that a battery power supply can deliver at least 70 amps for short periods. Just keep this in mind when coding modules that involve the windows or wipers where they are actuated as part of the process. The system voltage needs to be 13 volts or higher but it should not exceed 14 volts.
M-series vehicles with the lithium-ion cranking battery have special battery charger requirements. The BMW recommended tool is the Deutronic charger.
TIP:Roll the Latch
On most BMWs, when a door or the trunk is opened, modules start to wake up. This can create traffic on the communication buses that can scramble the programming procedure. Most of the procedures require that the doors and trunk are closed, but what prevents you or another technician from accidentally opening the door or trunk?
The secret is to roll the latch to the closed position. Most BMWs use the latch mechanisms to tell if a door is closed. By rolling the latch, you can prevent the computer from thinking the trunk or a door has been opened.
By using this method, you can leave the trunk or door open and the battery power supply connected. Never run the programming cable through the window because the window might go up or down.
TIP: Belts
For most procedures on BMWs, it is required to connect the driver’s seat belt. This is an input needed by some modules to start the procedure.
TIP: USB Sticks and Cables
In the center console, there are several USB connections. They can be used for phone charging and on some models a way to update certain modules. If a USB stick or charger cable is in a connector, it can abort the programming procedure.
TIP: Wipers Up
Before a complete programming procedure, put the wipers in the up position like you will change the blades. This helps to reduce the power required to move the wipers during the procedure. Also, it prevents potential damage to the blades.