Main Page

From MS43Wiki
Jump to: navigation, search

Getting Started[edit]

VERY IMPORTANT[edit]

It is absolutely crucial before starting to mess with the DME, you need to understand the importance of having the correct softwareversion! 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.

MS42 could be compared with WinXP, whereas MS43 would be Win7. 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 Win7 (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:

  • MS430037
  • MS430055
  • MS430056
  • MS430064
  • MS430066
  • MS430069
  • MS430070

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. That makes it important: A XDF/Damos/a2l file is written for a very specific softwareversion! If you load a bin with e.g. MS430066 into TunerPro and use the XDF file from MS430056, it´ll get really messy! If you are seeing strange values confirm that you are using the correct version!

AVOID USING DIFFERENT SOFTWAREVERSION

If your DME is MS430066, you need to find a XDF/Damos/a2l file for that version!

NEVER EVER FLASH A TUNE FROM A DIFFERENT SOFTWAREVERSION ON YOUR ECU OR IT WILL BE BRICKED!

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


MS430055 xdf error

Flashing utilities[edit]

You need some way to read and write files to the ECU. In order to do a full re-write, the ECU will need to be placed into BootMode. BootMode can be achieved by removing the enclosure and grounding pin 24 of the 29F400 chip for approximately 6 seconds on startup. Some options to flash the ECU are:

Software collection with all the goodies [1]


Link to Youtube which explains what to do: https://www.youtube.com/watch?v=BFwdIiqxtbk

Bench connections[edit]

You will need the following connections to properly power up the DME while on the bench. There are several different wiring to use, but we have found that this is the least amount of wires needed for a properly working setup.

Bench Pins for MS43

Tuning your ECU[edit]

You will need:

  1. A map editor
  2. An XDF definition file so that the map editor can locate maps. Thanks to Daniel! & Thaniel!!!
  3. Checksum correction
    • Modifying data in the ECU file will invalidate the internal checksum values. These will need to be updated or your car will not start or will have errors. #Flashing_utilities
    • The exception is if you are flashing only the 64kb calibration area and have previously flashed the 512kb full flash from Daniel with checksum delete.

Data Logging[edit]

Terminology[edit]

The acronyms are Siemens map names 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

Fueling[edit]

Basic Fuel Maps[edit]

Injection maps are based around engine load vs engine speed. The lookup is milliseconds. The lambda sensors for closed loop control are narrowband. Learned trims do affect full throttle fuelling as well, but area learned from closed loop areas. When there is no VANOS fault, the engine interpolates between Injection time at part-load, cold engine, Vanos I or II and Injection time at part-load, warm engine, Vanos I or II. I or II are for the two halves of the straight six engine. Under VANOS fault conditions, 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 weighing factor ip_fac_pl_ivvt__tco__tco_st for partload and ip_fac_is_ivvt__tco__tco_st for idlespeed

Non Stock Injector Maps[edit]

Changing injectors may be needed when charging your engine and therefore some constants/maps need to be tweaked. You will want to calculate the difference in percentage of volume flow between stock and your new injectors. The following constants/maps need to be lowered at the same percentage, when using "bigger" injectors:

  • c_ti_min_iv
  • ip_ti_fl__n
  • ip_ti_cst__n__tco
  • ip_ti_fast_wf_thd_min__tco
  • ip_ti_slow_wf_thd_min__tco
  • ip_ti_tco_1_is_ivvt__n__maf
  • ip_ti_tco_1_pl_ivvt_1__n__maf
  • ip_ti_tco_1_pl_ivvt_2__n__maf
  • ip_ti_tco_2_is_ivvt__n__maf
  • ip_ti_tco_2_pl_ivvt_1__n__maf
  • ip_ti_tco_2_pl_ivvt_2__n__maf
  • ip_tib__n__maf
  • ip_tipr_cst__tco

Set the following maps to zero:

  • id_t_ch_ti_cat_var
  • ip_t_ch_ti__tco_st__km_ctr

Depending on the injectors you will want to finetune the injector latency compensation:

  • ip_ti_add_dly__vb

Timing[edit]

Basic Timing Maps[edit]

Ignition at part-load, RON98 (16x20) Airflow -vs- Engine speed is the main table in use with a healthy engine, with no VANOS fault codes at normal warmed up operating temperature running 98 RON/93 PON gasoline. There is a knock based interpolation between the 98 and 91 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 Euro 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 98 RON map on a standard car is quite good. Question if fuelling could be richened to allow more ignition timing and torque/power.

Exhaust Popping Modifications[edit]

Exhaust pop with deactivated A/C

Current solution for exhaust crackle/pop is to supress overrun fuelcut detection from the ecu. This is accomplished by raising the rpm treshold. 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

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 discretion.

Timer configurable exhaust pops

Thanks to erom9171 for butchering this out!

Its now possible to tweak a timer which will let the engine pop for a given time. After that timer is zero, the engine will go back into overrun-fuelcut. So its 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.

TunerPro depiction of timered overrun fuelcut mod

For anyone wanting the best of both worlds:

TunerPro depiction of combined overrun fuelcut mod

Vanos[edit]

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[edit]

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

DTC Suppression[edit]

DTCs can be suppressed in the MS43 by zeroing out the c_abc_... specific codes. The full list of DTCs can be found here:

DTC variables OBD
Code Description
c_dtc_ad_mec_ref_ivvt_ex P0014 B Camshaft Position - Timing Over-Advanced or System Performance (Bank 1)
c_dtc_ad_mec_ref_ivvt_in P0011 A Camshaft Position - Timing Over-Advanced or System Performance (Bank 1)
c_dtc_amp P0107 Manifold Absolute Pressure/Barometric Pressure Circuit Low Input
P0108 Manifold Absolute Pressure/Barometric Pressure Circuit High Input
c_dtc_bls_plaus P0571 Cruise Control/Brake Switch A Circuit Malfunction
c_dtc_cam P0340 Camshaft Position Sensor Circuit Malfunction
P0344 Camshaft Position Sensor Circuit Intermittent
c_dtc_cam_ex P0365 Camshaft Position Sensor 'B' Circuit Bank 1
P0369 Camshaft Position Sensor 'B' Circuit Intermittent Bank 1
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
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
c_dtc_can_boff P1610 CANbus offline
c_dtc_cat_diag_1 P0420 Catalyst System Efficiency Below Threshold (Bank 1)
c_dtc_cat_diag_2 P0430 Catalyst System Efficiency Below Threshold (Bank 2)
c_dtc_cat_eff_1 P0421 Warm Up Catalyst Efficiency Below Threshold (Bank 1)
c_dtc_cat_eff_2 P0431 Warm Up Catalyst Efficiency Below Threshold (Bank 2)
c_dtc_cc
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
c_dtc_crk P0335 Crankshaft Position Sensor A Circuit Malfunction
P0339 Crankshaft Position Sensor A Circuit Intermittent
c_dtc_cs P0xxx Clutch Switch
c_dtc_ct
c_dtc_ctoc
c_dtc_diagcps P0441 Evaporative Emission Control System Incorrect Purge Flow
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
c_dtc_dmtl_leak P0455 Evaporative Emission Control System Leak Detected (gross leak)
P0456 EVAP Leak Monitor Small Leak Detected
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
c_dtc_ecf P0480 Cooling Fan 1 Control Circuit Malfunction
c_dtc_ect P1619 MAP Cooling Control Circuit Signal Low
P1620 MAP Cooling Control Circuit Signal High
c_dtc_ect_mec P0128 Range/Performance Problem In Thermostat
c_dtc_ecu P0604 Internal Control Module Random Access Memory (RAM) Error
c_dtc_ef P0477 Exhaust Pressure Control Valve Low
P0478 Exhaust Pressure Control Valve High
c_dtc_er_ad P0xxx Misfire adaptation
c_dtc_igcfb_0 P0351 Ignition Coil 1 Primary/Secondary Circuit Malfunction
P1301 Misfiring Cylinder 1
c_dtc_igcfb_1 P0355 Ignition Coil 5 Primary/Secondary Circuit Malfunction
P1305 Misfiring Cylinder 5
c_dtc_igcfb_2 P0353 Ignition Coil 3 Primary/Secondary Circuit Malfunction
P1303 Misfiring Cylinder 3
c_dtc_igcfb_3 P0356 Ignition Coil 6 Primary/Secondary Circuit Malfunction
P1306 Misfiring Cylinder 6
c_dtc_igcfb_4 P0352 Ignition Coil 2 Primary/Secondary Circuit Malfunction
P1302 Misfiring Cylinder 2
c_dtc_igcfb_5 P0354 Ignition Coil 4 Primary/Secondary Circuit Malfunction
P1304 Misfiring Cylinder 4
c_dtc_imob P1660 EWS system
P1666 EWS system
c_dtc_is P0505 Idle Control System Malfunction
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
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
c_dtc_iv_0 P0201 Injector Circuit Malfunction - Cylinder 1
P0261 Cylinder 1 Injector Circuit Low
P0262 Cylinder 1 Injector Circuit High
c_dtc_iv_1 P0205 Injector Circuit Malfunction - Cylinder 5
P0273 Cylinder 5 Injector Circuit Low
P0274 Cylinder 5 Injector Circuit High
c_dtc_iv_2 P0203 Injector Circuit Malfunction - Cylinder 3
P0267 Cylinder 3 Injector Circuit Low
P0268 Cylinder 3 Injector Circuit High
c_dtc_iv_3 P0206 Injector Circuit Malfunction - Cylinder 6
P0276 Cylinder 6 Injector Circuit Low
P0277 Cylinder 6 Injector Circuit High
c_dtc_iv_4 P0202 Injector Circuit Malfunction - Cylinder 2
P0264 Cylinder 2 Injector Circuit Low
P0265 Cylinder 2 Injector Circuit High
c_dtc_iv_5 P0204 Injector Circuit Malfunction - Cylinder 4
P0270 Cylinder 4 Injector Circuit Low
P0271 Cylinder 4 Injector Circuit High
c_dtc_knk_1 P0327 Knock Sensor 1 Circuit Low Input (Bank 1 or Single Sensor)
c_dtc_knk_2 P0332 Knock Sensor 2 Circuit Low Input (Bank 2)
c_dtc_lam_dly_down_1 P0096 Intake Air Temperature Sensor 2 Circuit Range/Performance
P0097 Intake Air Temperature Sensor 2 Circuit Low
c_dtc_lam_dly_down_2 P0098 Intake Air Temperature Sensor 2 Circuit High
P0099 Intake Air Temperature Sensor 2 Circuit Intermittent/Erratic
c_dtc_lam_dly_up_1 P1090 Pre-Catalyst Fuel Trim Too Lean Bank 1
P1092 Pre-Catalyst Fuel Trim Too Lean Bank 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
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
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
c_dtc_lam_stop_1 P0171 System too Lean (Bank 1)
P0172 System too Rich (Bank 1)
P1314 Fuel System Error
c_dtc_lam_stop_2 P0174 System too Lean (Bank 2)
P0175 System too Rich (Bank 2)
P1314 Fuel System Error
c_dtc_leak_big P0441 Evaporative Emission Control System Incorrect Purge Flow
c_dtc_leak_small P0442 Evaporative Emission Control System Leak Detected (small leak)
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)
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)
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
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
c_dtc_lsh_obd_down_1 P0141 O2 Sensor Heater Circuit Malfunction (Bank 1 Sensor 2)
c_dtc_lsh_obd_down_2 P0161 O2 Sensor Heater Circuit Malfunction (Bank 2 Sensor 2)
c_dtc_lsh_obd_up_1 P0135 O2 Sensor Heater Circuit Malfunction (Bank 1 Sensor 1)
c_dtc_lsh_obd_up_2 P0155 O2 Sensor Heater Circuit Malfunction (Bank 2 Sensor 1)
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
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
c_dtc_maf P0102 Mass or Volume Air Flow Circuit Low Input
P0103 Mass or Volume Air Flow Circuit High Input
c_dtc_maf_mafm P0101 Mass or Volume Air Flow Circuit Range/Performance Problem
c_dtc_mec_isa P1500 Idle Speed Control Valve Stuck Open
P1501 Idle Speed Control Valve Stuck Closed
c_dtc_mec_ivvt_ex P0015 B Camshaft Position - Timing Over-Retarded (Bank 1)
c_dtc_mec_ivvt_in P0012 A Camshaft Position - Timing Over-Retarded (Bank 1)
c_dtc_mec_sav P0411 Secondary Air Injection System Incorrect Flow Detected
c_dtc_min_saf P0491 Secondary Air Injection System Insufficient Flow Bank 1
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
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
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
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
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
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
c_dtc_mis_f P0313 Misfire Detected With Low Fuel Level
c_dtc_mis_mul P0300 Random/Multiple Cylinder Misfire Detected
c_dtc_mis_t_s P0336 Crankshaft Position Sensor A Circuit Range/Performance
c_dtc_mon_plaus P1602 Control Module Self Test, Control Module Defective
c_dtc_mon_tqi_av P1603 Control Module Self Test, Torque Monitoring
c_dtc_mon_tqi_n_max P1604 Control Module Self Test, Speed Monitoring
c_dtc_msw_2 P1565 Multifunction Steering Wheel
c_dtc_msw_3 P1565 Multifunction Steering Wheel
c_dtc_msw_tog P1567 Multifunction Steering Wheel, toggle bit
c_dtc_mtc_ctl_1 P1638 Throttle Valve Position Control; Throttle Stuck Temporarily
c_dtc_mtc_ctl_2 P1639 Throttle Valve Position Control; Throttle Stuck Permanently
c_dtc_mtc_ctl_3 P1637 Throttle Valve Position Control; Control Deviation
c_dtc_mtc_dr P1636 Throttle Valve Control Circuit
c_dtc_otcc P1477 Leakage Diagnostic Pump Reed Switch Did Not Open
c_dtc_pvs_1 P1122 Pedal Position 1 Low Input
P1123 Pedal Position 1 High Input
c_dtc_pvs_2 P1222 Pedal Position Sensor 2 Low Input
P1223 Pedal Position Sensor 2 High Input
c_dtc_pvs_bls P0xxx Simultaneous activation of accelerator pedal and brake pedal
c_dtc_pvs_bls_bts_plaus P0xxx Brakelight switch and brake test switch not plausible
c_dtc_pvs_pvs P1120 Pedal Position Sensor Circuit
c_dtc_pvs_ratio P1121 Pedal Position 1 Range/Performance Problem
c_dtc_r_igcfb P0350 Ignition Coil Primary/Secondary Circuit Malfunction
c_dtc_rly_accout P0532 A/C Refrigerant Pressure Sensor Circuit Low Input
P0533 A/C Refrigerant Pressure Sensor Circuit High Input
c_dtc_rly_efp P0231 Fuel Pump Secondary Circuit Low
P0232 Fuel Pump Secondary Circuit High
c_dtc_rly_main P1695 Main relay
c_dtc_rly_main_dly P0xxx Delay in main relay
c_dtc_sa_1 P0491 Secondary Air Injection System Insufficient Flow Bank 1
c_dtc_sa_2 P0492 Secondary Air Injection System Insufficient Flow Bank 2
c_dtc_sa_conf P0411 Secondary Air Injection System Incorrect Flow Detected
c_dtc_safm P1419 Secondary Air System Air Mass Flow Sensor Disconnected or Stuck Signal
c_dtc_sap P1413 Secondary Air Injection Pump Relay Control Circuit Signal Low
P1414 Secondary Air Injection System Monitor Circuit High
c_dtc_sap_safm P0411 Secondary Air Injection System Incorrect Flow Detected
c_dtc_sav P0413 Secondary Air Injection System Switching Valve A Circuit Open
P0414 Secondary Air Injection System Switching Valve A Circuit Shorted
c_dtc_sav_1_safm P0411 Secondary Air Injection System Incorrect Flow Detected
c_dtc_sav_safm P0411 Secondary Air Injection System Incorrect Flow Detected
c_dtc_t_igcfb_2 P0350 Ignition Coil Primary/Secondary Circuit Malfunction
c_dtc_t_lam_act P0125 Insufficient Coolant Temperature for Closed Loop Fuel Control
c_dtc_tco P0117 Engine Coolant Temperature Circuit Low Input
P0118 Engine Coolant Temperature Circuit High Input
c_dtc_tco_ex P1111 Engine Coolant Temperature Radiator Outlet Sensor Low Input
P1112 Engine Coolant Temperature Radiator Outlet Sensor High Input
c_dtc_tco_max P0116 Engine Coolant Temperature Circuit Range/Performance Problem
c_dtc_teg_down_1 P0xxx Exhaust gas temperature post-cat, bank1
c_dtc_teg_down_2 P0431 Exhaust gas temperature post-cat, bank2
c_dtc_teg_up_1 P0431 Exhaust gas temperature pre-cat, bank1
c_dtc_teg_up_2 P0431 Exhaust gas temperature pre-cat, bank2
c_dtc_tia P0112 Intake Air Temperature Circuit Low Input
P0113 Intake Air Temperature Circuit High Input
c_dtc_toil P0197 Engine Oil Temperature Sensor Low
P0198 Engine Oil Temperature Sensor High
c_dtc_tout_amt_1 P1611 Serial Communicating Link Transmission Control Module
c_dtc_tout_asr_1 P1613 Time-out ASR1
c_dtc_tout_asr_3 P1613 Time-out ASR3
c_dtc_tout_cng_ecu_1 P0xxx Time-out CNG ECU
c_dtc_tout_etcu_1 P0600 Serial Communication Link Malfunction
c_dtc_tout_icl_2 P1612 Time-out instrument cluster2
c_dtc_tout_icl_3 P1612 Time-out instrument cluster3
c_dtc_tout_imob P1661 Time-out EWS system
P1662 Time-out EWS system
c_dtc_tout_pste_1 P0xxx Time-out PowerSteering
c_dtc_tps_1 P0122 Throttle/Pedal Position Sensor/Switch A Circuit Low Input
P0123 Throttle/Pedal Position Sensor/Switch A Circuit High Input
c_dtc_tps_2 P0222 Throttle/Pedal Position Sensor/Switch B Circuit Low Input
P0223 Throttle/Pedal Position Sensor/Switch B Circuit High Input
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
c_dtc_tps_maf_1 P0121 Throttle/Pedal Position Sensor/Switch A Circuit Range/Performance Problem
c_dtc_tps_maf_2 P0221 Throttle/Pedal Position Sensor/Switch B Circuit Range/Performance Problem
c_dtc_tps_st_chk_1 P1675 TPS stuck, sensor 1 check condition
c_dtc_tps_st_chk_2 P1694 TPS stuck, sensor 2 check condition
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
c_dtc_tqi_lim P1605 Limiting criteria for indicated torque
c_dtc_tqi_n_max_nvmy_mon P1604 Control Module Self Test, Speed Monitoring
c_dtc_var_amp P1171 Ambient Pressure Sensor Learned Value Error
P1172 Ambient Pressure Sensor Rationality Check
P1173 Ambient Pressure Sensor Rationality Check
c_dtc_vcc_poti_1 P1624 Pedal Position Sensor Potentiometer Supply Channel 1 Electrical
c_dtc_vcc_poti_2 P1625 Pedal Position Sensor Potentiometer Supply Channel 2 Electrical
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
c_dtc_vim P1512 DISA Control Circuit Signal Low
P1513 DISA Control Circuit Signal High
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)
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)
c_dtc_vls_down_act_chk_1 P1143 ???
P1144 ???
c_dtc_vls_down_act_chk_2 P1149 ???
P1150 ???
c_dtc_vls_down_afl_1 P0139 O2 Sensor Circuit Slow Response (Bank 1 Sensor 2)
c_dtc_vls_down_afl_2 P0159 O2 Sensor Circuit Slow Response (Bank 2 Sensor 2)
c_dtc_vls_down_post_puc_1 P1097 O2 Sensor Circuit Slow Response after Coast Down Fuel Cutoff (Bank 1 Sensor 1)
c_dtc_vls_down_post_puc_2 P1098 O2 Sensor Circuit Slow Response after Coast Down Fuel Cutoff (Bank 2 Sensor 2)
c_dtc_vls_down_t_1 P0139 O2 Sensor Circuit Slow Response (Bank 1 Sensor 2)
c_dtc_vls_down_t_2 P0159 O2 Sensor Circuit Slow Response (Bank 2 Sensor 2)
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)
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 ???
c_dtc_vls_stk_1 P0136 O2 Sensor Circuit Malfunction (Bank 1 Sensor 2)
c_dtc_vls_stk_2 P0156 O2 Sensor Circuit Malfunction (Bank 2 Sensor 2)
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)
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)
c_dtc_vs P0500 Vehicle Speed Sensor Malfunction

