I think I pretty much covered the wiring and physical installation of an FLA (high beam assist) mirror in my last post. So here is the coding side of it.
To be really clear, I do not intend to give a step-by-step for this. I am a coding novice myself, and I did make a few changes to my E60 by following step-by-step guides in a rote fashion. This, however, is not a good way to approach coding. Unfortunately, you need to understand what you are doing at least a little.
With that said… everything you need to do to add FLA, you can do using NCS Expert and NCS Dummy. You should also have INPA for your car. You can get the software here or here.
When you have hooked your new mirror up, you should be able to see the FLA module in INPA:
You will also be able to read the status of the module:
In this last image there is a clue to the coding problem you will face if you installed a 2nd Gen FLA mirror in an E60. The 2nd gen module is called FLA_R. The first gen module is called FLA_65, presumably because it originated in the E65 7-series.
That’s a problem because the E60 never shipped with an FLA_R module, only FLA_65. We’ll come to this later, but the next steps are actually pretty easy.
First you must add $5AC to your VO in NCS Expert.
Second, you must update your VO in both LMA and CAS (ie, use FA_WRITE).
Thirdly, you must factory code LMA, CAS, and CAPPL You may also need to factory code KOMBI. For me, factory coding KOMBI led to a whole lot of service reminders, including some that I couldn’t clear easily. I am sure this can be sorted but instead I reverted to the previous KOMBI coding and had no problem with FLA working. So, I don’t think you actually need to code KOMBI but I may be wrong.
Fourthly, using NCS Dummy, check that you have VA_LONGDISTANCELIGHT set as “AKTIV” in CAPPL. It should be set to AKTIV by the factory coding but if not, set it.
At this point, you should be able to turn on high beam assistant in idrive. Then, you should be able to turn on high beam assist by (a) putting your headlights into auto mode and (b) pushing the high beam stalk forward once.
Now the next step is easy if you used a first gen FLA mirror. All you need to do is factory code FLA_65 as well. That’s it, you have working high beam assistant.
If however you obtained a more difficult but superior second-gen unit, you cannot factory code the FLA_R unit using an E60 profile in NCS Expert. You are going to have to use a “virtual car”. This was completely new to me, but it’s fairly easy. I used an E90 profile. I factory coded using that. All good, except that the windscreen angle (and therefore the mirror angle) is different in an E90.
An E60 is a better looking car than an E90, including having a slightly more sloped windscreen – the E60 slope sits between an E90 and an E92 slope.
As you can see from the source code above, there are two parameters – the offset angle (vertikal_bild_offset, or vertical image offset), and the direction (richtung_bild_offset, or image offset direction). The direction can of course be “up” or “down”, auf or ab. For an E90, you have an adjustment of 0.8 degrees up. For an E93, 2.4 degrees up. In other words, the slopier the windscreen the more the upward adjustment. For an E70, the adjustment is 1.7 degrees down. All these angles are relative, in the real world, to 27 degrees (the 25 degree bracket, and the +2 degree plate).
For an E60, the correct offset is 2.1 degrees up.
It was therefore necessary to add a custom value in NCS Dummy. The correct offset is 2.1 degrees, making a decimal value of 27 and a hex value of 15h.
Don’t worry, this will make sense when you are in FLA_R in NCS Dummy. There are many other entries in there. You can change the minimum speed at which FLA will operate – generally speaking, it seems like the China or US values are better than Europe for maximising the utility of FLA. However, I used custom values so that I can activate FLA at quite low speeds. There is also a field for sensitivity, and fields to do with numbers of streetlights. I have not experimented with these, but one day I probably will.
If you can manage all that you are done and you have working 2nd gen FLA in your E60.
(Just a note on that angle – it should be correct provided your gen 2 mirror has a “+2 degree” bracket. I have never seen a gen 2 FLA mirror with a different angle and I am pretty sure they all have this. Still, it might be something to check. Another point to note is that for first gen FLA, different vehicles had different physical bracket angles.)
On all of this, MrPerfekt’s blog is of huge help. He has multiple posts around mirrors and FLA. He was working on an E63 which had an additional difficulty since the mirror is sufficiently sloped that it sits outside the software range of a 2nd gen FLA mirror.
Mine is working although it’s the height of summer here and I haven’t had a chance to test it much, since it’s light very early and very late. I have one remaining issue, which is that I cannot turn high beam assistant on and off i-drive. It is always “on”, but always displays as “off. I think I know how to fix this, but haven’t gotten around to it yet. If I work it out, I’ll post accordingly.
In the video above, I am clicking to enable FLA, and indeed the checkbox gets checked. However, it unchecks itself a moment later. Nevertheless, FLA works fine- it’s not that I can’t enable it, it’s that I can’t disable it. Not a problem; if I really get sick of it I can code it out or just turn the headlight switch away from auto.
“Virtual car” coding
Just a bit more info about coding using a “virtual car” or SSD file.
Here is a video, not made by me, but by “Cimdaher” on bimmerfest.com:
It looks a little weird if you haven’t done it before, but it works. I made a virtual car “SSD” file to suit an E90, with just the necessary options in the VO. This enabled me to access the FLA_R module in NCS Expert/NCS Dummy.
Note that you do not need to follow the above video exactly. It works perfectly well to use NCS Expert and NCS Dummy to edit the module, using codierdaten_lesen and sg_codieren as you normally would, without using the “basic functions” and netto.dat coding, if that is your preference (it is mine.)
To learn more about coding an E60/63/65/70/90/xx, especially after you have dabbled a bit, you must read everything at https://www.drive2.com/l/7480728/ through to https://www.drive2.com/l/456668136897251064/
The blog is in Russian but Chrome translates it for me automatically. The English translation is very easy to follow. The trouble, of course, is that it doesn’t come up in search engines in English, which is a great pity because it is so valuable.
Be First to Comment