discussion 2002 E46 330i Titanium Silver

Tinuva

Staff & Webmaster
Staff member
This is all quite interesting as I didn't code anything on my E46 330i when I put stock Xenon headlights. They just worked funny enough.
I mean back then I didn't have any coding things, I didn't know about bimmercode or proTools, MHD or Carly. I only learned about all of this when I got my E89 Z4. So I can't actually remember how I got those headlights to work but if I remember correctly it was basically plug and play.
Lucky, because if not coded correctly, either the lights show up as not working on the cluster but they work.
Or worse if you unlucky, the lights flickers while turned on, defeating the purpose of a light that should make the dark proper visible to you as a diver.

Maybe your car just had the values coded in a way that works for both xenon and halogen. Not impossible I think if the values are close enough that either type work, if you
understand how the testing system work. Essentially just pulses of power and testing if there is load.
 

Tinuva

Staff & Webmaster
Staff member
Thanks for this.

Let me clarify a little. I (personally) never went the PASoft route as I couldn't easily attain a cable, I would assume that whoever is trying to do this retrofit would also struggle to find a PASoft cable and your conventional K+DCAN cable is far more attainable locally. The PASoft route is substantially easier but sourcing the required items proves to be quite difficult. That being said, my guide primarily focuses on more verbose methods as I used NCS Expert and INPA to do my retrofit.

Secondly, I should've been clearer, when it came to coding mileage, I meant coding the LCZ to correct mileage, not the KOMBI as I would never advocate for tampering with a vehicles mileage. Coding to a LCZ is again, far, far easier using PASoft but again, arranging PASoft components is the real challenge here.

I however, did learn something new from your post as I was completely unaware that one could manually set hex values and still retain the level wheel. This is again, why PASoft is a much smoother route to go, just ticking boxes and basic programming.
Debatable.
Happy to sell mine and then get a new one for myself. They all over ebay and aliexpress. Just means an import vs the overrpiced locally available KD-can cables.
 

Blue Shirt

Well-known member
This is all quite interesting as I didn't code anything on my E46 330i when I put stock Xenon headlights. They just worked funny enough.
I mean back then I didn't have any coding things, I didn't know about bimmercode or proTools, MHD or Carly. I only learned about all of this when I got my E89 Z4. So I can't actually remember how I got those headlights to work but if I remember correctly it was basically plug and play.
That is really weird. The halogens and xenons have very different settings for the pulse-width modulation values. If you don't change the pwm value in the coding, the xenons will flicker constantly unless you also install a capacitor in line. This somehow fools the canbus but is just extra work compared to just changing the coding.

The bi-xenon function for the high-beam setting is also absent and has to be coded in to work properly, plus you have to add a cable and plug for the bi-xenon shutter to open. There is already a socket for this on the xenon light housing.

I will post my method of coding everything with NCS Expert and a normal K+DCAN cable below. This has worked successfully on three E46 xenon retrofits that I have done. In all cases, the manual height adjuster continued to work as normal.
 

Blue Shirt

Well-known member
Here is my method:

Blue Shirt said:
A xenon retrofit to an E46 car that came standard with halogens normally results in quite a few problems:

  1. Fault lights on the instrument display, showing faulty headlights even though the xenons might actually work fine,
  2. Flickering or inoperative xenon low beams, especially with engine running,
  3. No high beams on the inner halogens, or no high beams from the outer xenons (internal shutter does not open).
These issues are mostly dealt with by fitting additional hardware, such as aftermarket wiring harnesses, capacitors and resistors. However, since xenon headlights were an OEM option on these cars, the light control module in the car can be coded to fix all of the abovementioned issues without hardware solutions, with the exception of the bi-xenon feature (controlling the internal flap on the xenon projectors to enable the high beam function). Cars with halogen low beams do not have the wiring harness for the bixenon socket on the light housing, so this has to be retrofitted as well.