Extra Features[edit]

Forced OBD Readiness[edit]

Common solution for forced OBD readiness monitors seems to be setting the following config switches

TunerPro depiction of config switches

Change E-Thermostat Desired Temp Maps[edit]

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)
TunerPro depiction of Coolant Maps

Secondary Air Pump Delete[edit]

For forced OBD Readiness set C_CONF_SAP: "1"

Post Cat O2 Delete[edit]

Set - c_conf_cat - Configuration Catalytic System to 1 for 2 Pre-Cat O2 sensors

Single O2 Feedback[edit]

Constant c_conf_cat has 5 different options which represent the ecu´s ability to work with different lambda probe setups. Set the following values that suit you needs:

  • 0: One precat lambda sensor or cat-preparation (SA199)
  • 1: Two precat lambda sensor or cat-preparation (SA199)
  • 2: One precat lambda sensor and one postcat lambda sensor
  • 3+4: Two precat lambda sensor and two postcat lambda sensor

MAF Scalar Adjustments[edit]

The standard MAF lookup table is a 16 * 16 table that is not interpolated. The 10 bit analog to digital conversion is reduced to 8 bits and 4 bits of each are used to lookup the MAF. The table can also be shown as 256 * 1. The function is the same. There is a factory limit of 1024kg/h that can be doubled or quadrupled with a patch that has undergone basic testing. There are differences in flow between the 2.5 and 3.0 litre MAF sensors. Differences in cross sectional area would be expected to rescale the values, but the sensor is part of the tube and not easily modified. BMW sensors apparently not well suited to boost in blow through setup. Replacement slot type sensors (Ford based?) are often used in high output blow through configurations for turbocharging. Engine load is proportional to MAF divided by RPM. Engine load is used to reference most of the important fuel and ignition tables. Max engine load is 1389mg/stroke and limited unless there are massive rewrites in hardware. A 330i 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 reaction to accelerator pedal[edit]

