Advertising:

Main Page: Difference between revisions

From MS4X Wiki
No edit summary
(37 intermediate revisions by the same user not shown)
Line 1: Line 1:
<div style="float:right;">__TOC__</div>
'''Welcome to the MS4X Wiki'''


=Getting Started=
Thanks to the massive community around the Siemens MS4 ECU generations this wiki is growing very fast.


==VERY IMPORTANT==
Because of gaining more and more content, we had to start seperation of the ECU specific topics and keep common things together.


It is absolutely crucial before starting to mess with the DME, that you '''need''' to understand the importance of having the correct softwareversion!
This means we seperate topics like flashing tools, tuning programs, bootmode activivation, etc. which are the same for all ECU models into own pages.


Softwareversion is a term which describes how old the software on a praticular DME is. The easiest analogy would be to use terms from the computer industry:
So don't be confused when common topics disappear out of the huge ECU pages and look for cross references. In addition to that we create a table of content right here below.


The MS42 could be compared with Windows XP, whereas MS43 would be Windows 7. Both have a unique platform, but have had updates in the past.
These updates, called service packs, can be described as the softwareversion of the DME. We´ve been starting with basic Windows 7 (MS430037) and got the first service pack (MS430055). It still had errors so the second service pack (MS430056) was rolled out.
At MS43, there have been the following softwareversions:


'''General:'''


{| class="wikitable"
[[First steps and requirements]]
!colspan="4"|Softwareversions
|-
| MS430007
| MS430019
| MS430036
| '''MS430056'''
|-
| MS430009
| MS430021
| MS430037
| MS430064
|-
| MS430010
| MS430022
| MS430050
| MS430066
|-
| MS430012
| MS430024
| MS430051
| MS430069
|-
| MS430014
| MS430030
| MS430053
| MS430070
|-
| MS430015
| MS430032
| MS430054
|
|-
| MS430018
| MS430034
| MS430055
|
|}


[[How to connect]]




The very important part now is, each softwareversion got a new feature (whatever that feature might be is not important!). Every new feature means that there needs to be changes done in the code to implement them. Every change in the code also means that the maps in the tune need a new layout/position.
'''ECU:'''
So keep in mind, a definition file (.xdf/Damos/A2L) is written for a very specific softwareversion! If you load a flash file with e.g. MS430066 into TunerPro and use the definition file from MS430056, it´ll get really messy! If you are seeing strange values double check that you are using the correct version!


'''AVOID USING DIFFERENT SOFTWAREVERSION'''
[[Siemens MS42]]


If your DME is MS430066, you need to find a XDF/Damos/A2L file for that particular version!
[[Siemens MS43]]


'''NEVER EVER FLASH A TUNE FROM A DIFFERENT SOFTWAREVERSION ON YOUR ECU OR IT WILL BE BRICKED!'''
[[Siemens MS45]]


Even using MS430055 tune in TunerPro with an XDF for MS430056 will result in a mess!


[[File:Old_Wrong_Version_XDF_Error.png |300px|thumb|none|v55 .BIN loaded with v56 .XDF]]
'''Downloads:'''


==Software & Tools==
[[Flashing Tools]]
Before rushing into the tuning thing, make sure that all of your tools are working properly and you fully understand the following sentences.


The Siemens MS43 flashchip contains two different sections:
[[Tuning Tools]]


#0x00000 - 0x6FFFF (448 KByte)
[[Definition Files]]
#*This is ECUs program space, special features (EWS or checksum deletes, Launch Control, etc.) are programmed here
#0x70000 - 0x7FFFF (64 KByte)
#*This is the parameter space, where most of the functions in the ECU program lookup their corresponding values


Together these sections sum up for 512 KBytes total. So when you hear someone talking about the "512k file" or "full read", the whole flash content is meant.
[[Original Files]]


Most of the regular tuning stuff can be done inside the parameter space, or often called "partial read".
[[Modified Files]]


So as long as you only want to raise your limiters, change injection or ignition tables, etc. you're fine with the smaller file. This reduces your flashing time as well.


Nevertheless, there are some special functions that require massive code rewritings in the program space, where a full write is nessessary.
'''Aftermarket upgrades:'''


