in which I replace the headlight lenses on my car

or why it’s not worthwhile to resurface old headlight lenses
or ignoring the above, the right way to resurface, seal, and protect old headlight lenses

My 2003 BMW E46 330i is just a few months shy of hitting 14 years from its build date.

The years that I’ve had her have not been kind. They’ve often involved long periods of baking under relentless sun, haphazard upkeep, and infrequent washes.

For the first three years, she spent almost every second of every day outside in the Oklahoma sun. She spent half of her summers sunbathing in Houston, Texas. In the winter, I’d take her out on Tulsa’s salted roads. I relished snow days, where I could shred fresh-fallen powder and kick the rear tires loose.

Conditions remained this way while I attended graduate studies at the University of Missouri. The apartment complex that I was living in had no covered parking available, and she endured hail strikes on at least three occasions in that time.

So when I moved back to Houston in the spring of 2013, one of the things that I did was to ensure that she could spend some of her remaining days within the comfort and safety of a garage. By then, the damage had already been done.

While I was working car sales, I decided to patronize the detailer that we had on the lot. His name was Abraham, and he was a Mexican guy that mostly did touchup work on the used cars before they were listed for sale. On request, he would also perform work on personal vehicles. Abraham didn’t have access to the best equipment or facilities, and it showed (holograms aplenty), but I decided to go for it.

I can’t remember how, exactly, but Abraham talked me into letting him resurface my headlight lenses the one time that I asked him to help touch up the various battle scars on my car. The lenses looked good for a while, but their condition deteriorated at some point, and now they look horrendous.