Influencing the reaction of the throttle based on driver wish is calculated in map "IP_TPS_SP_PVS" You can tweak it to replicate similar behaviour to a pedal box. Note MS42 uses maps "KF_MDK_SOLL_PWG_TKW1" and "KF_MDK_SOLL_PWG_TKW2" (Cold and Warm respectively.)

TunerPro depiction of IP_TPS_SP_PVS

Rpm limiter[edit]

MS43 has 4 gear dependant rpm limiter, where 2 are used for soft limiting and the other 2 are used for hard limiting. Both hard- and softlimiter are gearbox dependant, AT or MT

  • 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/ID_N_MAX_VS_MAX_MT slightly above the hardlimiter.

Softlimiter works by cutting injectors based on fuelcut pattern, whereas hardlimiter immediately cuts all cylinder

Vmax limiter[edit]

MS43 has 2 gearbox dependant speed limiter, set to 255 to have unrestricted vehicle speed

  • C_VS_MAX_AT_1
  • C_VS_MAX_MT_1

Idle speed[edit]

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.

Alpha/n[edit]

Disconnecting the MAF sensor forces the DME to use the Alpha/n map (ip_maf_1_diag) Fault codes will be removed with the next iteration of flash files.

TunerPro depiction of Alpha/n map

ISAless[edit]

