NCS Dummy - Read Me.pdf

(110 KB) Pobierz
679614733 UNPDF
NCS Dummy - Taking the expert out of NCS Expert
By Revtor@Bimmerforums.com
Preface
This message mentions the use of software like BMW NCS Expert. Please don't ask where to get this software, how
to install it or how to get it work. That's beyond the scope of this message and I will not answer these questions.
Keep the thread clean and on-topic. Thanks!
This message describes a method of coding modules. The method is not new, several members in the Diagnostic
Software subforum of this board already practice this method. The only thing that's new is a program, called NCS
Dummy, which may make things a bit easier. The message is written with the BMW E31 in mind, but it applies to
other bimmers as well.
ZCS
The dealer way of recoding the car to, for example, retrofit options is through changing the Central Coding Key
(Zentraler Codierschlüssel - ZCS). I will not explain ZCS coding into detail, but basically the ZCS is a string stored in
the Electronic Body Module (Elektronik Karosseriemodul - EKM) and the Electronic Immobilizer System
(Elektronische Wegfahrsperre - EWS) describing all options of the car. Make no mistake - the ZCS is not used by the
car or its modules. It's only used by the dealer's coding software (SSS/Progman) to quickly identify the car and its
options. The reason it's stored in two modules is redundancy. This allows the dealer to replace every module in the
car, even the EKM or EWS module without loss of the ZCS. The ZCS is not even very detailed. It doesn't list all
individual settings of each module. It's more a descriptive system where the dealer's coding software knows the
exact settings for each module. For example, the BMW E31 Light Control Module (Lampenkontrollmodul - LKM) uses
the same hardware in both Europe (ECE) and the United States Of America (USA), but its behavior is completely
different. The difference is thus in the coding. But with regards to the LKM the ZCS is not more specific than telling
the car is ECE spec or USA spec. However, knowing the region spec the dealer's coding software knows the exact
settings for the LKM module to show either ECE spec or USA spec behavior.
The ZCS coding system was designed with dealers and garages in mind. It allows them to quickly replace modules
with little to no coding knowledge and occasionally retrofit items using a reference list of ZCS changes. The ZCS
coding system was never designed for coding freedom. But that doesn't mean you cannot code the individual
module options. It's just not possible with the SSS/Progman dealer software.
NCS Expert
In comes NCS Expertentool (usually referred to as NCS Expert)... NCS Expert is part of the BMW Ediabas software
suite which also contains programs like INPA - popular and advanced diagnostic software for BMW vehicles. NCS
Expert is the coding part of the Ediabas software suite. NCS Expert was designed for internal use at BMW - in other
words, for people who know exactly what they are doing. Unlike SSS/Progman, NCS Expert provides no help or
guidance. If you don't know what you are doing, you may very rapidly end up with dead modules. Therefore the
program is often labeled as dangerous to use. One of the most powerful features of NCS Expert is the ability to
create Field Keyword and Parameter Keyword trace files (Feld Schlüsselwort - FSW, and Parameter Schlüsselwort -
PSW). Such a FSW/PSW trace file contains a human readable overview of the selected module options. For example,
here's the FSW/PSW trace file fetched from the LKM module of a ECE spec BMW E31 with third brake light using NCS
Expert:
Code:
FEHLER_3.BREMSLEUCHTE
melden
FL/LH_BEI_KSW_OFFEN
aktiv
KALTUEBERWACHUNG
nsl_li_re
KALTUEBERWACHUNG_NSL
aktiv
KALTUEBERWACHUNG_NSW
aktiv
KSW_FEHLERMELDUNG
nicht_aktiv
NSW_BEI_ABBLENDLICHT
aktiv
679614733.004.png 679614733.005.png
NSW_BEI_FL/LH
aktiv
Human readable may be a bit exaggerated, but with proper knowledge of German and a broad imagination for
the used abbreviations, it is possible to understand most if not all options and settings. NCS Expert allows you to
edit the trace file and recode the car with the updated file. Unlike as with the ZCS coding system, this gives total
control over the module coding. Please note that coding the car with an updated trace file does not change the
ZCS! This means that if you make changes through the trace file and later replace a module and have the car
recoded through the ZCS, your changes are lost. Since this normally doesn't happen very often, it's not really an
issue but keep this in mind.
There is however a real problem. The trace file shows the actual configuration of the selected module in your
car, but it doesn't tell what values are possible for each option. Ok, "aktiv" and "nicht_aktiv" are obvious
opposites, but what other value is possible for the "FEHLER_3.BREMSLEUCHTE" value "melden"? Presumably
"nicht_melden", but that's already a guess. And what to do with the "KALTUEBERWACHUNG" value "nsl_li_re"?
Can you guess the other possible value(s)? The trial and error methodology may not be a very good approach
with NCS Expert and the price of the modules. So unless you are lucky and the option you are looking for has
values "aktiv" and "nicht_aktiv", the trace file seems to be a dead end...
NCS Expert knows all possible values. After all, it has to display them or code them. Strolling through the NCS
Expert data files quickly reveals where it stores this information: The "EDIABAS\NCSEXPER\DATEN\E31\" folder
contains a bunch of *.C?? files, one or more for each module (different revisions). These files are like a relational
database and describe all options and values for the module. Mind those are binary files, not simple plain text
files, so the relational information is not that easy to fetch. Furthermore the *.C?? files describe the options and
values with codes instead of the text representation as used in the FSW/PSW trace file. So reference lists are
required to know what option or value goes with each code. These can be found in the "SWTFSW01.DAT" (field
keywords - FSW) and "SWTPSW01.DAT" (parameter keywords - PSW) files - also binary files.
For example, assume you want to know the possible values of "KALTUEBERWACHUNG" (cold monitoring). First
we have to retrieve the code for this field from the "SWTFSW01.DAT" file. Somewhere in it you'll come along
following data:
.. D8 13 01 00 EE 02 4B 41 4C 54 55 45 42 45 52 57 41 43 48 55 4E 47 00 E8 16 ..
Previous and next data
Start identifier (always 01 00)
Hexadecimal code of the field (always two characters long)
ASCII representation of the field, in this case "KALTUEBERWACHUNG"
End identifier (always 00)
So the code for "KALTUEBERWACHUNG" is "EE 02". Now we can look up this code in the module file "LKM2.C25":
.. 00 17 10 12 00 00 08 01 00 00 01 00 EE 02 00 01 00 01 01 68 00 8F 05 10 00 D7 01 01 00 00 C2 05 10 00 D8 01 01 00
01 CC 10 12 ..
Previous and next data
Start identifier (differs per module file and sometimes changes even within a single file, but there's
structure in it so it's easily recognizable)
The code of the field as found in the "SWTFSW01.DAT" file
Start identifier of a value (differs per module file and sometimes changes even within a single file, but
there's structure in it so it's easily recognizable)
Hexadecimal code of the value (always two characters long)
So "KALTUEBERWACHUNG" has two values, "D7 01" and "D8 01". That's still pretty much meaningless, so we have
to look up the ASCII descriptions for these value codes from the "SWTPSW01.DAT" file. Somewhere in it you'll come
along following data:
.. 34 09 01 00 D8 01 6E 73 6C 5F 6C 69 00 FA 0C 01 00 D7 01 6E 73 6C 5F 6C 69 5F 72 65 00 B8 14 ..
Previous and next data
Start identifier (always 01 00)
679614733.006.png
Hexadecimal code of the value
ASCII representation of the value, in this case "nsl_li_re" for "D7 01" and "nsl_li" for "D8 01"
End identifier (always 00)
We have determined the possible values for "KALTUEBERWACHUNG" to be "nsl_li_re" and "nsl_li". Like I said, you
still need some imagination to understand all abbreviations. In this case, "nsl" stands for Nebelschlussleuchte (rear
fog light), "li" for Links (left) and "re" for Rechts (right). So put in English the cold monitoring has two values, double
rear fog lights and a single rear fog light (in some countries only a single fog light is permitted by law). If you wonder
where the option for no rear fog light is (as is the case in the USA), it's under a different entry
"KALTUEBERWACHUNG_NSL" (cold monitoring rear fog lights) and has for settings "aktiv" (on) and "nicht_aktiv"
(off).
That's all very nice, but the process for determining the possible values is very time consuming and prone to errors.
Since I wanted to know what's going on in all modules, I was facing a huge amount of work. So I decided to
automate the process.
NCS Dummy
I wrote an application that parses the NCS Expert data files and trace files and automatically retrieves all possible
values. Since this literally takes the expert out of NCS Expert, I called the application NCS Dummy:
NCS Dummy is Windows only (sorry no support for Linux and MacOS). The application is written in C# and requires
the Microsoft .NET Framework 3.5 (or later) installed on your computer which is probably already the case.
The current release is version 0.2.0.9 and supports following BMW chassis: E31, E32, E34, E36, E38, E39, E46 and
E86. If anyone requires another chassis, let me know. It's easy to add support for other chassis, but I didn't have any
use for a chassis younger than the E46 - the E85 was added on request.
NCS Dummy has a straightforward user interface, but to avoid confusion here's a short overview of the terminology
used by NCS Dummy:
Parameter name: The name of a programmable item, for example "KALTUEBERWACHUNG_NSL". Field
keyword (FSW) in NCS Expert.
679614733.007.png
Parameter value: The value of a parameter name, for example "aktiv". Parameter keyword (PSW) in NCS
Expert.
Module parameter: The combination of a parameter name and all its possible values, for example
parameter name "KALTUEBERWACHUNG_NSL" with parameter values "aktiv" and "nicht_aktiv". The
module parameters give an overview of all programmable items in a module and their possible settings.
Very informative to find out what's going on in certain modules.
Trace parameter: The same as a module parameter but with indication of which parameter value is selected
on your car. This information is retrieved from the NCS Expert FSW/PSW trace file. Module parameters that
are not in the trace file are filtered out. The trace parameters show the exact coding possibilities of your
own specific module and are useful for creating a manual NCS Expert trace file to recode the module with.
Trace file differences: Compares two NCS Expert FSW/PSW trace files and shows only the differences.
Useful to quickly find coding differences between two different vehicles.
Just to clarify: NCS Dummy only parses NCS Expert data files and trace files. It doesn't actually use NCS Expert, it
doesn't connect to the car and it doesn't make changes to any file. In other words, it's safe to use. If you are
interested in finding out what coding functionality for example the EKM module offers, you can safely export its
module parameters to a human readable text file with NCS Dummy. NCS Dummy only requires the NCS Expert data
files to build the relations between parameter names and values. You don't even have to run NCS Expert to create a
FSW/PSW trace file. Of course, if you wish to code modules, you'll have to use NCS Expert.
There are three practical scenarios of use for NCS Dummy:
Module Parameters: Find out what coding functionality a module offers. NCS Dummy shows all parameter
names and their possible values.
Trace File Differences: Compare two NCS Expert FSW/PSW trace files to see the differences (requires NCS
Expert to read the trace files from the car).
Trace Parameters: Same as the module parameters, but this time for the specific module in your car
(requires NCS Expert to read the trace file from the car). You get a nice overview of the currently set values
and the other possible values. This makes updating the trace file to recode the module with NCS Expert a
breeze.
Module parameters
Start NCS Dummy, if necessary change the path to the NCS Expert installation folder, select the chassis (E31) and
select the module you wish to view (for example "LKM2.C25" for the LKM module). Then click the "Export Module
Parameters" button to save the information to a text file (NCS Dummy doesn't contain a viewer). Open the exported
text file in a plain text editor - preferably with monospaced font - to see it contents. Here's the example output of
the LKM module:
Code:
Generated with NCS Dummy version 0.2.0.8 — copyright © 2010 revtor software
Output : Module Parameters
Chassis : E31
Module : LKM2.C25
PARAMETER NAME
PARAMETER VALUE
KALTUEBERWACHUNG
nsl_li_re
nsl_li
FEHLER_3.BREMSLEUCHTE
nicht_melden
melden
NSW_BEI_ABBLENDLICHT
679614733.001.png
aktiv
nicht_aktiv
KALTUEBERWACHUNG_NSW
nicht_aktiv
aktiv
KALTUEBERWACHUNG_NSL
nicht_aktiv
aktiv
NSW_BEI_FL/LH
aktiv
nicht_aktiv
FL/LH_BEI_KSW_OFFEN
aktiv
nicht_aktiv
KSW_FEHLERMELDUNG
nicht_aktiv
aktiv
With only 8 parameters the LKM module isn't very impressive of course. The General Module (GMII.C25) or the
EKM (EKM.C?? - there are different revisions of this module) contain more parameters, often with not just
"aktiv" and "nicht_aktiv" values which gives a much better impression of the program's possibilities.
The real power of the program becomes apparant on cars with lots of programmable modules and parameters
like the E36 and especially starting from the E38 and up. The E31 8 Series are somewhat like an electronic
dinosaur. There's only a limited amount of programmable modules and those usually contain only a limited set
of parameters. Those who had hoped for a massive amount of hidden coding functionality in the E31 will be
disappointed. For example, some had hoped the E31 LKM could be recoded to disable the hot/cold monitoring
on certain lights to install xenon or LED lights without the need for the stupid resistors to keep the LKM from
reporting lamp failures. It doesn't offer all that. The E38 LKM module for example can have hot and/or cold
monitoring enabled or disabled for each individual light in the car. Very impressive. Realistically put, the use of
NCS Dummy for the E31 is rather limited. It's great to learn more about what's going on in certain modules, but
for recoding only a handfull of options will prove to be interesting - mostly for retrofitters. One thing that comes
to mind is changing a USA spec LKM to ECE spec behaviour, without the need of installing rear fog lights as is
necessary when changing the region through the ZCS.
Trace File Differences
Start NCS Dummy and load two NCS Expert FSW/PSW trace files (reading a trace file with NCS Expert is
discussed further down). Click the "Export Trace File Differences" button to save the differences to a text file.
This is useful if you want to compare the coding differences between two different vehicles. For example, if you
want to figure out what differences the ZCS region change really does. Below is the example output for the
General Module of my E31 and one of Reinhard's cars. As you can see, the only difference is the headlight
washer system that is not installed on Reinhard's car (and hence also disabled in the module's coding).
Code:
Generated with NCS Dummy version 0.2.0.8 — copyright © 2010 revtor software
Output : Traces
Trace file 1 : "C:\EDIABAS\NCSEXPER\WORK\revtor\E31.GMII.FSW_PSW.TRC"
Trace file 2 : "C:\EDIABAS\NCSEXPER\WORK\reinhard\gm2_FSW_PSW.TRC"
1 2 PARAMETER NAME
PARAMETER VALUE
* * SCHEINWERFERREINIGUNG
679614733.002.png 679614733.003.png
Zgłoś jeśli naruszono regulamin