Software collection with some goodies [https://drive.google.com/open?id=0BybpM7kNcnD5flA0QVdhbEpNbEpabENEbGhBZkVZZWpwT09kVDFMazEzMDhDSWVPRzFPTEU Google Drive]
[[Daniel_F. Special Functions]]


===Flashing Software===
[[Forced Induction Upgrades]]
The tools mentioned in this paragraph are responsible for communicating with the flashchip on the MS43, where the ECU data is stored.


'''The ISN area is only written in bootmode, regardless of which software used.'''
[[Fuel Injector Deadtimes]]
 
*'''JMGarage Flasher'''
**Bootmode required (open the ECU and ground a pin)
**No checksum correction
**Only 512 KByte read/write
**Download old version: [[File:JMGarageFlasher_.rar]]
**Download new version: [[File:JMFlasher.zip]]
 
*'''Galletto 1260'''
**Only ignition on needed
**No checksum correction
**Only 64 KByte read/write
**Download from [https://drive.google.com/open?id=0BybpM7kNcnD5flA0QVdhbEpNbEpabENEbGhBZkVZZWpwT09kVDFMazEzMDhDSWVPRzFPTEU Google Drive]
 
*'''Siemens MSS5x Flasher (Credits belong to Kim Freding)'''
**Only ignition on needed
**On-the-fly checksum correction before flashing
**64 KByte read/write
**512 KByte read/write
**Download V1.1.2.2: [[File:Siemens_Flash_Tool_v1.1.2.2.zip]]
**To receive a registration key send your hardware-id and e46fanatics or RomRaider username to ms43wiki@gmail.com
 
===Tuning Software===
The tuning software is not required, as you can make all the changes to the file with a HEX editor as well, but then you propably wouldn't need this wiki ;)
 
There are several tools, that'll make messing with the ECUs tables and values much easier and help a lot with a built in visualization engine.
 
Again, there are more than the two programs listed below, but people using WinOLS or even a HEX Editor don't need this guide.
 
These programs are relativly dumb, as they rely on so called "definition files". A definition file is unique for every software version, as stated in the beginning.
 
A definition file describes every value and table of the ECU (at least in the best case) with its HEX location in the flashfile, a conversion factor and its upper and lower limits.
 
In addition to that, there are logging definitions, that help you to log all the values for tuning or troubleshooting. Romraider has some nice wideband o2 sensor plugins!
 
#[http://www.tunerpro.net/downloadApp.htm TunerPro]
#*[https://drive.google.com/folderview?id=0BybpM7kNcnD5flA0QVdhbEpNbEpabENEbGhBZkVZZWpwT09kVDFMazEzMDhDSWVPRzFPTEU&usp=sharing Latest TunerPro definition file for MS430056 (.xdf)]
#*[http://www.tunerpro.net/downloadBinDefs.htm#BMW Incomplete TunerPro definition files for other softwareversions (.xdf)]
#*[http://forum.e46fanatics.com/showpost.php?p=17197443&postcount=2940 TunerPro logging file (.adx)]
#[http://www.romraider.com/RomRaider/Download RomRaider]
#*[http://www.romraider.com/forum/viewtopic.php?f=43&t=12575 Latest RomRaider definition file for MS430056 (.xml)]
#*[http://www.romraider.com/forum/viewtopic.php?t=1642 RomRaider Logging file (.xml)]
 
Other datalogging software could be
*BMWLogger [http://bimmersoftware.com/bmwlogger BimmerSoftware]
*Testo [http://www.bimmerforums.com/forum/showthread.php?1830510-Diagnostic-program-with-realtime-graph-view BFC thread with download]
 
===Checksum correction===
Modifying data in any of the two files will invalidate the internal checksum values. These will need to be updated or your car wont start. [[#Flashing_utilities]]
 
You can solve this with ether correcting them before flashing the modified file, or flash the 512 KByte file from Daniel, where the Checksum CHK5 is disabled.
 
Be careful, checksum CHK4 is still enabled in that file, so editing _mon_ values is not possible without verifying CHK4.
 
*Ultimo checksum corrector [[File:Checksum corrector.zip]]
 
==Connecting to the MS43==
You need some way to read and write files to the ECU. In order to do a full write, the ECU will need to be placed into Bootmode or you use the MSS5x Flasher and a INPA / K-Line capable USB to OBD2 adapter.
 
BootMode can be achieved by removing the ECUs enclosure and grounding pin 24 of the 29F400 chip for approximately 6 seconds on startup: [[Bench connection How To]]
 
Link to Youtube which explains what to do: https://www.youtube.com/watch?v=BFwdIiqxtbk
 
Some cheap china INPA cables don't work without modifying them. You have to short Pin 7&8 of the OBD2 plug from your cable to get them working correctly.
 
===K-Line connections===
 
You will need the following connections to properly power up the DME while on the bench.
 
There are several different wirings to use, but we have found that this is the least amount of wires needed for a properly working setup:
 
<gallery mode="packed">
File:BMW MS 42.jpg|K-Line pinout for MS43
File:ms43_safer.jpg|Alternative (safer) K-Line connection
File:Connection.jpg|OBD-II connection diagram
</gallery>
 
===CAN-Bus connections===
 
There are two different CAN bus interfaces on the MS43, one for the TCU located on plug X60002, and one for all other modules like ABS, ASC/DSC, instrument cluster, steering angle sensor located on plug X60004.
 
[[File:MS43_CAN_BUS.png|600px|thumb|center|MS43 CAN-Bus connections]]
 
=Terminology=
The acronyms are Siemens mapnames from the Funktionsbeschreibung.
 
The following list contains a selection of the most used terms. It's crucial to understand at least the major engine states like _is_, _pl_ and _fl_ to make sense out of the cryptical naming of the maps.
 
[[File:Abbreviations.pdf]]
 
{| class="wikitable mw-collapsible mw-collapsed" style="text-align:left;"
! Enginestate
! Description
|-
|as
|after start
|-
|cs
|cold start
|-
|es
|engine stopped
|-
|fl
|full load
|-
|is
|idle speed
|-
|pl
|part load
|-
|pu
|trailing throttle
|-
|puc
|trailing throttle fuel cut-off
|-
|r
|restart
|-
|st
|start
|}
 
=Fueling=
==Fuel Injection Maps==
The injection maps are based on "engine load (mg/stroke) vs. engine speed (rpm)" and the lookup is injection time in milliseconds.
 
The lambda sensors for closed loop operation are narrowband. Fuel trim learning only happens during closed loop operation, but the learned fuel trims do affect full throttle fueling as well.
 
When there is no VANOS fault, the engine interpolates between "Injection time at part-load, cold engine, Vanos I/II" and "Injection time at part-load, warm engine, Vanos I/II", where the numbers I or II indicate the two banks of the straight six engine.
 
Under VANOS fault conditions, the map "Basic Injection Time (ip_tib)" is used.
 
"Full load enrichment (ip_ti_fl)" is a multiplier of the part load calculations and added to them.
 
Blending between cold and warm injection maps is done by weighting factor "ip_fac_pl_ivvt__tco__tco_st" for partload and "ip_fac_is_ivvt__tco__tco_st" for idlespeed
 
==Non Stock Injector Maps==
Changing the fuel injectors may be needed when charging your engine and therefore some constants and maps need to be tweaked.
 
You will have to calculate the difference in percentage of volume flow between stock and your new injectors.
 
The following scalars need to be adjusted accordingly:
 
*T_TI_AS_[0-5]
*c_ti_min_iv
 
Depending on the injectors you will have to finetune the injector latency compensation (injector dead times) as well:
*ip_ti_add_dly__vb
 
If you happen to have stuttering or unclean combustion when stepping on the gas, rescale the cylinder rewetting tables as well:
 
*ip_ti_fast_wf_thd_min__tco
*ip_ti_slow_wf_thd_min__tco
 
 
==Upgraded fuel pumps==
Under some circumstances, like going forced induction, the OEM fuel pump can't deliver enough fuel to the engine and needs to be upgraded.
 
Most aftermarket fuelpumps like the Walbros or Deatschwerks don't have a check valve inside and the fuel flows back into the tank once the vehicle is turned off.
 
The MS43 has two time values (in seconds) for controlling the fuelpump before starting and after stopping the engine:
 
*C_T_EFP_PREV: Time the electronic fuel pump relais is on after ignition key ON
*C_T_EFP: Time delay to shut off the electric fuel pump relay after ignition key OFF
 
Slightly rising these values may eliminate starting issues.
 
=Timing=
==Basic Timing Maps==
The MS43 uses several ignition maps depending on the engine state and quality of fuel used. Like the injection maps, they are also based on "engine load (mg/stroke) vs. engine speed (rpm)" but obviously the lookup is ignition timing in degrees BTDC (before top dead center).
 
"Ignition at part-load, RON98 (16x20) Airflow -vs- Engine speed" is the main table used with a healthy engine (so no VANOS fault codes, normal warmed up operating temperature) running RON98/PON93 gasoline.
 
There is a knock based interpolation between the RON91 and RON98 RON tables. The other tables should be kept safe.
 
"Ignition at part-load, cold engine (16x20) Airflow -vs- Engine speed" is used on a cold engine, and blended/interpolated towards "Ignition at part-load, RON98 (16x20) Airflow -vs- Engine speed" during warm up.
 
Catalyst heating "_CH_" in maps retards ignition during warm up.
 
Antijerk "_AJ_" retards ignition during rapid throttle opening to smooth out torque (can be removed by increasing c_tco_min_aj to 142.5C. Reported to sometimes cause transitional knock on boosted engines, if so consider adjusting other tables designed for this (tra_knk).
 
Experience on standard or near standard European 330ci in cool climate and with 99 RON fuel suggested sporadic pulling of timing here and there up to a few degrees is common, but rarely sufficient even in hard track use to produce more than 1 degree of learned ignition retard from the 98 RON base map. Shows the RON98 map on a standard car is quite good. Question if fueling could be richened to allow more ignition timing and torque/power.
 
==Exhaust Popping Modifications==
 
'''Exhaust pop with deactivated A/C'''
 
The current solution for exhaust pop/crackle is to supress overrun fuelcut detection from the ecu. This is accomplished by raising the rpm threshold.
 
As this engine state can be set differently when A/C is turned on and off, you can switch between both states by operating the A/C.
 
The following maps need to be tweaked.
Note: The screenshot actually shows the values to have crackle/pop when A/C is '''off'''
 
[[File:TP_PUCpop.jpg|300px|thumb|none|TunerPro depiction of overrun fuelcut mod]]
 
Using these settings B25 engine users have reported throttle hang, poor idling, and decreased performance. Test these settings at your own responsibility.
 
'''Timer configurable exhaust pops'''
 
Thanks to erom9171 for butchering this out!
 
Its now possible to tweak a timer that will let the engine pop for a given time. After this timer is zero, the engine will go back into overrun-fuelcut. So it's pretty easy to have 2 or 3 pretty loud pops followed by "silence".
 
The following screenshot is an example for the values at M54B30 which give 3 loud pops.
 
[[File:M54B30 MS430056 ExhaustPop-timer.jpg|300px|thumb|none|TunerPro depiction of timered overrun fuelcut mod]]
 
For anyone wanting the best of both worlds:
 
[[File:M54B30 MS430056 ExhaustPop-timer PUCpopACoff.jpg|300px|thumb|none|TunerPro depiction of combined overrun fuelcut mod]]
 
=Vanos=
This section contains information on how the dual vanos system is actuated by the DME and how to modify it. Both, intake and exhaust, camshaft can be set independently in relation to the crankshaft.
 
The aim of that system is to optimize emission, produce better torque at low engine speeds and have better top end power.
 
The system uses engine oil to pressurize a set of gears at the end of each camshaft.
 
Even though the variation of °crk is pretty limited, it can be used to compensate for different intakes, different camshafts and even turbo application may be benefitting from perfectly tweaked camshafts.
 
==Basic Vanos Maps==
 
The main maps used for '''intake''' camshaft are:
 
'''cold engine'''
*ip_cam_sp_tco_1_in_is__n__maf_iv(vt)
*ip_cam_sp_tco_1_in_pl__n__maf_iv(vt)
*ip_cam_sp_tco_1_in_fl__n
 
'''warm engine'''
*ip_cam_sp_tco_2_in_is__n__maf_iv
*ip_cam_sp_tco_2_in_pl__n__maf_iv
*ip_cam_sp_tco_2_in_fl__n
 
 
The main maps used for '''exhaust''' camshaft are:
 
'''cold engine'''
*ip_cam_sp_tco_1_ex_is__n__maf_iv(vt)
*ip_cam_sp_tco_1_ex_pl__n__maf_iv(vt)
*ip_cam_sp_tco_1_ex_fl__n
 
'''warm engine'''
*ip_cam_sp_tco_2_ex_is__n__maf_iv
*ip_cam_sp_tco_2_ex_pl__n__maf_iv
*ip_cam_sp_tco_2_ex_fl__n
 
Blending between cold engine and warm engine is done by:
 
'''idlespeed'''
ip_fac_cam_sp_in_is__tco__tco_st
ip_fac_cam_sp_ex_is__tco__tco_st
 
'''partload'''
ip_fac_cam_sp_in_pl__tco__tco_st
ip_fac_cam_sp_ex_pl__tco__tco_st
 
==VANOS Tweak==
 
Insert the following tables into the desired part-load map where you need the effect ( part-load cold / part-load warm / both).
'''*ATTENTION: Only Suitable for M54B30*'''
 
''Credits to e46fanatics.com member DoCR''
 
[[File:vanos_tweak.jpg|frame|left|Map visualisation in TunerPro]]
 
 
{| class="wikitable"
|+ VANOS Tweak maps in table form for copy and pasting into TunerPro
! Intake cam setpoint part-load !! Exhaust cam setpoint part-load
|-
|
{| class="wikitable" border="1" style="width: 450pt; margin: auto; border-collapse:collapse; text-align:right;"
| 126.00 || 126.00 || 125.63 || 124.88 || 123.00 || 118.88 || 113.25 || 106.50 || 105.00 || 104.25 || 108.00 || 108.00
|-
| 126.00 || 126.00 || 125.25 || 124.50 || 122.63 || 118.50 || 112.88 || 106.50 || 105.00 || 104.25 || 105.00 || 105.00
|-
| 126.00 || 125.63 || 124.88 || 124.13 || 122.25 || 118.13 || 112.50 || 105.75 || 104.25 || 103.50 || 100.13 || 100.13
|-
| 125.63 || 124.88 || 123.75 || 122.63 || 120.38 || 115.88 || 110.25 || 103.88 || 99.75 || 98.63 || 91.50 || 91.50
|-
| 125.25 || 124.50 || 123.38 || 121.88 || 119.25 || 114.75 || 109.50 || 102.75 || 98.63 || 97.50 || 90.75 || 90.75
|-
| 124.50 || 123.38 || 122.25 || 120.38 || 117.38 || 112.50 || 107.25 || 101.25 || 97.50 || 96.75 || 90.75 || 90.75
|-
| 123.38 || 122.25 || 120.75 || 118.88 || 114.38 || 107.63 || 102.00 || 98.25 || 97.13 || 96.38 || 90.38 || 90.38
|-
| 122.63 || 121.13 || 120.00 || 117.75 || 112.13 || 103.50 || 99.38 || 97.50 || 96.75 || 96.38 || 91.50 || 91.50
|-
| 115.50 || 113.63 || 111.75 || 109.50 || 104.25 || 93.75 || 99.38 || 98.25 || 94.50 || 94.13 || 94.13 || 94.13
|-
| 113.25 || 111.75 || 110.25 || 107.25 || 100.50 || 91.88 || 100.88 || 99.75 || 94.88 || 94.50 || 94.50 || 94.50
|-
| 112.13 || 110.25 || 108.00 || 104.63 || 94.50 || 90.38 || 101.25 || 100.50 || 97.50 || 97.50 || 97.50 || 97.50
|-
| 110.63 || 105.38 || 99.75 || 95.25 || 89.63 || 90.75 || 105.75 || 105.00 || 101.63 || 100.50 || 100.50 || 100.50
|-
| 109.88 || 104.25 || 97.50 || 92.25 || 109.50 || 110.25 || 109.50 || 110.25 || 108.75 || 108.75 || 108.75 || 108.75
|-
| 108.75 || 103.88 || 99.38 || 94.88 || 115.50 || 118.13 || 118.13 || 118.13 || 117.75 || 117.75 || 117.75 || 117.75
|-
| 108.38 || 106.50 || 104.25 || 101.25 || 118.50 || 126.00 || 126.00 || 126.00 || 126.00 || 126.00 || 122.25 || 122.25
|-
| 108.38 || 108.75 || 108.00 || 106.50 || 122.25 || 126.00 || 126.00 || 126.00 || 126.00 || 126.00 || 126.00 || 126.00
|}
|
{|class="wikitable" border="1" style="width: 450pt; margin: auto; border-collapse:collapse; text-align:right;"
| -105.0 || -105.0 || -105.0 || -104.6 || -103.1 || -97.5 || -96.0 || -96.8 || -98.3 || -104.3 || -99.0 || -99.0
|-
| -105.0 || -104.6 || -103.9 || -102.0 || -99.0 || -96.0 || -95.3 || -96.4 || -97.9 || -103.9 || -98.6 || -98.6
|-
| -104.6 || -103.9 || -100.9 || -97.5 || -93.8 || -92.6 || -93.4 || -94.9 || -96.4 || -101.6 || -97.5 || -97.5
|-
| -103.9 || -102.4 || -96.4 || -92.6 || -88.9 || -88.1 || -90.0 || -91.5 || -93.8 || -97.1 || -91.9 || -91.9
|-
| -103.1 || -101.6 || -94.9 || -91.1 || -87.4 || -86.6 || -88.5 || -90.4 || -92.6 || -96.0 || -90.8 || -90.8
|-
| -100.9 || -98.6 || -90.4 || -87.0 || -85.9 || -85.1 || -85.9 || -88.5 || -91.1 || -95.6 || -90.4 || -90.4
|-
| -99.0 || -96.4 || -88.5 || -85.9 || -85.1 || -84.8 || -85.5 || -88.9 || -94.1 || -97.5 || -95.3 || -95.3
|-
| -97.9 || -95.3 || -87.8 || -85.9 || -85.1 || -85.1 || -85.9 || -91.9 || -97.5 || -100.9 || -99.0 || -99.0
|-
| -96.8 || -94.5 || -88.5 || -86.6 || -85.9 || -96.0 || -95.6 || -95.6 || -95.6 || -95.6 || -95.6 || -97.5
|-
| -95.6 || -94.1 || -91.1 || -88.5 || -88.5 || -99.8 || -101.6 || -101.6 || -101.6 || -101.6 || -100.5 || -101.3
|-
| -95.3 || -93.8 || -91.9 || -90.4 || -90.4 || -101.3 || -102.0 || -102.0 || -102.0 || -102.0 || -100.9 || -101.6
|-
| -93.8 || -93.0 || -92.3 || -92.3 || -94.5 || -102.4 || -101.3 || -101.3 || -101.3 || -101.3 || -100.1 || -101.3
|-
| -91.9 || -91.5 || -91.9 || -92.3 || -95.3 || -105.8 || -106.1 || -106.1 || -106.1 || -106.1 || -105.0 || -102.8
|-
| -87.8 || -88.5 || -89.6 || -91.1 || -94.9 || -106.1 || -106.1 || -106.1 || -106.1 || -106.1 || -105.0 || -103.1
|-
| -85.5 || -87.0 || -88.5 || -90.0 || -93.8 || -106.1 || -106.1 || -106.1 || -106.1 || -106.1 || -105.0 || -103.1
|-
| -84.0 || -85.9 || -87.4 || -88.9 || -93.0 || -106.1 || -106.1 || -106.1 || -106.1 || -106.1 || -105.0 || -103.1
|}
|}
 
=DTC Suppression=
DTCs can be suppressed in the MS43 by zeroing out the c_abc_... specific codes.  The full list of DTCs can be found here:
 
{| class="wikitable mw-collapsible mw-collapsed"
!rowspan="2"|DTC variables
!colspan="2"|OBD
|-
!Code
!Description
|-
|rowspan=1|c_dtc_ad_mec_ref_ivvt_ex
|P0014
|B Camshaft Position - Timing Over-Advanced or System Performance (Bank 1)
|-
|rowspan=1|c_dtc_ad_mec_ref_ivvt_in
|P0011
|A Camshaft Position - Timing Over-Advanced or System Performance (Bank 1)
|-
|rowspan=2|c_dtc_amp
|P0107
|Manifold Absolute Pressure/Barometric Pressure Circuit Low Input
|-
|P0108
|Manifold Absolute Pressure/Barometric Pressure Circuit High Input
|-
|rowspan=1|c_dtc_bls_plaus
|P0571
|Cruise Control/Brake Switch A Circuit Malfunction
|-
|rowspan=2|c_dtc_cam
|P0340
|Camshaft Position Sensor Circuit Malfunction
|-
|P0344
|Camshaft Position Sensor Circuit Intermittent
|-
|rowspan=2|c_dtc_cam_ex
|P0365
|Camshaft Position Sensor 'B' Circuit Bank 1
|-
|P0369
|Camshaft Position Sensor 'B' Circuit Intermittent Bank 1
|-
|rowspan=3|c_dtc_cam_ex_ivvt
|P1529
|"B" Camshaft Position Actuator Control Circuit Signal Low Bank 1
|-
|P1530
|"B" Camshaft Position Actuator Control Circuit Signal High Bank 1
|-
|P1531
|"B" Camshaft Position Actuator Control Open Circuit Bank 1
|-
|rowspan=3|c_dtc_cam_in_ivvt
|P1523
|"A" Camshaft Position Actuator Signal Low Bank 1
|-
|P1524
|"A" Camshaft Position Actuator Signal High Bank 1
|-
|P1525
|"A" Camshaft Position Actuator Control Open Circuit Bank 1
|-
|rowspan=1|c_dtc_can_boff
|P1610
|CANbus offline
|-
|rowspan=1|c_dtc_cat_diag_1
|P0420
|Catalyst System Efficiency Below Threshold (Bank 1)
|-
|rowspan=1|c_dtc_cat_diag_2
|P0430
|Catalyst System Efficiency Below Threshold (Bank 2)
|-
|rowspan=1|c_dtc_cat_eff_1
|P0421
|Warm Up Catalyst Efficiency Below Threshold (Bank 1)
|-
|rowspan=1|c_dtc_cat_eff_2
|P0431
|Warm Up Catalyst Efficiency Below Threshold (Bank 2)
|-
|rowspan=1|c_dtc_cc
|-
|rowspan=3|c_dtc_cps
|P0443
|Evaporative Emission Control System Purge Control Valve Circuit Malfunction
|-
|P0444
|Evaporative Emission Control System Purge Control Valve Circuit Open
|-
|P0445
|Evaporative Emission Control System Purge Control Valve Circuit Shorted
|-
|rowspan=2|c_dtc_crk
|P0335
|Crankshaft Position Sensor A Circuit Malfunction
|-
|P0339
|Crankshaft Position Sensor A Circuit Intermittent
|-
|rowspan=1|c_dtc_cs
|P0xxx
|Clutch Switch
|-
|rowspan=1|c_dtc_ct
|-
|rowspan=1|c_dtc_ctoc
|-
|rowspan=1|c_dtc_diagcps
|P0441
|Evaporative Emission Control System Incorrect Purge Flow
|-
|rowspan=3|c_dtc_dmtl
|P1444
|Diagnostic Module Tank Leakage (DM-TL) Pump Control Open Circuit
|-
|P1445
|Diagnostic Module Tank Leakage (DM-TL) Pump Control Circuit Signal Low
|-
|P1446
|Diagnostic Module Tank Leakage (DM-TL) Pump Control Circuit Signal High
|-
|rowspan=2|c_dtc_dmtl_leak
|P0455
|Evaporative Emission Control System Leak Detected (gross leak)
|-
|P0456
|EVAP Leak Monitor Small Leak Detected
|-
|rowspan=3|c_dtc_dmtlm
|P1447
|Diagnostic Module Tank Leakage (DM-TL) Pump Too High During Switching
|-
|P1448
|Diagnostic Module Tank Leakage (DM-TL) Pump Too Low During Switching
|-
|P1449
|Diagnostic Module Tank Leakage (DM-TL) Pump Too High
|-
|rowspan=1|c_dtc_ecf
|P0480
|Cooling Fan 1 Control Circuit Malfunction
|-
|rowspan=2|c_dtc_ect
|P1619
|MAP Cooling Control Circuit Signal Low
|-
|P1620
|MAP Cooling Control Circuit Signal High
|-
|rowspan=1|c_dtc_ect_mec
|P0128
|Range/Performance Problem In Thermostat
|-
|rowspan=1|c_dtc_ecu
|P0604
|Internal Control Module Random Access Memory (RAM) Error
|-
|rowspan=2|c_dtc_ef
|P0477
|Exhaust Pressure Control Valve Low
|-
|P0478
|Exhaust Pressure Control Valve High
|-
|rowspan=1|c_dtc_er_ad
|P0xxx
|Misfire adaptation
|-
|rowspan=2|c_dtc_igcfb_0
|P0351
|Ignition Coil 1 Primary/Secondary Circuit Malfunction
|-
|P1301
|Misfiring Cylinder 1
|-
|rowspan=2|c_dtc_igcfb_1
|P0355
|Ignition Coil 5 Primary/Secondary Circuit Malfunction
|-
|P1305
|Misfiring Cylinder 5
|-
|rowspan=2|c_dtc_igcfb_2
|P0353
|Ignition Coil 3 Primary/Secondary Circuit Malfunction
|-
|P1303
|Misfiring Cylinder 3
|-
|rowspan=2|c_dtc_igcfb_3
|P0356
|Ignition Coil 6 Primary/Secondary Circuit Malfunction
|-
|P1306
|Misfiring Cylinder 6
|-
|rowspan=2|c_dtc_igcfb_4
|P0352
|Ignition Coil 2 Primary/Secondary Circuit Malfunction
|-
|P1302
|Misfiring Cylinder 2
|-
|rowspan=2|c_dtc_igcfb_5
|P0354
|Ignition Coil 4 Primary/Secondary Circuit Malfunction
|-
|P1304
|Misfiring Cylinder 4
|-
|rowspan=2|c_dtc_imob
|P1660
|EWS system
|-
|P1666
|EWS system
|-
|rowspan=1|c_dtc_is
|P0505
|Idle Control System Malfunction
|-
|rowspan=3|c_dtc_isa_1
|P1506
|Idle Speed Control Valve Open Solenoid Control Circuit Signal High
|-
|P1507
|Idle Speed Control Valve Open Solenoid Control Circuit Signal Low
|-
|P1508
|Idle Speed Control Valve Opening Solenoid Control Open Circuit
|-
|rowspan=3|c_dtc_isa_2
|P1502
|Idle Speed Control Valve Closing Solenoid Control Circuit Signal High or Low
|-
|P1503
|Idle Speed Control Valve Closing Solenoid Control Circuit Signal Low
|-
|P1504
|Idle Speed Control Valve Closing Solenoid Control Open Circuit
|-
|rowspan=3|c_dtc_iv_0
|P0201
|Injector Circuit Malfunction - Cylinder 1
|-
|P0261
|Cylinder 1 Injector Circuit Low
|-
|P0262
|Cylinder 1 Injector Circuit High
|-
|rowspan=3|c_dtc_iv_1
|P0205
|Injector Circuit Malfunction - Cylinder 5
|-
|P0273
|Cylinder 5 Injector Circuit Low
|-
|P0274
|Cylinder 5 Injector Circuit High
|-
|rowspan=3|c_dtc_iv_2
|P0203
|Injector Circuit Malfunction - Cylinder 3
|-
|P0267
|Cylinder 3 Injector Circuit Low
|-
|P0268
|Cylinder 3 Injector Circuit High
|-
|rowspan=3|c_dtc_iv_3
|P0206
|Injector Circuit Malfunction - Cylinder 6
|-
|P0276
|Cylinder 6 Injector Circuit Low
|-
|P0277
|Cylinder 6 Injector Circuit High
|-
|rowspan=3|c_dtc_iv_4
|P0202
|Injector Circuit Malfunction - Cylinder 2
|-
|P0264
|Cylinder 2 Injector Circuit Low
|-
|P0265
|Cylinder 2 Injector Circuit High
|-
|rowspan=3|c_dtc_iv_5
|P0204
|Injector Circuit Malfunction - Cylinder 4
|-
|P0270
|Cylinder 4 Injector Circuit Low
|-
|P0271
|Cylinder 4 Injector Circuit High
|-
|rowspan=1|c_dtc_knk_1
|P0327
|Knock Sensor 1 Circuit Low Input (Bank 1 or Single Sensor)
|-
|rowspan=1|c_dtc_knk_2
|P0332
|Knock Sensor 2 Circuit Low Input (Bank 2)
|-
|rowspan=2|c_dtc_lam_dly_down_1
|P0096
|Intake Air Temperature Sensor 2 Circuit Range/Performance
|-
|P0097
|Intake Air Temperature Sensor 2 Circuit Low
|-
|rowspan=2|c_dtc_lam_dly_down_2
|P0098
|Intake Air Temperature Sensor 2 Circuit High
|-
|P0099
|Intake Air Temperature Sensor 2 Circuit Intermittent/Erratic
|-
|rowspan=2|c_dtc_lam_dly_up_1
|P1090
|Pre-Catalyst Fuel Trim Too Lean Bank 1
|-
|P1092
|Pre-Catalyst Fuel Trim Too Lean Bank 2
|-
|rowspan=2|c_dtc_lam_dly_up_2
|P1091
|Pre-Catalyst Fuel Trim Too Rich Bank 1
|-
|P1093
|Pre-Catalyst Fuel Trim Too Rich Bank 2
|-
|rowspan=3|c_dtc_lam_lim_1
|P1083
|Fuel Control Mixture Lean (Bank 1 Sensor 1)
|-
|P1084
|Fuel Control Mixture Rich (Bank 1 Sensor 1)
|-
|P1314
|Fuel System Error
|-
|rowspan=3|c_dtc_lam_lim_2
|P1085
|Fuel Control Mixture Lean (Bank 2 Sensor 1)
|-
|P1086
|Fuel Control Mixture Rich (Bank 2 Sensor 1)
|-
|P1314
|Fuel System Error
|-
|rowspan=3|c_dtc_lam_stop_1
|P0171
|System too Lean (Bank 1)
|-
|P0172
|System too Rich (Bank 1)
|-
|P1314
|Fuel System Error
|-
|rowspan=3|c_dtc_lam_stop_2
|P0174
|System too Lean (Bank 2)
|-
|P0175
|System too Rich (Bank 2)
|-
|P1314
|Fuel System Error
|-
|rowspan=1|c_dtc_leak_big
|P0441
|Evaporative Emission Control System Incorrect Purge Flow
|-
|rowspan=1|c_dtc_leak_small
|P0442
|Evaporative Emission Control System Leak Detected (small leak)
|-
|rowspan=3|c_dtc_ls_frq_1
|P0133
|O2 Sensor Circuit Slow Response (Bank 1 Sensor 1)
|-
|P1087
|O2 Sensor Circuit Slow Response in Lean Control Range (Bank 1 Sensor 1)
|-
|P1088
|O2 Sensor Circuit Slow Response in Rich Control Range (Bank 1 Sensor 1)
|-
|rowspan=3|c_dtc_ls_frq_2
|P0153
|O2 Sensor Circuit Slow Response (Bank 2 Sensor 1)
|-
|P1089
|O2 Sensor Circuit Slow Response in Lean Control Range (Bank 1 Sensor 2)
|-
|P1094
|O2 Sensor Circuit Slow Response in Rich Control Range (Bank 2 Sensor 1)
|-
|rowspan=3|c_dtc_lsh_down_1
|P0036
|HO2S Heater Control Circuit Bank 1 Sensor 2
|-
|P0037
|HO2S Heater Circuit Low Voltage Bank 1 Sensor 2
|-
|P0038
|HO2S Heater Circuit High Voltage Bank 1 Sensor 2
|-
|rowspan=3|c_dtc_lsh_down_2
|P0056
|HO2S Heater Circuit Bank 2 Sensor 2
|-
|P0057
|HO2S Heater Circuit Low Voltage Bank 2 Sensor 2
|-
|P0058
|HO2S Heater Circuit High Voltage Bank 2 Sensor 2
|-
|rowspan=1|c_dtc_lsh_obd_down_1
|P0141
|O2 Sensor Heater Circuit Malfunction (Bank 1 Sensor 2)
|-
|rowspan=1|c_dtc_lsh_obd_down_2
|P0161
|O2 Sensor Heater Circuit Malfunction (Bank 2 Sensor 2)
|-
|rowspan=1|c_dtc_lsh_obd_up_1
|P0135
|O2 Sensor Heater Circuit Malfunction (Bank 1 Sensor 1)
|-
|rowspan=1|c_dtc_lsh_obd_up_2
|P0155
|O2 Sensor Heater Circuit Malfunction (Bank 2 Sensor 1)
|-
|rowspan=3|c_dtc_lsh_up_1
|P0030
|HO2S Heater Control Circuit Bank 1 Sensor 1
|-
|P0031
|HO2S Heater Circuit Low Voltage Bank 1 Sensor 1
|-
|P0032
|HO2S Heater Circuit High Voltage Bank 1 Sensor 1
|-
|rowspan=3|c_dtc_lsh_up_2
|P0050
|HO2S Heater Circuit Bank 2 Sensor 1
|-
|P0051
|HO2S Heater Circuit Low Voltage Bank 2 Sensor 1
|-
|P0052
|HO2S Heater Circuit High Voltage Bank 2 Sensor 1
|-
|rowspan=2|c_dtc_maf
|P0102
|Mass or Volume Air Flow Circuit Low Input
|-
|P0103
|Mass or Volume Air Flow Circuit High Input
|-
|rowspan=1|c_dtc_maf_mafm
|P0101
|Mass or Volume Air Flow Circuit Range/Performance Problem
|-
|rowspan=2|c_dtc_mec_isa
|P1500
|Idle Speed Control Valve Stuck Open
|-
|P1501
|Idle Speed Control Valve Stuck Closed
|-
|rowspan=1|c_dtc_mec_ivvt_ex
|P0015
|B Camshaft Position - Timing Over-Retarded (Bank 1)
|-
|rowspan=1|c_dtc_mec_ivvt_in
|P0012
|A Camshaft Position - Timing Over-Retarded (Bank 1)
|-
|rowspan=1|c_dtc_mec_sav
|P0411
|Secondary Air Injection System Incorrect Flow Detected
|-
|rowspan=1|c_dtc_min_saf
|P0491
|Secondary Air Injection System Insufficient Flow Bank 1
|-
|rowspan=4|c_dtc_mis_0
|P0301
|Cylinder 1 Misfire Detected
|-
|P0313
|Misfire Detected With Low Fuel Level
|-
|P1342
|Misfire During Start Cylinder 1
|-
|P1343
|Misfire Cylinder 1 With Fuel Cut-off
|-
|rowspan=4|c_dtc_mis_1
|P0305
|Cylinder 5 Misfire Detected
|-
|P0313
|Misfire Detected With Low Fuel Level
|-
|P1350
|Misfire During Start Cylinder 5
|-
|P1351
|Misfire Cylinder 5 With Fuel Cut-off
|-
|rowspan=4|c_dtc_mis_2
|P0303
|Cylinder 3 Misfire Detected
|-
|P0313
|Misfire Detected With Low Fuel Level
|-
|P1346
|Misfire During Start Cylinder 3
|-
|P1347
|Misfire Cylinder 3 With Fuel Cut-off
|-
|rowspan=4|c_dtc_mis_3
|P0306
|Cylinder 6 Misfire Detected
|-
|P0313
|Misfire Detected With Low Fuel Level
|-
|P1352
|Misfire During Start Cylinder 6
|-
|P1353
|Misfire Cylinder 6 With Fuel Cut-off
|-
|rowspan=4|c_dtc_mis_4
|P0302
|Cylinder 2 Misfire Detected
|-
|P0313
|Misfire Detected With Low Fuel Level
|-
|P1344
|Misfire During Start Cylinder 2
|-
|P1345
|Misfire Cylinder 2 With Fuel Cut-off
|-
|rowspan=4|c_dtc_mis_5
|P0304
|Cylinder 4 Misfire Detected
|-
|P0313
|Misfire Detected With Low Fuel Level
|-
|P1348
|Misfire During Start Cylinder 4
|-
|P1349
|Misfire Cylinder 4 With Fuel Cut-off
|-
|rowspan=1|c_dtc_mis_f
|P0313
|Misfire Detected With Low Fuel Level
|-
|rowspan=1|c_dtc_mis_mul
|P0300
|Random/Multiple Cylinder Misfire Detected
|-
|rowspan=1|c_dtc_mis_t_s
|P0336
|Crankshaft Position Sensor A Circuit Range/Performance
|-
|rowspan=1|c_dtc_mon_plaus
|P1602
|Control Module Self Test, Control Module Defective
|-
|rowspan=1|c_dtc_mon_tqi_av
|P1603
|Control Module Self Test, Torque Monitoring
|-
|rowspan=1|c_dtc_mon_tqi_n_max
|P1604
|Control Module Self Test, Speed Monitoring
|-
|rowspan=1|c_dtc_msw_2
|P1565
|Multifunction Steering Wheel
|-
|rowspan=1|c_dtc_msw_3
|P1565
|Multifunction Steering Wheel
|-
|rowspan=1|c_dtc_msw_tog
|P1567
|Multifunction Steering Wheel, toggle bit
|-
|rowspan=1|c_dtc_mtc_ctl_1
|P1638
|Throttle Valve Position Control; Throttle Stuck Temporarily
|-
|rowspan=1|c_dtc_mtc_ctl_2
|P1639
|Throttle Valve Position Control; Throttle Stuck Permanently
|-
|rowspan=1|c_dtc_mtc_ctl_3
|P1637
|Throttle Valve Position Control; Control Deviation
|-
|rowspan=1|c_dtc_mtc_dr
|P1636
|Throttle Valve Control Circuit
|-
|rowspan=1|c_dtc_otcc
|P1477
|Leakage Diagnostic Pump Reed Switch Did Not Open
|-
|rowspan=2|c_dtc_pvs_1
|P1122
|Pedal Position 1 Low Input
|-
|P1123
|Pedal Position 1 High Input
|-
|rowspan=2|c_dtc_pvs_2
|P1222
|Pedal Position Sensor 2 Low Input
|-
|P1223
|Pedal Position Sensor 2 High Input
|-
|rowspan=1|c_dtc_pvs_bls
|P0xxx
|Simultaneous activation of accelerator pedal and brake pedal
|-
|rowspan=1|c_dtc_pvs_bls_bts_plaus
|P0xxx
|Brakelight switch and brake test switch not plausible
|-
|rowspan=1|c_dtc_pvs_pvs
|P1120
|Pedal Position Sensor Circuit
|-
|rowspan=1|c_dtc_pvs_ratio
|P1121
|Pedal Position 1 Range/Performance Problem
|-
|rowspan=1|c_dtc_r_igcfb
|P0350
|Ignition Coil Primary/Secondary Circuit Malfunction
|-
|rowspan=2|c_dtc_rly_accout
|P0532
|A/C Refrigerant Pressure Sensor Circuit Low Input
|-
|P0533
|A/C Refrigerant Pressure Sensor Circuit High Input
|-
|rowspan=2|c_dtc_rly_efp
|P0231
|Fuel Pump Secondary Circuit Low
|-
|P0232
|Fuel Pump Secondary Circuit High
|-
|rowspan=1|c_dtc_rly_main
|P1695
|Main relay
|-
|rowspan=1|c_dtc_rly_main_dly
|P0xxx
|Delay in main relay
|-
|rowspan=1|c_dtc_sa_1
|P0491
|Secondary Air Injection System Insufficient Flow Bank 1
|-
|rowspan=1|c_dtc_sa_2
|P0492
|Secondary Air Injection System Insufficient Flow Bank 2
|-
|rowspan=1|c_dtc_sa_conf
|P0411
|Secondary Air Injection System Incorrect Flow Detected
|-
|rowspan=1|c_dtc_safm
|P1419
|Secondary Air System Air Mass Flow Sensor Disconnected or Stuck Signal
|-
|rowspan=2|c_dtc_sap
|P1413
|Secondary Air Injection Pump Relay Control Circuit Signal Low
|-
|P1414
|Secondary Air Injection System Monitor Circuit High
|-
|rowspan=1|c_dtc_sap_safm
|P0411
|Secondary Air Injection System Incorrect Flow Detected
|-
|rowspan=2|c_dtc_sav
|P0413
|Secondary Air Injection System Switching Valve A Circuit Open
|-
|P0414
|Secondary Air Injection System Switching Valve A Circuit Shorted
|-
|rowspan=1|c_dtc_sav_1_safm
|P0411
|Secondary Air Injection System Incorrect Flow Detected
|-
|rowspan=1|c_dtc_sav_safm
|P0411
|Secondary Air Injection System Incorrect Flow Detected
|-
|rowspan=1|c_dtc_t_igcfb_2
|P0350
|Ignition Coil Primary/Secondary Circuit Malfunction
|-
|rowspan=1|c_dtc_t_lam_act
|P0125
|Insufficient Coolant Temperature for Closed Loop Fuel Control
|-
|rowspan=2|c_dtc_tco
|P0117
|Engine Coolant Temperature Circuit Low Input
|-
|P0118
|Engine Coolant Temperature Circuit High Input
|-
|rowspan=2|c_dtc_tco_ex
|P1111
|Engine Coolant Temperature Radiator Outlet Sensor Low Input
|-
|P1112
|Engine Coolant Temperature Radiator Outlet Sensor High Input
|-
|rowspan=1|c_dtc_tco_max
|P0116
|Engine Coolant Temperature Circuit Range/Performance Problem
|-
|rowspan=1|c_dtc_teg_down_1
|P0xxx
|Exhaust gas temperature post-cat, bank1
|-
|rowspan=1|c_dtc_teg_down_2
|P0431
|Exhaust gas temperature post-cat, bank2
|-
|rowspan=1|c_dtc_teg_up_1
|P0431
|Exhaust gas temperature pre-cat, bank1
|-
|rowspan=1|c_dtc_teg_up_2
|P0431
|Exhaust gas temperature pre-cat, bank2
|-
|rowspan=2|c_dtc_tia
|P0112
|Intake Air Temperature Circuit Low Input
|-
|P0113
|Intake Air Temperature Circuit High Input
|-
|rowspan=2|c_dtc_toil
|P0197
|Engine Oil Temperature Sensor Low
|-
|P0198
|Engine Oil Temperature Sensor High
|-
|rowspan=1|c_dtc_tout_amt_1
|P1611
|Serial Communicating Link Transmission Control Module
|-
|rowspan=1|c_dtc_tout_asr_1
|P1613
|Time-out ASR1
|-
|rowspan=1|c_dtc_tout_asr_3
|P1613
|Time-out ASR3
|-
|rowspan=1|c_dtc_tout_cng_ecu_1
|P0xxx
|Time-out CNG ECU
|-
|rowspan=1|c_dtc_tout_etcu_1
|P0600
|Serial Communication Link Malfunction
|-
|rowspan=1|c_dtc_tout_icl_2
|P1612
|Time-out instrument cluster2
|-
|rowspan=1|c_dtc_tout_icl_3
|P1612
|Time-out instrument cluster3
|-
|rowspan=2|c_dtc_tout_imob
|P1661
|Time-out EWS system
|-
|P1662
|Time-out EWS system
|-
|rowspan=1|c_dtc_tout_pste_1
|P0xxx
|Time-out PowerSteering
|-
|rowspan=2|c_dtc_tps_1
|P0122
|Throttle/Pedal Position Sensor/Switch A Circuit Low Input
|-
|P0123
|Throttle/Pedal Position Sensor/Switch A Circuit High Input
|-
|rowspan=2|c_dtc_tps_2
|P0222
|Throttle/Pedal Position Sensor/Switch B Circuit Low Input
|-
|P0223
|Throttle/Pedal Position Sensor/Switch B Circuit High Input
|-
|rowspan=4|c_dtc_tps_ad
|P1632
|Throttle Valve Adaptation; Adaptation Condition Not Met
|-
|P1633
|Throttle Valve Adaptation; Limp Home Position
|-
|P1634
|Throttle Valve Adaptation; Spring Test Failed
|-
|P1635
|Throttle Valve Adaptation; Lower Mechanical Stop Not Adapted
|-
|rowspan=1|c_dtc_tps_maf_1
|P0121
|Throttle/Pedal Position Sensor/Switch A Circuit Range/Performance Problem
|-
|rowspan=1|c_dtc_tps_maf_2
|P0221
|Throttle/Pedal Position Sensor/Switch B Circuit Range/Performance Problem
|-
|rowspan=1|c_dtc_tps_st_chk_1
|P1675
|TPS stuck, sensor 1 check condition
|-
|rowspan=1|c_dtc_tps_st_chk_2
|P1694
|TPS stuck, sensor 2 check condition
|-
|rowspan=3|c_dtc_tqi_amt_1
|P1653
|Indicated torque not matching AMT gearbox request
|-
|P1654
|Indicated torque not matching AMT gearbox request
|-
|P1670
|Indicated torque not matching AMT gearbox request
|-
|rowspan=1|c_dtc_tqi_lim
|P1605
|Limiting criteria for indicated torque
|-
|rowspan=1|c_dtc_tqi_n_max_nvmy_mon
|P1604
|Control Module Self Test, Speed Monitoring
|-
|rowspan=3|c_dtc_var_amp
|P1171
|Ambient Pressure Sensor Learned Value Error
|-
|P1172
|Ambient Pressure Sensor Rationality Check
|-
|P1173
|Ambient Pressure Sensor Rationality Check
|-
|rowspan=1|c_dtc_vcc_poti_1
|P1624
|Pedal Position Sensor Potentiometer Supply Channel 1 Electrical
|-
|rowspan=1|c_dtc_vcc_poti_2
|P1625
|Pedal Position Sensor Potentiometer Supply Channel 2 Electrical
|-
|rowspan=2|c_dtc_vdmtl
|P1451
|Diagnostic Module Tank Leakage (DM-TL) Switching Solenoid Control Circuit Signal Low
|-
|P1452
|Diagnostic Module Tank Leakage (DM-TL) Switching Solenoid Control Circuit Signal High
|-
|rowspan=2|c_dtc_vim
|P1512
|DISA Control Circuit Signal Low
|-
|P1513
|DISA Control Circuit Signal High
|-
|rowspan=3|c_dtc_vls_down_1
|P0137
|O2 Sensor Circuit Low Voltage (Bank 1 Sensor 2)
|-
|P0138
|O2 Sensor Circuit High Voltage (Bank 1 Sensor 2)
|-
|P0140
|O2 Sensor Circuit No Activity Detected (Bank 1 Sensor 2)
|-
|rowspan=3|c_dtc_vls_down_2
|P0157
|O2 Sensor Circuit Low Voltage (Bank 2 Sensor 2)
|-
|P0158
|O2 Sensor Circuit High Voltage (Bank 2 Sensor 2)
|-
|P0160
|O2 Sensor Circuit No Activity Detected (Bank 2 Sensor 2)
|-
|rowspan=2|c_dtc_vls_down_act_chk_1
|P1143
|???
|-
|P1144
|???
|-
|rowspan=2|c_dtc_vls_down_act_chk_2
|P1149
|???
|-
|P1150
|???
|-
|rowspan=1|c_dtc_vls_down_afl_1
|P0139
|O2 Sensor Circuit Slow Response (Bank 1 Sensor 2)
|-
|rowspan=1|c_dtc_vls_down_afl_2
|P0159
|O2 Sensor Circuit Slow Response (Bank 2 Sensor 2)
|-
|rowspan=1|c_dtc_vls_down_post_puc_1
|P1097
|O2 Sensor Circuit Slow Response after Coast Down Fuel Cutoff (Bank 1 Sensor 1)
|-
|rowspan=1|c_dtc_vls_down_post_puc_2
|P1098
|O2 Sensor Circuit Slow Response after Coast Down Fuel Cutoff (Bank 2 Sensor 2)
|-
|rowspan=1|c_dtc_vls_down_t_1
|P0139
|O2 Sensor Circuit Slow Response (Bank 1 Sensor 2)
|-
|rowspan=1|c_dtc_vls_down_t_2
|P0159
|O2 Sensor Circuit Slow Response (Bank 2 Sensor 2)
|-
|rowspan=3|c_dtc_vls_jump_1
|P1088
|O2 Sensor Circuit Slow Response in Rich Control Range (Bank 1 Sensor 1)
|-
|P1119
|???
|-
|P1178
|O2 Sensor Signal Circuit Slow Switching From Rich to Lean (Bank 1 Sensor 1)
|-
|rowspan=3|c_dtc_vls_jump_2
|P1095
|O2 Sensor Circuit Slow Switching From Lean to Rich (Bank 1 Sensor 1)
|-
|P1096
|O2 Sensor Circuit Slow Switching From Lean to Rich (Bank 2 Sensor 1)
|-
|P1114
|???
|-
|rowspan=1|c_dtc_vls_stk_1
|P0136
|O2 Sensor Circuit Malfunction (Bank 1 Sensor 2)
|-
|rowspan=1|c_dtc_vls_stk_2
|P0156
|O2 Sensor Circuit Malfunction (Bank 2 Sensor 2)
|-
|rowspan=3|c_dtc_vls_up_1
|P0131
|O2 Sensor Circuit Low Voltage (Bank 1 Sensor 1)
|-
|P0132
|O2 Sensor Circuit High Voltage (Bank 1 Sensor 1)
|-
|P0134
|O2 Sensor Circuit No Activity Detected (Bank 1 Sensor 1)
|-
|rowspan=3|c_dtc_vls_up_2
|P0151
|O2 Sensor Circuit Low Voltage (Bank 2 Sensor 1)
|-
|P0152
|O2 Sensor Circuit High Voltage (Bank 2 Sensor 1)
|-
|P0154
|O2 Sensor Circuit No Activity Detected (Bank 2 Sensor 1)
|-
|rowspan=1|c_dtc_vs
|P0500
|Vehicle Speed Sensor Malfunction
|}
 
=Extra Features=
 
==Forced OBD Readiness==
 
Common solution for forced OBD readiness monitors seems to be setting the following config switches
 
[[File:ForcedOBD.jpg|300px|thumb|none|TunerPro depiction of config switches]]
 
==Change E-Thermostat Desired Temp Maps==
The M54 runs quite warm for the aluminum block and also is very sensitive to temperatures and is one of the leading causes for pulling timing when warm. To set the desired coolant temps, the following maps need to be adjusted:
 
*C_TCO_SP_toil_MIN (Minimum Oil temp required to then default to EThermostat maps - 0xCA0h - default 105)
*ID_TCO_SP_ECT (Target Coolant temp without AC - 0x5D3Dh)
*ID_TCO_SP_ACIN_ECT (Target Coolant temp with AC - 0x5D85h)
 
[[File:Coolant-config.JPG|300px|thumb|none|TunerPro depiction of Coolant Maps]]
 
==Secondary Air Pump Delete==
For forced OBD Readiness set C_CONF_SAP: "1"
 
==Lambda Sensor Configuration==
Constant "c_conf_cat" has five different options which represent the ecu´s ability to work with different lambda probe setups.
 
Set the following values that suit you needs:
 
*0: Single bank with one pre-cat lambda sensor or cat-preparation (SA199)
*1: Twin bank with two pre-cat lambda sensors or cat-preparation (SA199) and automatic learning of postcat sensors
*2: Single bank with one precat lambda sensor and one post-cat lambda sensor
*3: Twin bank with two pre-cat lambda sensors and one post-cat lambda sensors
*4: Twin bank with two pre-cat lambda sensors and two post-cat lambda sensors
 
The automatic learning process of post-cat lambda sensors starts after deleting "learned variants" with INPA.
 
After installing catless headers, it could be useful to eliminate post-cat sensors with setting "c_conf_cat" to "1".
 
==MAF Sensor Scalar Adjustments==
The standard MAF sensor map is a non-interpolated 16*16 lookup table, that can also be shown as 1*256 "voltage (v) vs. airflow (kg/h)" table. The 10 bit analog to digital conversion is reduced to 8 bits and 4 bits of each are used to lookup the MAF value.
 
There are differences in flow between the M54B22/M54B25 and M54B30 MAF sensors, as the diametre is different. Differences in cross sectional area would be expected to rescale the values, but the sensor is part of the tube and not easily modified.
 
Replacement slot type sensors (Ford based) are often used in high output blow through configurations for turbocharging, as the BMW OEM sensors are not well suited to boost in blow through setup.
 
"Engine load (mg/stroke) is proportional to "airflow (kg/h)" divided by RPM and is used to reference most of the important injection and ignition tables.
 
There is a factory airflow limit of 1024kg/h that can be doubled or quadrupled with a patch that has undergone basic testing, but the maximum engine load is still limited to 1389mg/stroke, unless there are massive code rewrites.
 
A M54B30 pulls about 600mg/stroke in cold conditions with a maximum airflow of about 630kg/h.
 
Changes to MAF tables should be kept smooth and progressive. Fuel trims plotted against MAF voltage can be used to fine tune the closed loop areas.
 
==Throttle body reaction to accelerator pedal==
[[File:TunerPro_Drosselklappe.jpg|thumbnail|right|TunerPro depiction of IP_TPS_SP_PVS]]
 
Influencing the reaction of the throttle body based on driver wish is calculated in map "IP_TPS_SP_PVS"
 
You can tweak it to replicate similar behavior to a pedal box.
 
===Tweaked throttle map===
 
With the following tweak, the accelerator pedal feels more aggressive. Tested on M54B30, be careful with others.
 
{|class="wikitable" border="1" style="width: 600pt; border-collapse:collapse; text-align:right;"
|+ Here is a more aggressive throttle map
| 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 1.999
|-
| 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 0.800 || 2.499
|-
| 1.000 || 0.751 || 0.000 || 0.000 || 0.000 || 0.000 || 0.000 || 0.399 || 0.399 || 1.000 || 2.701 || 3.900
|-
| 1.500 || 1.000 || 0.000 || 0.000 || 0.000 || 0.150 || 0.350 || 0.699 || 2.400 || 4.299 || 5.000 || 5.801
|-
| 1.699 || 1.699 || 1.699 || 1.699 || 2.100 || 3.250 || 4.001 || 4.400 || 5.599 || 7.000 || 7.399 || 8.100
|-
| 5.249 || 5.249 || 5.249 || 5.249 || 6.249 || 7.500 || 8.349 || 8.800 || 9.199 || 9.499 || 9.800 || 9.800
|-
| 17.343 || 17.343 || 17.343 || 17.343 || 17.343 || 17.343 || 17.343 || 17.343 || 17.343 || 17.343 || 17.343 || 17.343
|-
| 44.999 || 44.999 || 44.999 || 44.999 || 44.999 || 44.999 || 30.937 || 30.937 || 27.187 || 27.187 || 24.843 || 22.499
|-
| 69.842 || 69.842 || 69.842 || 69.842 || 69.842 || 69.842 || 39.998 || 39.998 || 32.498 || 32.498 || 29.999 || 28.500
|-
| 74.998 || 74.998 || 74.998 || 74.998 || 74.998 || 74.998 || 74.998 || 67.498 || 67.498 || 52.498 || 52.498 || 52.498
|-
| 80.998 || 80.998 || 80.998 || 80.998 || 80.998 || 80.998 || 80.998 || 80.998 || 77.497 || 77.497 || 77.497 || 77.497
|-
| 80.998 || 80.998 || 80.998 || 80.998 || 80.998 || 80.998 || 80.998 || 80.998 || 80.998 || 80.998 || 80.998 || 80.998
|}
 
==RPM limiter==
The Siemens MS43 has two gear dependant rpm limiters, a softlimiter and a hardlimiter for each gearbox type (manual or automatic transmission).
 
The softlimiter works by cutting injectors based on fuelcut pattern, whereas the hardlimiter immediately cuts off all cylinders.
 
*ID_N_MAX_AT: softlimiter for AT gearbox
*ID_N_MAX_MAX_AT: hardlimiter for AT gearbox
*ID_N_MAX_MT: softlimiter for MT gearbox
*ID_N_MAX_MAX_MT: hardlimiter for MT gearbox
 
In addition to that, you will want to raise "ID_N_MAX_VS_MAX_AT" or "ID_N_MAX_VS_MAX_MT" slightly above the hardlimiter.
 
The Siemens MS43 gets it's vehicle speed signal (_VS) from the ABS control unit and not from a sensor inside the differential, like older chassis.
 
In case the ECU doesn't get a valid vehicle speed signal, for example when you put an M54 engine in an older chassis, or strip out the ABS block for weight reasons, a third RPM limiter is applied:
 
*C_N_MAX_VS_DIAG: RPM limiter in case of missing vehicle speed
 
==VMAX limiter==
The Siemens MS43 has two gearbox dependant speed limiters, set them to 255 to have unrestricted vehicle speed.
 
*C_VS_MAX_AT_1
*C_VS_MAX_MT_1
 
==Idle speed==
MS43 has a few different tables that affect the nominal idle speed
 
*IP_N_SP_IS__TCO: Nominal idle speed without additional load on the engine.
*IP_DRI_N_SP_IS__TCO: Nominal idle speed with drive engaged for AT gearbox.
*IP_ACIN_N_SP_IS__TCO: Nominal idle speed with air conditioner switched on.
*IP_DRI_ACIN_N_SP_IS__TCO: Nominal idle speed with air conditioner switched on and drive engaged for AT gearbox.
 
The idle setpoint is modified from the nominal speed above by
 
*IP_N_SP_ADD_CHA_CDN_BAT__CHA_CDN: Nominal idle speed offset for battery charge state.
*IP_N_SP_ADD_HEAT__TCO: Nominal idle speed offset with catalyst heating function active.
 
In addition, the idle speed slew rate can be changed with C_N_SP_LGRD_IS.
 
==Idle Control Valve Delete==
 
Removing the Idle Control Valve / Idle Speed Actuator is possible due to the motorized throttle body, although it is quite a bit of work to remove it electrical.
Disconnect ICV/ISA connector and either remove ICV/ISA and plug the hole in the intake manifold (prefered) or use hot glue to seal the ICV/ISA. There must be no air passing the ICV/ISA!
The engine will respond much harder to gas pedal movement after deleting the ICV/ISA, so be prepared for some new driving experience.
 
Additional to the values shown in the picture you have to correct CHK4 Checksum.
Checksum 4 is an addition checksum that the dme uses to verify that the _mon_ values in the calibration file are not corrupt.
The variables that the dme uses to calculate this checksum is located in the program section so tools like Ultimo Checksum Corrector can only correct this checksum in a 512KB file.
If you are using 430056 you can disable this checksum by setting lc_swi_cal_mon_cks to 165(0xA5).
 
THIS MOD is also tested on automatic transmission cars. It works well.
 
As the values in the wiki are made for a M54B30 you may need to modify ip_pvs_isa_isapwm__isapwm to get a stable idle with m54b25 and m54b22.
This table dictates how much pvs input should be added for a given isa duty cycle. So if your idle is low try increasing this table.
 
 
Credits to Tobias S.! Checksum Credits to Lakemountain.
 
 
[[File:2017-04-18 110749.jpg ‎|300px|thumb|none|TunerPro ISAoff]]
 
If you have a 3D printer that can print ABS plastic, you can now print your own plug for removing the ISA
 
http://www.thingiverse.com/thing:2297204
 
==Fake race camshafts / lumpy idle mod==
 
Faking some serious camshafts is pretty easy as M54 engine has adjustable camshafts. So basically whats happening when going camshafts is, the valve overlap will be increased by a huge amount. This means, intake and exhaust valves are open at the same time.
 
*ip_cam_sp_tco_1_ex_is__n__maf_iv
*ip_cam_sp_tco_2_ex_is__n__maf_iv
*ip_cam_sp_tco_1_in_is__n__maf_iv
*ip_cam_sp_tco_2_in_is__n__maf_iv
 
*c_n_min_er >idlespeed, to not trigger during when engine idles lumpy.
 
Max adjustable value for the different engine specs:
 
[[File:Vanos max settings.jpg|300px|thumb|none|Vanos specs]]
 
The biggest valve overlap will be acchieved when using the lowest adjustable value on the intake side (80° respectively 86°) and the lowest adjustable value on the exhaust side (-80°)
 
[[File:Camshaft Mod.jpg|300px|thumb|none|TunerPro depiction of min allowed Vanos setpoints]]
 
 
A good starting point for further optimization could be:
 
[[File:GhostCam.jpg|300px|thumb|none|TunerPro depiction of GhostCam mod]]
 
=Safety Features=
The following information need to be handled with care as you´re able to turn off safety features! This can lead to severe damage and you´re doing so at your own risk!
 
==Misfire Detection==
 
*c_n_min_er: minimum engine speed for detection of misfire!
*c_n_max_er: maximum engine speed for detection of misfire!
 
==Knock Detection==
 
*id_iga_dec_knk_1__n: ignition angle reduction based on knock stage1
*id_iga_dec_knk_2__n: ignition angle reduction based on knock stage2
 
==Injection Adaptation==
 
*c_n_ti_ad_fac_min: min engine speed to allow adapation of fuel trim, multiplicative
*c_n_ti_ad_add_max: max engine speed to allow adapation of fuel trim, additive
 
=Special Functions=
 
Some of these functions are only accessable by purchasing a license file.
 
This is not yet available, stay tuned here. Please don't write any emails until it's done!
 
==Alpha/n==
 
''This feature needs licencing.''
 
Full working Alpha/n workaround finished! The ecu behaves like stock, all adaptations work, cruise works fine, rev-matching also works fine!
 
Note: Suppressing the DTCs and disconnecting the MAF will result in a not starting engine.
 
[[File:TunerPro_AlphaN.jpg|300px|thumb|none|TunerPro depiction of Alpha/n map]]
 
==M3 Cluster LED Control==
 
''This feature needs licencing.''
 
After swapping in an M3 cluster into a E46, there is no more "ecometer" displaying the momentary fuel consumption, but a more useful oiltemperature gauge.
 
Using this cluster and some additional code we can also control the LEDs around the RPM gauge to work similar to the E46 M3 and also manage shiftlight behaviour.
 
Following maps are used:
 
<gallery>
File:OilLight M3 Cluster.jpg|TunerPro depiction of oil warmuplight map
File:Shiftlights M3 Cluster.jpg|TunerPro depiction of shiftlight map
</gallery>
 
==Multifunction M3 Cluster==
 
''This feature needs licencing.''
 
Using the oil temperature gauge from your M3 cluster to toggle between oil temp, exhaust gas temp, wideband lambda, boost gauge, etc.
 
Option is under development.
 
==Variable speed limiter==
 
''This feature needs licencing.''
 
Using the cruise control in serpentine area sometimes is cumbersome as the cruise will be deactivated when breaking, but sometimes it´ll be nice to have the security of being protected against speed traps. Another possible use would be speed limits on the track or something.
 
To engage the variable speed limiter make shure cruise control is deactivated (green led must not light). Accelerate the car to the speed you wanna set as speed limit and push the (-) cruise control button once. The car will then be limited at that speed until you either do a power cycle of the ecu or push (+) to release the variable speed limiter.
 
==Variable engine usage==
 
''This feature needs licencing.''
 
MS43 starts to grow to become universal applicable, so the next big feature is the ability to change the number of cylinders the ecu can be used for. Development for 4 cylinder engines is ongoing, stay tuned for this awesome feature.
 
<gallery>
File:2017-10-27 121139.jpg|TunerPro depiction of universal engine calibration
</gallery>
 
==Launch Control==
[[File:Tunerpro_lc_config.jpg|thumbnail|right|TunerPro launch control maps]]
 
'''Setting up LC:'''
 
Set the following maps in TunerPro:
 
*Configuration Launch Control
*Launch_PVS_min
*Launch_TCO_min
*Launch_RPM_max
*Launch_VS_max
 
'''Using LC:'''
 
*1. Make sure coolant temp is equal or above the threshold
*2. Depress the clutch pedal
*3. Choose first gear
*4. Floor the accelerator pedal! (At least that °PVS matches the threshold!)
*5. Engine speed should bounce at chosen rpm setpoint. There may be offset which engine speed bounces, like +/- 200rpm
*6. Release clutch pedal while holding accelerator pedal down.
 
== *7. Engine speed will be reduced until vehicle speed exceeds chosen threshold == Currently not working!
 
*8. ASC/DSC must be turned off
 
Engine RPM setting may be adjusted according to road conditions/tire setup, in order to minimize wheel spin.
 
For additional aggressiveness set "c_n_max_hys_max" to 32 or 64, then LC is much less bouncy
 
'''Example video:'''
 
https://www.youtube.com/watch?v=CZDCd-bMDyo
 
==Boost Control==
 
==Water Methanol Injection==
 
==Map Switching==
 
==Flexfuel==
 
''This feature needs licencing.''
 
Implementing a ethanol content sensor from your favorite brand (as long as its analogue 0-5V!) is now possible. You´ll be getting all the benefit from ethanol based fuel and you can tune it to your needs.
 
Spark advance and injection quantity can be tuned to your car individually. You can even see the current ratio displayed in the econometer prior engine start.
 
[[File:MS43_Flexfuel.jpg|300px|thumb|none|TunerPro depiction of Flexfuel]]

Revision as of 10:36, 24 January 2019

Welcome to the MS4X Wiki

Thanks to the massive community around the Siemens MS4 ECU generations this wiki is growing very fast.

Because of gaining more and more content, we had to start seperation of the ECU specific topics and keep common things together.

This means we seperate topics like flashing tools, tuning programs, bootmode activivation, etc. which are the same for all ECU models into own pages.

So don't be confused when common topics disappear out of the huge ECU pages and look for cross references. In addition to that we create a table of content right here below.


General:

First steps and requirements

How to connect


ECU:

Siemens MS42

Siemens MS43

Siemens MS45


Downloads:

Flashing Tools

Tuning Tools

Definition Files

Original Files

Modified Files


Aftermarket upgrades:

Daniel_F. Special Functions

Forced Induction Upgrades

Fuel Injector Deadtimes