All Guides
E90 E91 E92 E93

Pre-LCI → LCI Tail Light Conversion Coding

After physically swapping LCI rear lights onto a pre-LCI E-series chassis, you need to code the FRM module to clear check control errors and configure it for the new light assembly. Without this step: dash warnings, possible hyperblink, or lights that don't function correctly.

Difficulty
3 / 5
Coding Time
~20 min
Years (pre-LCI)
2005–2008
Risk
Moderate

? Why Coding Is Required

The E90 FRM (Front/Rear Module) continuously monitors the load/resistance on every light circuit. LCI tail lights have a different circuit layout than pre-LCI units — specifically the indicator/DRL integration. When you swap the lights, the FRM sees resistance values it doesn't expect and throws check control messages. In some cases it also triggers fast blink (hyper-flash) on the turn signals.

Coding tells the FRM what hardware to expect. It's not optional.

This guide covers coding only. The physical swap — swapping outer and inner tail lights, replacing the trunk lid or adding an adapter harness — is a separate procedure. Complete the hardware installation first, then come back here to code.

Before You Start

E-series OBD2 protocol is K+DCAN, not ENET. The E90/E91/E92/E93 uses an older OBD2 protocol. The Wi-Fi ENET adapters used for F-series won't work here. You need a K+DCAN USB cable or a compatible Bluetooth adapter — see the tools table below.

  • Physical LCI tail light swap already completed — both outer and inner panels, plus trunk lid or harness adapter
  • BimmerCode app (iOS/Android) with a compatible E-series adapter
  • OBD2 adapter compatible with E-series K+DCAN: Vgate iCar Pro BLE, INPA K+DCAN USB cable, or similar
  • Car in an accessible location — you'll want to walk to the rear and check lights after coding
  • BimmerCode backup saved before changes

Required Tools

ToolNotesRequired?
BimmerCode (iOS/Android) Primary coding app. Supports E90 in Expert Mode Required
Vgate iCar Pro BLE Bluetooth OBD2 — compatible with E-series K+DCAN via BimmerCode Required
INPA K+DCAN USB cable Alternative for NCS Expert or WinKFP. Requires laptop + Windows Alternative
NCS Expert or WinKFP Legacy BMW coding tools. More powerful but significantly more complex Alternative

Step-by-Step Coding Procedure

  1. Connect BimmerCode to the E90

    Plug the Vgate iCar Pro (or compatible K+DCAN adapter) into the OBD2 port. Open BimmerCode, select your adapter type, then select your car. For E90, select BMW 3 Series, E90 (or E91/E92/E93 as appropriate).

  2. Navigate to Expert Mode

    Tap the Expert Mode button (top right in BimmerCode). This exposes the full CAFD parameter list. You need Expert Mode because the check control settings are not available in standard mode for E-series.

  3. Select the FRM module and read coding data

    From the module list, select FRM (Front/Rear Module). Tap "Read coding data." On E90, this module handles all lighting check controls. The read takes 20–40 seconds.

  4. Save your backup

    BimmerCode will prompt you to save a backup when you open the FRM module. Do it. Label it clearly — "pre_lci_conversion_[date]". The FRM has many parameters; you want a clean restore point.

  5. Disable the check control messages for the tail lights

    Scroll through the FRM parameters and look for the check control entries for the rear lights. These are typically labeled with the light position. Set the check control for both rear outer and inner tail light circuits to disabled.

    In BimmerCode Expert Mode, look for parameters matching this pattern:

    Parameter (search for)Set ToNotes
    CHECK_CONTROL_[rear light section] nicht_aktiv Disables load monitoring for that circuit
    L_RUESSEL_HECKKLAPPE nicht_aktiv Left inner tail light (trunk lid) check — verify in your FRM version
    R_RUESSEL_HECKKLAPPE nicht_aktiv Right inner tail light (trunk lid) check — verify in your FRM version

    Parameter names vary by FRM hardware version and production date. The exact parameter names listed above are documented in the community but may differ slightly on your car. Look for any parameter in the FRM that references "HECKKLAPPE" (trunk lid), "HECKLEUCHTE" (tail light), or "CHECK" for the rear lighting circuits. If you're unsure, post your FRM coding dump to the E90post.com forums — this is a well-documented conversion and the community has specific advice for each FRM version.

  6. Check for indicator (turn signal) coding

    LCI tail lights incorporate the indicator into the light cluster differently than pre-LCI. If you see hyperflash (turn signals blinking extremely fast) after the swap, the FRM is treating the LCI indicator circuit as an LED load issue.

    Look for the turn signal check parameter for the rear lights and set it to match the LCI configuration. On some E90 FRM versions:

    ParameterSet ToNotes
    BLINKL_HINTEN_CHECK nicht_aktiv Rear left indicator circuit check verify
    BLINKR_HINTEN_CHECK nicht_aktiv Rear right indicator circuit check verify
  7. Code the changes and verify

    Tap Code to write the new values to the FRM. After coding, do a full ignition cycle (off, wait 10 seconds, back on). Check the dashboard for any remaining check control messages. Walk to the rear of the car and test all light functions: brake, indicator left/right, reversing, and running lights.

Hardware Checklist for the Swap

This is not the swap guide — but here's a quick reference for what hardware is needed, because the most common reason coding doesn't clear all errors is an incomplete hardware swap.

ComponentNotesRequired?
LCI outer tail lights (both sides) Left and right rear quarter panel units Required
LCI inner tail lights (trunk lid) Two pieces mounted to the trunk lid Required
LCI trunk lid Pre-LCI and LCI trunk lids have different inner light mounting points Recommended
Harness adapter If retaining pre-LCI trunk lid — adapters exist but fitment varies Alternative

! Risks & How to Revert

FRM contains many critical lighting parameters. Coding only the check control parameters is low risk. Modifying other FRM parameters (especially anything related to LIN bus addressing or module IDs) can cause lighting faults that are harder to diagnose. Change only what's necessary for this conversion.

To revert: Restore the backup you saved in Step 4. This brings the FRM back to its pre-conversion state. Note that if you restore the original coding with the LCI lights still installed, you'll get the check control errors back — the coding must match the hardware.

If errors persist after coding: The hardware may be improperly connected. Re-check all connectors at the trunk lid, the body grommet, and the chassis-side harness. A loose ground is a common cause of persistent check control messages after a successful coding session.