E46 M3 European City Light Retrofit

posted in: 2005 IB E46 ZCP M3 | 13

BMW E46 European City Light Retrofit


Car modding can be a funny thing. People in the United States like to have European options on their cars and sometimes Europeans want US options on their cars. To make my E46 M3 even more ‘Euro’, as some would say, I decided to retrofit European city lights. There are two main reasons I decided to do this. First, I prefer the way it looks compared to the turn signals being used as parking lights and secondly, it is safer. Since the turn signals no longer work as parking lights when the headlights are on they only illuminate when the turn signals are used. So instead of having the turn signals flash from dim-bright-dim-bright as they normally would, the turn signals now flash from on-off-on-off. This is more likely to catch another driver’s attention as a result of the varying light intensity from the turn signal.

Required Parts

  • 2 city light bulb sockets – BMW part 63128380205
  • 2 universal socket housings – BMW part 61138373332
  • 4 pre-crimped contacts with rubber seal – BMW part 61130006624
  • Approximately 14 ft. of 20ga blue/black striped wire (purchased from EFI Connection)
  • Approximately 14 ft. of 20ga green/black striped wire
  • Approximately 10 ft. of 20ga brown wire
  • heat shrink tubing
  • 2 ring terminals for 20ga wire
  • Sealed ground connector kit – BMW part 61116935000 (your discretion)
  • 4 112 rubber o-rings. I got them out of this kit from Harbor Freight.
  • 2 W5W bulbs


To begin, I removed both the driver and passenger headlight from my M3 so I could add the city lights.

This is what the area on the back of the headlight looks like where the city light gets installed.

The hole is about 17mm in diameter.

This is one of the city lights and a spring loaded punch. I had planned on using the spring loaded punch to make it easier to drill a centered hole, but found out that this was not a good idea. I try to post my mistakes to keep you from making the same ones.

This is why it was not a good idea. I thought the plastic housing was thicker in this area like they are on the European headlights, but it turned out they are different on the US headlights. As I was pressing with the spring loaded punch it broke through.

I went ahead and drilled the hole round. It is a little off center, but close enough.

Since I had the headlights removed I decided to remove the headlight lenses and perform cataract surgery to clear up the haziness on the projector lenses that had been bugging me.

I wanted to clean the back of the lens as well as the front, but I did not want to completely disassemble the headlight. I have read where some people recommend using pipe cleaners, but I didn’t have any on hand. I ended up cutting up an old, clean microfiber and using it with a small jaw pickup tool.

I dampened the cloth with distilled water and wiped the back side of the lens through the hole where the xenon bulb sits.

Projector lens cleaned.

This is the driver’s headlight prior to cleaning the lens.

Cleaning the driver’s side lens.

Driver’s lens cleaned.

I didn’t use the punch on the driver’s headlight and went straight to drilling.

Started off with a small drill bit and worked up successively to larger drill bits until the proper size was reached.

This is when the proper size was reached and the city light would snugly slide into the housing.

I used a small file to open areas for the locking tabs of the city light to slide all of the way in.

I didn’t notice when I did this to the passenger light, but my brother noticed that the locking tabs on the city light are different sizes. There are two 180 degrees from each other on the city light. He filed the two areas on the headlight housing to match the city light so it will only go in and out one way. This isn’t necessary, but it gives it more of an OE feel.

As stated earlier, the European headlight housings are thicker in this area. This makes a difference in how the city lights are secured. When the city light was completely installed and locked in the o-ring did not seal against the housing and it moved around freely. To fix this issue, I decided to add two 112 size o-rings behind the city light o-ring to take up the missing thickness in the headlight housing.

I still wanted the OE o-ring to seal against the housing, but wanted something to take up the slack and provide a secure seal. Adding two 112 o-rings to each city light worked perfectly and gave a perfect seal and feel when installing them.

This is the headlight with the city light installed. About as OE as possible with US headlights.

After the easy part of installing the city lights into the headlights, I began on the more difficult job of running the wiring.

This is the wiring I used. They match the color of the wires in the E46 wiring diagram. I chose to purchase this from EFI Connection because they are the only source I was able to find that sold striped wire that is similar to what is used by BMW.

