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.
? 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
| Tool | Notes | Required? |
|---|---|---|
| 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
-
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).
-
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.
-
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.
-
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.
-
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 To Notes 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.
-
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:
Parameter Set To Notes BLINKL_HINTEN_CHECK nicht_aktiv Rear left indicator circuit check verify BLINKR_HINTEN_CHECK nicht_aktiv Rear right indicator circuit check verify -
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.
| Component | Notes | Required? |
|---|---|---|
| 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.