I purchased new lenses (63126924045:, 63126924046: from, selecting those manufactured by Automotive Lighting (AL). I also purchased new headlight cover strips (63126921859:, 63126921860: from

A little history: AL was established as a 50/50 JV between Magneti-Marelli and Bosch. In the year 2003, Magneti-Marelli took full ownership of AL. Small wonder, then, that my new headlight lenses arrived in boxes proudly bearing the Magneti-Marelli logo.

I had just finished installing the Mishimoto silicone air intake boot kit, and decided that I’d take a moment to swap out the driver’s side headlight lens. The new headlight lens was infinitely clearer.

New headlight lens
New headlight lens – note the clarity of the projectors as well as the reflections

When held next to the old lens, I could see the degree to which the original equipment had yellowed.

Old headlight lens
Old headlight lens, scarred by years of wear and tear

I turned on the xenon headlights, and was surprised by the difference in clarity and color rendition. The driver’s side light output was tack sharp and bright white, whereas the passenger’s side was dull and yellow in hue.

Comparison shot of light output between new and old headlight lenses
The difference in light output between the new lens (left) and the old lens (right) is evident

I quickly moved to replace the passenger’s side headlight lens as well. The car’s front end appearance is remarkably improved. Talk about eyes being the windows to the soul…

There are inherent risks involved in replacing the headlight lenses on any vehicle. On the E46 sedan, there’s a painted trim piece that goes beneath the headlight assembly. The old plastic tabs may crack during removal, especially when done without the use of trim removal tools.

Why do headlight lenses degrade?

Mechanical and/or chemical failure of UV-protective coating resulting in direct exposure of polycarbonate to the elements. Polycarbonate has low scratch resistance and is susceptible to UV degradation, which takes the form of yellowing.

What’s wrong with plain resurfacing of polycarbonate headlight lenses?

By polishing the lenses, one removes the original UV-resistant coating. Unless this coating is replaced, the results can be expected to fade rapidly.

What are qualities to look for in a coating for headlight lenses?

The ideal coating to apply after resurfacing a lens would be clear, protect the polycarbonate from UV exposure, form a strong bond with the polycarbonate surface, and have wear resistance. I’ve identified the following products through my own research:

Coatings suitable for polycarbonate headlight lenses

Dupli-Color Headlight Restoration Kit – Clear Coat Step 2 5 oz – HLR300 ($14.99 kit,
Krylon UV-Resistant Clear Coating, Clear Gloss, 11.0 oz – 1305 (~$12,
(both Dupli-Color and Krylon are owned by Sherwin-Williams)
Solaray UV Clearcoat – 12 oz (~$40,

Ideal protection for headlight lenses would include a clear vinyl appliqué. Lamin-X is the leading brand name in this department. They offer precut films for a wide variety of vehicles.

I applied Lamin-x B011CL (BMW E46 Sedan fitment, to my new lenses to ensure that they will hold up through the years to come.

Chasing Electrical Gremlins: Power Windows With Minds of Their Own


  • Sound coming from the rear passenger window switch (61316902174). Sounds like electrical crackling.
  • Rear passenger window switch sometimes not responsive.
  • Rear passenger window goes up by itself
    • It does this in a jerky fashion, sometimes pausing
  • OBC function 14 shows frequent voltage fluctuations
Reading the state of the passenger-side rear window switch from the General Module (GM5 / GM V) within ISTA/D shows that it is cycling states between “Rest position” and “Closing” frequently.


Removed and inspected rear passenger window switch. Completely stripped down rear passenger window switch, and cleaned electrical components. Reassembled and observed that symptoms were no longer present.

Order Placed: Mishimoto BMW E46 Silicone Intake Boot Kit

In the course of replacing the CCV system, I discovered a couple of defects in my 2003 BMW 330i’s air intake boot.

  1. On the upper part of the boot (13541438761, part #3 in the diagram below), the protrusion that accepts the F-shaped connector (13327503677) was developing a tear
  2. On the lower part of the boot (13541438759, part #6 in the diagram below), the accordion section that plugs into the idle control valve had a tear


I’ve been replacing components on the vehicle with more durable materials where possible.

Part of this entails replacing rubber components in areas subject to high temperatures with silicone. Mishimoto’s silicone intake boot kit for the BMW E46 330i (MSRP $175,, Mishimoto) will suit the task perfectly:

  • Direct fit for the 2001-2006 BMW 330i (including the ZHP)
  • Maximum Temperature: 330°F
  • Constructed with high grade silicone and heat-resistant embedded fibers
  • Mishimoto Lifetime Warranty

Mishimoto does offer its silicone intake boot kit for the E46 323/325/328 as well (MSRP $175,

Further Troubleshooting of E46 No Start

In which I get BMW dealer-specific tools on my side

Many years ago, I ordered a USB to OBD2 interface. It is recognized by my machine as a Future Devices FTR232R USB UART (chip FT232RL).

I wasn’t able to get this working properly at the time, so I turned around and ordered a different interface, marked BMW Scanner 1.4.0. This shipped with PA Soft’s BMW Scanner, and served me well for reading off error codes and resetting them. I was able to use it to reset the airbag indicator, which I tripped during a window regulator service back in December 2012.

Most recently, I found myself troubleshooting a no start condition following the replacement of my 2003 BMW 330i’s CCV system.

I knew that it would do me well to play with some BMW dealer-specific tools. There were limitations to the depth that I could go as a shadetree mechanic by relying solely on BMW Scanner 1.4.0, and I was starting to question my decisions.

I started with an installer that I already had on my NAS: EasyDIS + GT1 v44. I gave up after installation failed. For reasons unknown, I wasn’t able to get GT1 v44 to install.

At this point, I learned of newer diagnostic tools, so I decided to pursue those instead.

I browsed the BMW Coding and Programming section of the Bimmerfest forums and found Mike’s Easy BMW Tools Package (direct download through Mega), which contains the following (note that I do not provide support for this tool, but merely post information on it for reference):

  • INPA 5.0.6 (with English script files and support for F-series
  • EDIABAS 7.3.0
  • NCS Expert (with English menus and buttons, and NCS Dummy Profile pre-installed)
  • NCS Dummy 4.0.1
  • Tool32 4.0.3
  • WinKFP 5.3.1
  • Integrated SP-DATEN v53.3
  • BMW Coding Tool v2.5.0 (for use as an alternative to NCS Dummy, or to update DATEN files as new ones become available)
  • USB Drivers for cable

I ran the installer on the same Windows XP Pro SP3 virtual machine that housed my working copy of BMW Scanner. I skipped the bundled USB drivers for my interface, opting to use the latest revision from FTDI. Initially, I encountered no success with INPA, but I was finally able to get INPA to read some of my vehicle’s data after revising settings inside of the Device Manager.

I read on ( that changing USB transfer sizes would help: inside of the Device Manager, expand Ports (COM & LPT), right-click on USB Serial Port and select Properties, select the Port Settings tab, click the Advanced… button, and adjust the Receive and Transmit data rates to 2048 Bytes using the dropdown menus.

Given that I was able to get my FTR232R USB to OBD2 interface working for INPA, I reasoned that I wasn’t far off from ISTA/D. I set up ISTA/D under a new Windows 7 64-bit virtual machine. After checking EDIABAS.ini and OBD.ini against my known good configuration, I wasn’t getting anywhere.

I contemplated purchasing yet another interface, but stopped myself. I had yet to perform modifications to the cable. Time and time again, I’ve seen advice stating to solder pins 7 and 8 on the interface. With this modification performed, ISTA/D was successful at last in reading my vehicle’s information.

A couple of things stood out to me from the laundry list of error codes that I was dealing with. First were the codes relating to the DMTL pump:
8C/72 – Output stage fault, DMTL pump, short circuit to negative or open circuit
7E/72 – Output stage fault, DMTL module, tank leak diagnosis valve, short circuit to negative or open circuit

Next was the ominous sounding code relating to the main relay:
24/61 – Main relay, fault

I performed a search for information about the BMW E46 DMTL pump, and noted that it was an emissions control component located at the rear of the vehicle. I disregarded the error code for the time being – after all, my work had taken place in the engine bay.

Moving forward, I tackled the main relay fault first. Within the ECU box is a black box containing five fuses. I found this blog post on Bavauto helpful.

I wasn’t able to get the fuse pack lid off without destroying the locking tabs. I dumped all of the fuses out, and discovered one of the 30 amp fuses was blown. I replaced this with a spare that I had lying around.

Using ISTA/D, I was able to generate a test plan to diagnose each individual error code. The troubleshooting procedure for the DMTL pump included a test whereby the ECU would signal the operation of the DMTL valve (the parts diagram refers to this as the fuel tank breather valve – part #1 in the diagram below, BMW
13901433603) for 15 seconds. During this time, ISTA/D stated that a ‘tocking’ sound would come from the unit.

BMW E46 Fuel Tank Breather Valve diagram
BMW E46 Fuel Tank Breather Valve diagram

I heard no ‘tocking’ sound, so I indicated within ISTA/D that no sound was heard, and moved on. ISTA/D stated to check the connector, and further stated that the connector in question had two wires. Well, I checked my connector, and I had plugged one with only one wire to the valve. This begged the question, where was the right connector for the DMTL valve?

I pulled and checked various connectors, eventually coming across the connector for the oil pressure switch (part #12 in the diagram below, BMW 12618611273). This connector is the same shape as the connector for the fuel tank breather valve – the only difference being the number of wires. I ran my finger against the single pin of the oil pressure switch, and knew where I’d erred.

BMW E46 Lubrication System - Oil Filter diagram
BMW E46 Lubrication System – Oil Filter diagram

In closing, the connector mixup resulted in one of the 30 amp fuses within the ECU box fuse pack blowing on each attempt to start the car. Prior to starting the car, I got a long list of error codes. After attempting to start the car, I’d get an error code for a main relay fault, indicating that a fuse within the ECU box fuse pack had blown.

Further on modifications to the USB to OBD2 cable – geargrinder’s post on Bimmerforums:
Is car DCAN or do you ever want to do DCAN cars?
Yes – Buy new BMW K+DCAN Cable, toss VAG cable in back of closet
No – Continue on…

Do you really need ignition sense?
Yes gotta gotta must have – OK do you want do it the easy way or hard way or the quick hack way?
Easy – Buy new BMW K+DCAN Cable, toss VAG cable in back of closet
Hard – Fork around with modding your VAG cable, check to be sure 7&8 bridged at the same time
Quick Hack – Use FTDI drivers to fake ignition sense per other threads & check 7&8 bridged
Meh don’t need – just check 7&8 bridged on VAG cable, continue on with life

Spoofing ignition sensing can be done using MProg per the following instructions:
Install MProg & modify the programming of the EEPROM FT232RL
We need to invert RI # and DSR # signals to fool the detection of battery and ignition. After programming check your I/O Control settings, they must be:
Invert RI ticked
Invert DSR ticked
Save settings