I started by removing the DME housing cover in the engine bay and removed the DME and SMG control unit. To gain better access to the wiring bundle coming from the cabin, I also removed the DME carrier which is a separate piece of plastic from the housing. There are several zip ties holding all of the wiring to it that need to be cut before the carrier can be removed.

Once the zip ties are removed, the carrier can be removed.

I found something interesting on the bottom of my DME box. I am not sure what this was used for, but my M3 used to be serviced by VAC Motorsports and was tuned by Discovery Automotive in the past, so maybe this little wire had something to do with that.

This is where the wiring bundle goes through the cabin firewall on the driver’s side.

Carpet pulled back for better access.

I usually prefer to use a long zip tie to fish wires because it isn’t likely to tear any rubber boots or chafe any wiring. I peeled back a small portion of tape on the wiring bundle and pushed a zip tie from inside the cabin to the DME box through the rubber grommet.

After fishing the zip tie through, I taped the wires to it using electrical tape and pulled through to the inside of the cabin.

I made a mistake here when I first did this. Only pull the green wire through. Do not pull the blue wire through on the driver’s side! This is explained further below.

After I pulled the wire into the cabin I went ahead and ran the wires to the light switching center.

I had a spare X12 connector (LSZ/LCM connector) I had cut out of a sedan and after looking at it I saw two of the same colored wires that I needed. I removed those wires from the connector and spliced them to my wires so I could connect them to the X12 connector in my M3.

Black cover removed.

The two wires I needed removed.

I lineman spliced both pins to my wires and added heatshrink.

After this was done I connected the pins to my X12 connector and reinstalled the light switching center.

I added the blue wire to the number 44 open slot and the green wire to the number 45 open slot.

I then taped the wires with Tesa fabric tape along the main harness to tidy it up.

I also taped the wiring in the DME box. Ignore the blue wire, I still hadn’t caught this mistake yet.

You can see here where I pulled the blue wire out and left the green wire. The reason for this is because you don’t want a wire running across the front of the car. If anything ever needs to be removed the wire could be in the way or the wire could be damaged.

I decided to keep it as factory looking as possible and route the blue wire, which is for the passenger city light, behind the dashboard and along the wiring bundle behind the glovebox.

Since the green wire was where it needed to be I zip tied the wiring back to the DME carrier and installed it all back together.

All reinstalled and looking as nice and tidy as before.

The only part of the green driver’s city light wire that is visible.

I taped the blue wire to a zip tie and fished it behind the dashboard. There is a large piece of white plastic that the harness behind the dashboard goes under so I ran my wire under that. The yellow wire you see is for the rear fog lights that I had previously retrofitted.

Fished through to the passenger side.

I ran the wire under any existing zip ties and taped it up with fabric tape up to the module carrier behind the glovebox.

I didn’t want to remove the module carrier, but for ease of running the wire and a cleaner install I decided to.

The module carrier needs to be unclipped first. This is done by pushing it towards the front of the car and pulling down. You can see the bars that clip into the hooks.

After it is unclipped there are several zip ties that need to be removed. A few holding part of the wiring harness to it on the front and one on each side at the back.

After the zip ties are removed the carrier can be moved down and out of the way.

This is the main wiring bundle that fits into the back of the carrier and is zip tied.

You can see the loose yellow wire. I didn’t remove the carrier when I ran the rear fog light wire, but I took this opportunity to tape both wires to the main bundle.


I taped the end of the blue wire to a zip tie again and pushed it through the grommet for the wiring harness.

It would have been easier to just poke a hole through one of the empty ‘fingers’ of the grommet, but I wanted a factory look.

This took me several tries to figure out how to get the wire through. First, some of the electrical tape needs to be removed from the rubber boot on the engine bay side.

I had to resort to using a small screwdriver to stretch the boot a little to feed the wire through. Be very careful when doing this so you don’t damage the grommet. I went mostly by feel since I couldn’t see both sides at once.

I tried several times to get the wire underneath the large chunk of rubber on the wiring, but I was not able to.

This is what it looked like on the other side.

Once the wire was through, I removed the screwdriver and pulled the wire the rest of the way towards the engine bay.

All of the way through.

I rolled the rubber boot back in this picture and you can see why it is impossible to run the wire under the large rubber block.