The coding of the light control module (LCM or LSZ in German) can most easily be done with NCS Expert. I will not give a tutorial of NCS Expert here, there is plenty to read on the interwebs about it and I will assume a working knowledge of NCS Expert.

Step 1
Firstly, the xenon headlight option (option code $522) must be added to the car's vehicle order (VO) to the AKMB (instrument display) and ALSZ (light control) modules, by using the FA_Read and FA_Write functions. This will cancel the false error lights on the instrument display.

Step 2
Code the LCM for the various xenon functions by changing the following parameters in the ALZS module:
PWM_ANSTEUERUNG_AL (pulse-width modulation control low beams to stop the xenons from flickering)
wert_02 (wert_01 = halogens, wert_02 = xenons)
XENON_TEST
aktiv (aktiv = enabled, nicht_aktiv = disabled)
XENON_TIMEOUT
wert_01
XENON_TIME
wert_01
BI_XENON
aktiv

Step 3
Other options that you can change according to personal preference:
AL_KL_50 (low beams on when starting engine
nicht_aktiv (aktiv = low beams turn off when cranking engine, nicht_aktiv = low beams stay on)
This option is useful to avoid cycling the low beam xenons on/off when starting the engine with the lights turned on, or if your car has auto lights with a light sensor.

BIXENON_EIN_BEI_LICHTHUPE (Bixenon lights on when flashing high beams)
nicht_aktiv (aktiv = bixenons flash together with inner halogens when flash-to-pass (pulling the stalk), nicht_aktiv = only halogens flash)
This option avoids the xenons turning on when pulling the light stalk to flash the high beams with the light switch turned off.

HEIMLEUCHTEN_AL (Follow-me-home lights with low beams)
nicht_aktiv
This option avoids the follow-me-home lights (pulling the light stalk after turning off the car) from using the xenons. You could code the function to use the halogen high beams or even the foglights instead of the low beams by changing the appropriate line HEIMLEUCHTEN_FL (fernlicht or high beams) or HEIMLEUCHTEN_NSW (nebelscheinwerfer of foglights) to "aktiv".
 

osiris

///Member
That is really weird. The halogens and xenons have very different settings for the pulse-width modulation values. If you don't change the pwm value in the coding, the xenons will flicker constantly unless you also install a capacitor in line. This somehow fools the canbus but is just extra work compared to just changing the coding.

The bi-xenon function for the high-beam setting is also absent and has to be coded in to work properly, plus you have to add a cable and plug for the bi-xenon shutter to open. There is already a socket for this on the xenon light housing.

I will post my method of coding everything with NCS Expert and a normal K+DCAN cable below. This has worked successfully on three E46 xenon retrofits that I have done. In all cases, the manual height adjuster continued to work as normal.
I know.
I wander if I ever made a thread on that old 330i of mine. I know for sure I didn't code anything and I also know everything worked as it should as if it was oem. High beams, low beams, no flickering etc. Maybe I did something that I am forgetting but back then I was clueless when it came to coding things. I mean this was a long time ago, 2015 or 2014 even.
 

Riaad

Events Organiser
I know.
I wander if I ever made a thread on that old 330i of mine. I know for sure I didn't code anything and I also know everything worked as it should as if it was oem. High beams, low beams, no flickering etc. Maybe I did something that I am forgetting but back then I was clueless when it came to coding things. I mean this was a long time ago, 2015 or 2014 even.
they did flicker in my ownership (typically only when first turning them on)...was erratic though, and turning them off and on resolved the flicker.
 

osiris

///Member
they did flicker in my ownership (typically only when first turning them on)...was erratic though, and turning them off and on resolved the flicker.
I see. Interesting, I don't remember any flicker happening when I had it. where is that car now?
 

Tinuva

Staff & Webmaster
Staff member
they did flicker in my ownership (typically only when first turning them on)...was erratic though, and turning them off and on resolved the flicker.
ok so the test values were wrong, and they were configured to only test when turning on the car.
 
Top