Controlling the Lights of a Car: BCM Adaptation Channels

This article is my compilation and systematization of knowledge from different parts of the web in a great attempt to understand “how things work” – too many people on the forums stupidly copy-paste adaptations from one car model to another with different headlights and interior options. Especially many questions arise from the owners of US cars.


Most of the lights in the MQB car with “complex” logic are controlled by the BCM module (09 – Central Electronics in the network, J519 in current flow diagrams). There are ~30 channels assigned to 3 main connectors (A, B, C). They all start with Leuchte… names in the adaptations (“Lamp” in German).

ELSA electrical system schemes use <b>A1</b>, <b>A2</b>, <b>A3</b> labels. Current flow diagrams have an alphabet lettering: T73<b>A</b>, T46<b>B</b>, T73<b>C</b>
Audi A3 channels and their functions from the factory

Each channel name has a lot of information encoded in it. For example: “Leuchte30FR LC72“ splits into [Channel 30], dedicated for [FR] (whatever that means, another German fluggegecheimen), a light/energy consumer located in the cabin on the left side [L], and the wire goes to the connector [С], pin [72].

The list of elements in each control channel looks like this:

Leuchte30FR LC72

  • Lasttyp
  • Lampendefektbitposition
  • Fehlerort mittleres Byte DTC-DFCC
  • Lichtfunktion A
  • Lichtfunktion B
  • Dimmwert AB
  • Lichtansteuerung HD AB
  • Lichtfunktion C
  • Lichtfunktion D
  • Dimmwert CD
  • Dimming Direction CD
  • Lichtfunktion E
  • Lichtfunktion F
  • Dimmwert EF
  • Dimming Direction EF
  • Lichtfunktion G
  • Lichtfunktion H
  • Dimmwert GH
  • Dimming Direction GH

Lasttyp – type of the consumer connected to the channel (German as usual). Any type of lamp could be connected to any channel, look only to the wire width and pin size. I found this table of types:

Lampendefektbitposition and Fehlerort mittleres Byte DTC-DFCC – two fields indicating the bits used to check for the presence and operation of the lights. It is internal diagnostic information send thru the BAP bus, do not change it unless you know for sure what you are doing. Correspondence table only for Golf 7:

Do not set the same values to several channels.

Lichtfunktion A, B, C, D, E, F, G, H – events to subscribe in car network for each channel. Lights turn on by receiving some external event, and every lamp can have up to 8 events assigned. A new event overrides the old one, A function has the highest priority.

Dimmwert AB, CD, EF, GH – max brightness of the dimmer. Developers glued pairs of functions into one dimmer - it looks like some internal hardware limitation. Most LED types have 100 as a maximum value, but “analog” bulbs use 127 – in this case, pulse-width modulation is disabled. “126” is the magic number on which PWM (and the dimmer) is still working but the brightness is much higher.

BCM doesn't accept values greater than 127 for those fields, and drops the last bit.

Dimming Direction CD, EF, GH (maximize / minimize) – same pairs as the previous field. A and B functions do not have it but instead, use the maximize direction all the time and are controlled by door locks.

Lichtansteuerung HD AB (always / only_if_closed) – door locks dependency for AB functions.

By adding different events/functions to A, B, C, D… and setting different maximums on AB, CD… pairs you can achieve many effects for each light source. For example, the footwell lights can be controlled in the MIB2 UI with the knob at a 70% limit, but they light up to 126 when you open the door to exit the car. The cornering feature of foglights is programmed the same way with one more event assigned to them.

⚠️DISCLAIMER: All of the above are my theoretical reflections based on experiments and personal experience. The post is not a call to action. Your actions must be based on a personal decision. The author is not responsible for any damage you may cause to your vehicle.
Next →  
Bosch AeroTwin Wiper Blades
  ← Previous
Audi TTS Steering Wheel + FL Stalks


temp temp

More like this