Still under development!

Removing the IdleControlValve/IdleSpeedActuator 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.

Thanks to Tobias S. for the initial thoughts! (M54B30 manual gearbox):

  • c_abc_inc_isa_1: 0
  • c_abc_inc_isa_2: 0
  • Throttle angle based on driver wish (ip_tps_sp_pvs):
  • Throttle angle at engine start (ip_tps_sp_st):
TunerPro ip_tps_sp_pvs

MAP[edit]

Fake Race camshafts//lumpy idle mod[edit]

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:

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°)

TunerPro depiction of min allowed Vanos setpoints


A good starting point for further optimization could be:

TunerPro depiction of GhostCam mod

Safety Features[edit]

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[edit]

  • c_n_min_er: minimum engine speed for detection of misfire!
  • c_n_max_er: maximum engine speed for detection of misfire!

Knock Detection[edit]

  • 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[edit]

  • 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[edit]

Launch Control[edit]

Setting up LC:

Set following maps depicted in TP:


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
  • 8. ASC/DSC must be turned off
TunerPro LC Maps

Engine RPM setting may be adjusted according to road conditions/tire setup, in order to minimize wheel spin.

No Lift Shift[edit]

Boost Control[edit]

Water Injection/Water Cooling[edit]

Antilag[edit]

Map Switching[edit]

Flex Fuel[edit]