After the wire was pulled all of the way through I taped the wiring up and zip tied everything back to the module carrier.

This picture was to show me how to put new zip ties back in the same orientation.

Back together.

Glovebox installed and the interior wiring finished. Next was to run the wiring in the engine bay.

This is the boot pulled back over the rubber on the harness.

I made sure the wiring was on the bottom side of the harness so it wouldn’t be noticeable after being taped up.

On both the driver and passenger side I cut the zip ties holding the harnesses and ran the blue and green wire along them and taped them up.

This is showing a rubber grommet that can be opened up by removing a locking tab.

Opened up and wire ran through.

Wire being run along the harness.

Down to the front of the engine bay.

I used a non adhesive wiring harness tape to wrap the harness up and then used Scotch Super 88 electrical tape to tape the ends. This makes it easier to remove the wires in the future if need be and it keeps electrical tape adhesive from melting out and creating a gooey mess.

The BMW pre-crimped contacts were lineman spliced with the blue and green wires, heatshrinked and taped up and snapped into the electrical connector.

As far as the ground goes, the proper way would have been to tie into the driver and passenger engine bay ground locations. They are a sealed rubber block, though, and a repair kit would need to be used for both sides. Part number is at the beginning of the post. It is not cheap.

I opted to use a ring terminal and put it under the nut at that ground location. It works fine and makes it easier to reverse this mod in the future if need be. Pictured below is the completed harness.

Clipped into the headlight.

Removing zip ties on the driver’s side.

Picture to show orientation of zip tie.

Wire moved underneath the harness.

Taping the harness with non adhesive electrical tape.

Driver’s side city light harness completed on the far left.

To make the city lights work, the light control module needs to be coded. I coded my module as a European model. This activated the city lights and deactivated the US sidemarker lights. If you need any help with coding, post in the comments below.


Overall I would say this was a fairly easy project. Since I didn’t have anything to go by I had to figure it out as I went, but it would definitely be easier and faster if I did it again.

Interested in another DIY? Check out our illuminated M-Track button for ZCP/CSL models. If you have any comments or questions about this DIY, post them below.

13 Responses

    • TC2

      Hello Carlos,

      The light control module needs to be coded as a European model. All of the coding can be done in NCS Expert.
      The vehicle region in the VO (vehicle order) needs to be changed. BL93 or BR93 changed to BL91 or BR91.

  1. sancho

    Hi! Thanks for the detailed exolanation! Could you explain step by step how to code?


  2. PPCAR

    Bonjour, je viens d acheter une M3 E46 des USA pour le ct en Belgique ,je dois faire la même modification donc un grand merci .
    Concernant l’anti brouillard arrière sur quelle broche du LSZ l’avez vous placé ?

    Encore mille merci

  3. E46xiT

    Hello, is it possible to code to the EU LCM to activate city lights but also keep the side marker lights active?

    • TC2


      If I remember correctly it is possible to keep the sidemarkers active along with the city lights. You will need to make sure SIDEMARKER_US is set to aktiv in the NCS Expert manipulation file for the LCM.

  4. Stefan

    Very detailed explanation on how to Install city lights.
    My question is how exactly does the coding work so the lcm knows it is an european one. I own an us m3 but live in Europe so i need to have the city lights. I am now struggling coding the LCM maybe you could help me

    • TC2

      Hello Stefan,

      I hope our post helps you install city lights in your headlights.

      I assume you have BMW coding software? I used NCSExpert for the coding. You will need to edit the VO (Vehicle Order) using the FA Write function. I assume you have a US model Coupe. Your current VO should show “BL93” in the VO. This needs to be changed to “BL91” (value for a left hand drive European spec coupe).

      I hope that helps a little bit. If you are unsure about changing the VO using NCS Expert there are many guides in the forums that explain how to do it.

      Let us know how it works for you.

  5. Jochen

    I’m moving from the U.S. to Spain and will need to retrofit the city lights on on E46 convertible. Is there anyway to obtain the pictures? This sounds like a great guide but without the pictures it will be difficult to follow. Thanks!!

    • TC2

      Hello Jochen,

      We are working on fixing the pictures on the website. I don’t know why they are not currently appearing.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.