Advertising:
Siemens MS43: Difference between revisions
No edit summary |
|||
Line 1,884: | Line 1,884: | ||
If you want to machine a matching plug, use this template: [[:File:ISA Delete Plug.pdf|ISA_Delete_Plug.pdf]] | If you want to machine a matching plug, use this template: [[:File:ISA Delete Plug.pdf|ISA_Delete_Plug.pdf]] | ||
The | The most important table that makes the ICV delete possible is the '''ip_pvs_isa_isapwm''' table. This table is used by the ecu to decide how much pvs input should be added to the drivers requested pvs input for a given idle control valve duty cycle. | ||
In a stock engine this table is used to extend the idle control valve | In a stock engine this table is used to extend the idle control valve duty cycle so when the idle control valve duty cycle goes above 100% the throttle will start to open to deliver more air into the engine. | ||
So when we remove the idle control valve we re-scale this table to emulate the idle control valve airflow with different pvs inputs. These pvs inputs are in the end translated to a throttle opening by the '''ip_tps_sp_pvs''' table. | |||
If we take an example from the ICV delete values above we will see in the '''ip_pvs_isa_isapwm''' table that at 17.5% idle control valve duty cycle the ecu will add 7.430° of pvs input to the drivers requested pvs input and if we take a look in the '''ip_tps_sp_pvs''' table we will see that around idle speed this pvs input will result in a throttle opening of around 2.999°. As we can see the values in '''ip_pvs_isa_isapwm''' and '''ip_tps_sp_pvs''' are tightly connected so if the '''ip_tps_sp_pvs''' table is modified then the '''ip_pvs_isa_isapwm''' table will also have to be modified accordingly to maintain a stable idle. | |||
[https://docs.google.com/file/d/1iuopuis61GzssKOn_d_DbgekmFZEyXzd/edit?usp=docslist_api&filetype=msexcel Copyable ICV Delete Tables M54B30 ONLY!]. | [https://docs.google.com/file/d/1iuopuis61GzssKOn_d_DbgekmFZEyXzd/edit?usp=docslist_api&filetype=msexcel Copyable ICV Delete Tables M54B30 ONLY!]. | ||
The '''ip_pvs_isa_isapwm''' values above are created for a M54B30 engine so the values may need to be modified to get a stable idle with a M54B22 or M54B25 engine as these engines have a smaller throttle body, a good starting point would be to increase the '''ip_pvs_isa_isapwm''' table values with the opening area percentage difference between the M54B30 throttle body and the M54B22/M54B25 throttle body. | |||
The '''ip_pvs_isa_isapwm''' values | |||
This modification modifies a monitoring table so the calibration addition checksum needs to be corrected or disabled after applying the changes. [[#Checksums|Check here for more information about checksums.]] | This modification modifies a monitoring table so the calibration addition checksum needs to be corrected or disabled after applying the changes. [[#Checksums|Check here for more information about checksums.]] |
Revision as of 20:43, 28 May 2020
The Siemens MS43 engine control unit (TCU) uses an Infineon C167CR_SR CPU in combination with a 4 megabit AMD AM29F400BB flash memory. This ECU controls the BMW M54 inline six engine.
When looking at the cryptic item names this might help you: Siemens Keyword Translation
Memory Layout
The MS43 can be seperated into three major sections, first comes the bootloader, then the program code, and last the calibration data.
See this table for file locations:
Start | End | Section | Size |
---|---|---|---|
00000 | 0FFFF | Bootloader Code | 64 kByte |
10000 | 1FFFF | Program Code | 384 kByte |
20000 | 2FFFF | ||
30000 | 3FFFF | ||
40000 | 4FFFF | ||
50000 | 5FFFF | ||
60000 | 6FFFF | ||
70000 | 7FFFF | Calibration Data | 64 kByte |
Bootloader Section
The bootloader code section is the most important section of the MS43 and doesnt have to be touched for at least 99% of all use cases.
This section is 64 kByte in size and contains the interrupt setups, input and output initializations, as well as immobilizer information and the UIF (user information fields).
The significant difference between the bootloader section and the others is, that it's only one time programmable under normal operation. That means once a byte has been changed from FF to another value, it is not changeable again.
Unlimited write access to the bootloader section can only be archieved through JMGarage Flasher and is ONLY needed for virginizing the ECU to pair it with a different EWS module or to alter the UIF without increasing the flashcounter.
Tip: The newest version of immobilizer and checksum delete will not need bootmode flashing.
Programm Code Section
All of the MS43 program code is located here.
Calibration Data Section
Checksums
Checksums are used to verify that the data written to the ROM has not become corrupt.
The MS43 uses three CRC16 checksums that covers the boot, program and calibration sections and two addition checksums that covers the data for the monitoring (_mon_) routines.
The variables that the ECU uses to calculate the addition checksum is located in the program section so tools like Ultimo Checksum Corrector can only correct this checksum in a 512KB file.
Both addition checksums have to be corrected before the CRC16 checksums, as the addition checksums are located inside the CRC16 checksum areas.
The checksums are located at the following addresses:
CRC16 | Location |
---|---|
Boot | 0x3C24 |
Program | 0x6FDE0 |
Calibration | 0x73FE0 |
Addition | Location |
Program Part 1 | 0x6FDAE |
Program Part 2 | 0x6FD80 |
Calibration Part 1 | 0x72FFC |
Calibration Part 2 | 0x72FFE |
Disabling Calibration Checksums
Disable CRC16 Checksum
To disable the CRC16 calibration checksum on all firmwares do the following.
- Hexeditor
- 1. Set Word at 0x73FFE to 0xFFFF
- 2. Set Byte at 0x6FFB0 to 0xA8
Disable Addition Checksum
To disable the addition calibration checksum use one of the following methods.
- Tunerpro
- 1. Set lc_swi_cal_mon_cks to 165
- Hexeditor
- 1. Set the Byte in the table to 0xA5
Firmware Location 430037 0x70CE3 430055 0x70D7C 430056 0x70D7E 430064 0x70DA0 430066 0x70E0A 430069 0x70E07
Variants Configuration Switches
As MS43 is used in many different chassis configurations there are quite a few configuration switches that enable or disable their corresponding features or change their behaviour.
Configuration brake light test switch logic variant (c_conf_bts)
- 0: Signal high corresponds to 'brake actuated'
- 1: Signal low corresponds to 'brake actuated'
Configuration exhaust system variant (c_conf_cat)
- 0: Automatic learning of variants, single-scroll, with one control (pre cat) sensor or CATV variant (SA199)
- 1: Automatic learning of variants, twin-scroll, with two control (pre cat) sensors or CATV variant (SA199)
- 2: Single-scroll, 1 control (pre cat) sensor, 1 monitoring (post cat) sensor
- 3: Twin-scroll, 2 control (pre cat) sensors, 2 monitoring (post cat) sensors
- 4: Automatic learning, twin-scroll, with/without control (pre cat) sensors, with/without monitoring (post cat) sensors or CATV variant (SA199)
Configuration main switch cruise control variant (c_conf_cru_main_swi)
- 0: main switch function active, main switch controlled over steering wheel button O/I
- 1: main switch function inactive for Z3 usage, main switch enabled when ignition key voltage is present
Configuration DMTL module variant (c_conf_dmtl)
- 0: DMTL module not present
- 1: DMTL module present
Configuration ECF (Electrical Cooling Fan) variant (c_conf_ecf)
- 0: ECF not present, function and diagnosis OFF
- 1: ECF present, function and diagnosis ON
Configuration exhaust flap variant (c_conf_ef)
- 0: Exhaust flap not present, function and diagnosis OFF
- 1: Exhaust flap present, function and diagnosis ON
Configuration diagnostic lamp / MIL variant - two control sensors and two monitoring sensors (c_conf_mil)
- 0: No control of error lamp, LV_MIL = 0
- 1: Debounce after BMW error memory
- 2: Debounce after OBDII error memory and all component errors after 2nd driving cycle
- 3: Debounce after OBDII error memory and CS-component error, immediately
Configuration diagnostic lamp / MIL variant - two control sensors (c_conf_mil_eu2)
- 0: No control of error lamp, LV_MIL = 0
- 1: Debounce after BMW error memory
- 2: Debounce after OBDII error memory and all component errors after 2nd driving cycle
- 3: Debounce after OBDII error memory and CS-component error, immediately
Configuration exhaust gas temperatur sensor variant (c_conf_teg)
- 0: Automatic learning of EGT sensors
- 1: No EGT sensors
- 2: twin-scroll exhaust system with four EGT sensors
Configuration torque limit first gear variant (c_conf_tq_lim_gear)
- 0: Torque limit not active
- 1: Torque limit active (E53)
Configuration venturi pump variant (c_conf_vepu)
- 0: VEPU not present, function and diagnosis OFF
- 1: VEPU present, function and diagnosis ON
Configuration SAP (Secondary Air Pump) variant (c_conf_sap)
- 0: Automatic learning of SAP varants
- 1: SAP not present
- 2: SAP present without SAFM (Secondary Air Flow Meter)
- 3: SAP present with SAFM (Secondary Air Flow Meter)
Load Filtration
In MS43 we have two different load filtration models for injection/ignition load and VANOS load.
Note: The normal logging routine reports the unfiltered load value that will vary from the filtered loads especially in forced induction applications.
If you ever experience your engine running into a "lean-wall" when hitting positive manifold pressure chances are good that the load filtering was not adjusted for boost.
Injection Load
The load filtering process for ignition and injection is necessary to include valve overlap induced by the VANOS into load calculations and is based on Clapeyrons ideal gas equation.
First the ECU calculates the manifold absolute pressure (MAP) by taking the effective intake manifold volume (hPa), the engine speed and the unfiltered load reading into account.
The effective volume is different between increasing and decreasing load scenarios and therefore split up into four different tables:
- ip_vol_im__n__maf_mes - Effective intake manifold volume at increasing load during part load and full load
- ip_vol_im_neg__n__maf_mes - Effective intake manifold volume at decreasing load during part load and full load
- ip_vol_im_is__n__maf_mes - Effective intake manifold volume at increasing load during idle, trailing throttle and trailing throttle fuel cut-off
- ip_vol_im_neg_is__n__maf_mes - Effective intake manifold volume at decreasing load during idle, trailing throttle and trailing throttle fuel cut-off
Obviously, the more accurate this model is, the more accurate is the calculated MAP value that's used in the next step, where the ECU compensates the load with valve overlap.
There are 8 lookup tables (ip_maf_vo_[1-8]__map__n) and a selection table (ip_nr_ip_maf__vo) that decides which of those maps will be used, depending on the current valve overlap angle.
- ip_nr_ip_maf__vo - Active _vo_ table for maf_ti signal filtering
- ip_maf_vo_1__map__n - Valve overlap based MAF signal filtering for maf_ti
- ip_maf_vo_2__map__n - Valve overlap based MAF signal filtering for maf_ti
- ip_maf_vo_3__map__n - Valve overlap based MAF signal filtering for maf_ti
- ip_maf_vo_4__map__n - Valve overlap based MAF signal filtering for maf_ti
- ip_maf_vo_5__map__n - Valve overlap based MAF signal filtering for maf_ti
- ip_maf_vo_6__map__n - Valve overlap based MAF signal filtering for maf_ti
- ip_maf_vo_7__map__n - Valve overlap based MAF signal filtering for maf_ti
- ip_maf_vo_8__map__n - Valve overlap based MAF signal filtering for maf_ti
These tables will revert the MAP signal back into engine load over engine speed and they are interpolating between 50hPa and 1250hPa absolute pressure from factory.
This gives the ECU some headroom to compensate for outside ambient pressure.
VANOS Load
The VANOS load filtration is a simple weighting factor to blend between real measured load and the MAF substitude table.
The factor depends on unfiltered load and changes to completely rely on MAF substitute with rising load.
This is done to provide a stable load reading for the VANOS to prevent it from moving too much back and forth when the load is rapidly climbing.
- ip_fac_maf_sub_ivvt__maf_sub_diag - Measured load weighting factor for maf_ivvt filtering
- ip_maf_1_diag__n__tps_av - MAF diagnosis table used as a MAF substitute if there is a MAF Sensor error
To make real VANOS load as accurate as possible you can either increase the factor towards 1.0 or fine tune the MAF substitute table (the prefered way).
For that you have to datalog unfiltered load, accelerator pedal value and engine speed. A good side effect of this will be that the engine runs better with a defective MAF sensor.
Extending Load Filtration For Forced Induction
When you install a turbo- or super charger the amount of air entering the cylinder will increase tremendously and the ECU will operate off the tables.
Since the ECU is not able to extrapolate values, you will never exceed ~823mg/str engine load with an M54B30 calibration because thats the highest value configured in the valve overlap tables that can be reached wide open throttle.
To make the MAP calculation and VO compensation able to handle higher pressure values than 1250hPa we have to extrapolate said tables on our own.
You can take following values as a guidance that were proved working in several boosted applications or use our prepared an Excel sheet to extrapolate your own tables: File:Load Filtration Table Extrapolation.zip
Please note that this is only an example, but logging showed a perfectly calculated MAP value that matched measured MAP under all circumstances.
After houndred kilometers of logging data, we never experienced a measured pressure of under ~150hPa so it can be considered safe to shift the tables and axis values up to clear the last row for expected pressure.
Another idea that came up recently, all the M50 manifold conversions should take a look at the Alpina B3S binary, this manifold is pretty similar and is pre-calculated from Alpina.
Injection
The MS43 fuel injection maps are based on engine load over engine speed and the lookup value is injection time in miliseconds.
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.
There are a lot of blending factors, enrichments and also enleanments involved to calculate the final injection time. The following tables are the most important ones.
- ip_tipr_cst__tco - Pre cold start injection time basic value
- ip_ti_cst__n__tco - Cranking injection time basic value
- ip_tib__n__maf - Basic injection time under VANOS fault condition
Without any active VANOS fault codes the engine interpolates between the cold and warm injection tables. There are individual tables for each cylinder bank.
- ip_ti_tco_1_is_ivvt__n__maf - Cold engine injection time used during idle
- ip_ti_tco_1_pl_ivvt_1__n__maf - Cold engine injection time used for bank 1 during part load
- ip_ti_tco_1_pl_ivvt_2__n__maf - Cold engine injection time used for bank 2 during part load
- ip_ti_tco_2_is_ivvt__n__maf - Warm engine injection time used during idle
- ip_ti_tco_2_pl_ivvt_1__n__maf - Warm engine injection time used for bank 1 during part load
- ip_ti_tco_2_pl_ivvt_2__n__maf - Warm engine injection time used for bank 2 during part load
Blending between cold and warm injection maps is done by the following factor tables. Both tables are engine temperature over egnine temperatur at engine start.
- ip_fac_is_ivvt__tco__tco_st - Weighting factor for blending between idle speed injection tables
- ip_fac_pl_ivvt__tco__tco_st - Weighting factor for blending between part load injection tables
The full load enrichment ip_ti_fl is a multiplier of the part load calculations and added to them respectively. Further explaination is located in the full load section.
- ip_ti_fast_wf_thd_min__tco
- ip_ti_slow_wf_thd_min__tco
There is a fuel enleanment ip_ti_cat_var__n__maf when the c_conf_cat variant has learned CATV and full load condition inactive, so you might want to zero it out to prevent the engine going lean.
Maximum Duty Cycle
The maximum duty cycle describes the maximum opening time for an injector at a specific engine speed.
The engine speed is really important here, because the faster the engine spins, the less time there is to inject fuel into the cylinders.
When tuning the engines injection tables, especially in the higher load areas, keep in mind that there are additional enrich- and enleanments applied to the specified injection time.
These adjustments require some headroom on top of that value to work correctly and can be life saving regarding engine health.
Often a maximum duty cycle of 90% is sufficient for the safety features and the injectors to work as intended. When going higher we advise to think about upgrading to a higher flowing set of injectors.
Full load enrichment should be included, since depending on the target lambda it enriches the mixture more than 10%.
To make things easier we include the following Excel sheet: File:Maximum Injection Time Calculator.zip
You can easily check your fuel tables with this calculator, just load the engine speed axis, the full load enrichment factor and your desired duty circle into the grey areas and compare the values.
Note: The table shows the theorethical maximum. As long as your injection time stays below this, you are fine.
Aftermarket Injector Scaling
Changing the fuel injectors will be needed at some point when you change your engines aspiration to forced induction, therefore some constants and tables need to be adjusted.
To find a suitable baseline for your new injestion tables you will have to calculate the volume flow difference between the stock and your new injectors.
By dividing the flow rate of the old injectors by the flow rate of the new ones at the same fuel pressure you end up with a scaling factor.
You can use the injection time multiplier of the MS43s application system that is able to adjust every single cylinder injection duration with a factor t_ti_as_[cyl].
Playing with these six constants is much easier than always changing all the injection tables.
Nevertheless, once you've found a suitable factor for your injectors, apply it to the fuel tables directly and return to factor 1.0, because the application system will NOT alter the injection time reported by the MS43s logging routine.
Additionally you must adjust the following injector specific values:
- c_ti_min_iv - Minimum injection time
- ip_ti_add_dly__vb - Injector dead time correction with battery voltage compensation
Go here for a list of suitable fuel injectors and their deadtimes.
Correcting Fuel Consumption Gauge
When changing injectors you will discover that the fuel consumption reading on your cluster and other monitoring apps is off.
The table ip_fco_map_cor__pq_main_col handles injection value reporting towards the cluster over CAN bus.
For example: You've lowered your fueling tables by MULTIPLIYING them with 0.46, you must DIVIDE the mentioned table by 0.46 to fix readings.
Fine tuning should be made in the secret menu of your cluster (+- 25%). This is excplained here under "Test 20" INFO: E46 Instrument Cluster Test
Upgraded Fuel Pumps
Under some circumstances like a forced induction conversion the OEM fuel pump can't deliver enough fuel to the engine and needs to be upgraded.
The MS43 has two time values (in seconds) for controlling the electronic fuel pump relay before starting and after stopping the engine:
- c_t_efp_prev - Time the electronic fuel pump relay is enabled after ignition turned on
- c_t_efp - Time delay to disable the electric fuel pump relay after ignition turned off
Slightly rising these values may eliminate starting issues.
Tip: Some aftermarket fuel pumps don't come with an integrated check valve end therefor let the fuel flow back into the tank once the engine is turned off.
If this is the case consider adding a check valve right after the pump to keep stock-like cranking behaviour.
Ignition
The MS43 uses many different ignition maps depending on the engine state and quality of fuel used.
Like the injection maps, they are also based on engine load over engine speed but obviously the lookup is ignition timing in °BTDC (degrees before top dead center).
- ip_iga_ron_91_pl_ivvt__n__maf - Target ignition angle for RON91 during part and full load
- ip_iga_ron_98_pl_ivvt__n__maf - Target ignition angle for RON98 during part and full load
ip_iga_ron_98_pl_ivvt__n__maf 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.
VANOS
This section contains information on how the dual VANOS system is actuated by the MS43 and how to modify it. Both, intake and exhaust camshaft can be set independently in relation to the crankshaft.
The VANOS system uses engine oil pressure to control a set of gears at the end of each camshaft. The goal of the VANOS is to optimize emissions, produce better torque at low engine speeds and have more top end power.
Even though the variation of °CRK is pretty limited, it can be used to compensate for different intakes, different camshafts and even forced induction application may be benefitting from perfectly tweaked camshafts.
The main maps used for intake camshaft are:
cold engine
- ip_cam_sp_tco_1_in_is__n__maf_ivvt
- ip_cam_sp_tco_1_in_pl__n__maf_ivvt
- ip_cam_sp_tco_1_in_fl__n
warm engine
- ip_cam_sp_tco_2_in_is__n__maf_ivvt
- ip_cam_sp_tco_2_in_pl__n__maf_ivvt
- 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_ivvt
- ip_cam_sp_tco_1_ex_pl__n__maf_ivvt
- ip_cam_sp_tco_1_ex_fl__n
warm engine
- ip_cam_sp_tco_2_ex_is__n__maf_ivvt
- ip_cam_sp_tco_2_ex_pl__n__maf_ivvt
- 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 for little extra midrange power
Insert the following tables into the desired part-load map where you need the effect ( part-load cold / part-load warm / both).
Exhaust cam setpoint part-load | Intake cam setpoint part-load | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Info
For stock engine with stock exhaust and intake flow, above VANOS tune works best.
For a modded engine, or stock with free flowing exhaust and cold air intake, valve overlap can help increase volumetric efficiency at higher engine speeds (above ~4000rpm), which results in more power.
Taking as a base M54B30 engine with intake cam 126° for max, and 86° for min ; exhaust cam -105° for max and -80° for min
126° represents intake cam in its max retard form, and 86° in its max advance position
-105° represents exhaust cam in its max advance position, and -80° in its max retard stage
General rule for overlap :
- Advancing both cams - more low end torque and less top end power
- Retarding both cams - less low end torque and more top end power
Tip for full load VANOS table: Begin from low rpm with max number for your cam (intake 126° , exhaust -105°) and progressively reduce number until you reach 4000rpm and lowest cam number (intake 86,exhaust -80)
From 4000rpm upwards, use inverse technique, start to rise again numbers, progressively. (every engine responds different by exhaust config) Test combinations until you are happy.
Also, do changes for intake only, leave exhaust alone if you are on stock exhaust manifold.
note Theoreticaly, there is no risk of damaging the engine (valve hits piston) if you stay within specified range for your particular cams. (m54b30 intake 126/86 ,exhaust -105/-80)
Drive-By-Wire
This section contains information on how the Drive-By-Wire system is controlled by the DME and how it can be modified.
Drivers Wish Tables
The Drive-By-Wire system is setup so that the ecu uses both the throttle valve and the idle control valve to control how much air is going into the engine.
- ip_tps_sp_pvs is used by the ecu to decide how much it should open the throttle for a given pvs input.
- ip_isapwm_pvs is used by the ecu to decide how much idle control valve duty cycle should be used for a given pvs input.
If we look at these tables side by side we can see that a stock ecu is setup to primarily use the idle control valve to control airflow when the pvs input is in the range between 0° and 15° and when the pvs input is higher the ecu will switch over to the throttle valve.
Drivers Wish Input Correction
To provide a smooth driving experience during part load the ecu actively controls how fast the drivers requested pvs input can increase.
ip_pvs_cor_max_rpl_[gear] is used by the ecu to decide if the drivers requested pvs input increase should be limited. The values in the table is the lower limit and the X-axis is the upper limit. If the drivers requested pvs input is between these values then the ecu will start limiting the pvs input increase.
If the following conditions are met then the ecu will not try to start limiting the pvs input increase:
- The driver requested pvs input is decreasing.
- The driver requested pvs input change gradient is larger than c_pvs_grd_max_rpl(59,99° pvs).
- The clutch is pressed.
- The driver requested pvs input is higher than c_pvs_cor_max_rpl(42,5° PVS)
When the ecu starts limiting the pvs input increase the pvs input will be increased by the value taken from ip_pvs_cor_rpl_lgrd_[gear] until the following conditions are met:
- The limitation duration specified in ip_t_pvs_cor_rpl_[gear] has expired.
- The driver requested pvs input change gradient is larger than c_pvs_grd_max_rpl(59,99° pvs).
- The limited pvs input is larger than the driver requested pvs input.
If any of those conditions are met then the ecu will use the driver requested pvs input and will not start limiting the pvs input again until the time specified in c_t_dly_pvs_cor_rpl(0,2s) has elapsed.
To disable the drivers wish input correction function set either c_pvs_cor_max_rpl or c_pvs_grd_max_rpl to zero.
Throttle Request Correction
To provide a smooth driving experience during low throttle openings the ecu will control how fast the throttle setpoint can change depending on the current engine load.
ip_tps_req_ltc_min_[gear] is used by the ecu to decide if the throttle setpoint change should be limited. If the requested throttle setpoint is lower than the value in the table the throttle setpoint change will be limited.
If the following conditions are met then the ecu will not try to start limiting the throttle setpoint change:
- The clutch is pressed.
- The requested throttle setpoint is lower than c_tps_req_ltc_min(0.248° TPS)
When the ecu starts limiting the pvs input the throttle setpoint will be increased by the value taken from ip_tps_req_ltc_lgrd_[gear] until the following conditions are met:
- The limitation duration specified in ip_t_tps_req_ltc_max_[gear] has expired.
- The requested throttle setpoint is larger or equal to ip_tps_req_ltc_min_[gear].
- The clutch is pressed.
If any of those conditions are met then the ecu will use the requested throttle setpoint and will not start limiting the throttle setpoint again until the time specified in c_t_dly_tps_req_ltc(0,85s) has elapsed.
The id_tps_req_ltc_gear_[gearbox] tables controls if the throttle request correction should be active depending on the current gear. To disable the throttle request correction function set the id_tps_req_ltc_gear_[gearbox] tables to zero.
Torque
During engine operation the ecu will try to estimate the current torque being produced by using several static torque models.
Torque Models:
- ip_tqi_pvs__n__pvs - Indexed engine torque (PVS)
- ip_tqi_maf__n__maf - Indexed engine torque (MAF)
- ip_tqfr__n__maf - Frictional torque losses (MAF)
Torque Management
Based on the static models the ecu will ensure that the engine torque does not exceed the maximum allowed torque specified in ip_tq_max__n__pvs_cor_rpl. As the torque models are setup for a stock engine they can produce unexpected reductions in power if the engine is modified, to disable the function set the torque values in ip_tq_max__n__pvs_cor_rpl to 65535 Nm.
The ecu also have a function to reduce torque in first gear (In production vehicles this was only used by the E53 X5) The function will be activated if c_conf_tq_lim_gear is set to one and when active the ecu will ensure that the engine torque does not exceed c_tq_max_gear while in first gear.
Idlespeed
This section contains information on how the idle is controlled by the DME and how it can be modified.
MS43 has a few different tables that affect the nominal idle speed
- ip_n_sp_is Nominal idle speed without additional load on the engine.
- ip_dri_n_sp_is Nominal idle speed with drive engaged for AT gearbox.
- ip_acin_n_sp_is Nominal idle speed with air conditioner switched on.
- ip_dri_acin_n_sp_is 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 Nominal idle speed offset for battery charge state.
- ip_n_sp_add_heat Nominal idle speed offset with catalyst heating function active.
In addition, the idle speed change rate can be changed with c_n_sp_lgrd_is.
Full Load Detection
On MS43 we have an accelerator pedal angle (°PVS) dependent full load detection.
In full load operation (ES = FL) the engine will leave stoichiometric combustion and enriches the injection for preventing knock and maximum power production.
The whole lambda learning adaption from the O2 sensors is stopped while the engine operates in this state. Already learned long term fuel trims (LTFTs) will still be applied.
The engine will never enter full load state unless the engine speed is greater than c_n_min_fl which is the lower limit for FL detection. Setting this to 8160 rpm will disable full load state completely.
Additionally, either one of the two following conditions has to be fulfilled to activate full load detection.
- c_vs_min_fl - Minimum vehicle speed for full load detection after engine start if c_tco_min_fl has not been exceeded.
- c_tco_min_fl - Minimum coolant temperature for full load detection after engine start if c_vs_min_fl has not been exceeded.
Finally, once the accelerator pedal angles defined in the following tables are exceeded, the respective function will enter the full load state.
- id_pvs_fl__n - Accelerator pedal position threshold for full load detection - Injection
- id_pvs_fl_ivvt__n - Accelerator pedal position threshold for full load detection - VANOS
- id_pvs_fl_vim__n_vim - Accelerator pedal position threshold for full load detection - DISA
In the full load state, the MS43 changes VANOS and DISA to seperate tables, but for injection it adds a specified amount of fuel.
This leaves us the following tables that actually alter injection, VANOS and DISA behaviour.
- ip_ti_fl__n - Full load enrichment factor for nominal injection time
- ip_cam_sp_tco_1_in_fl__n - Intake camshaft setpoint during full load with cold engine
- ip_cam_sp_tco_1_ex_fl__n - Exhaust camshaft setpoint during full load with cold engine
- ip_cam_sp_tco_2_in_fl__n - Intake camshaft setpoint during full load with warm engine
- ip_cam_sp_tco_2_ex_fl__n - Exhaust camshaft setpoint during full load with warm engine
- id_vim_fl__n_vim - Variable intake manifold (DISA) activation setpoints at full load
There is a gearbox dependant timer that configures the maximum spendable time in seconds at full load condition per gear.
If this timer has counted down to zero, the engine leaves full load operating state on its own. You will have to lift the pedal below the configured minimum position and re-enter full load.
- id_t_max_fl__gear - Maximum time in the full load state. Manual transmission.
- id_t_max_fl_at__gear - Maximum time in the full load state. Automatic transmission.
You can zero these tables to bypass the timer.
To extract every last bit of power out of your engine, there is c_pvs_fl_accin that handles the deactivation of the AC compressor when exceding the configured value.
Tip: To make tuning at full load (and wide open throttle) operation easier, you can change the conversion factor of the ip_ti_fl__n table to display lamba or AFR depending on your preference.
This is only applicable if your part-load table is tuned to stoichiometric combustion (lambda 1.0).
Title | Conversion | Low Range | High Range |
---|---|---|---|
ip_ti_fl__n (Lambda) | 1-(0.0039058823*X-0.5) | 0.500 | 1.500 |
ip_ti_fl__n (AFR Gas) | 14.7-(14.7*(0.0039058823*X-0.5)) | 7.409 | 22.050 |
Warning: Keep in mind, that all full load injection edits rely on a proper part load fueling table.
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:
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
Engine Coolant Temperature Control
The M54 engine family is fitted with an electronic thermostat that the ECU can control to alter the engine coolant temperature.
By altering these values we can change how hot the engine will run in different conditions.
E-thermostat minimum conditions
- c_tam_min_ect - Minimum ambient temperature threshold for e-thermostat activation
- c_tia_min_ect - Minimum intake air temperature threshold for e-thermostat activation
- c_toil_min_ect - Minimum oil temperature threshold for e-thermostat activation
- c_tco_min_ect - Minimum coolant temperature threshold for full energization of the e-thermostat
E-thermostat maximum conditions
- c_tia_max_ect - Maximum intake air temperature threshold. When exceeded target coolant temperature will be set to c_tco_sp_tia_max
- c_tco_ex_max_ect - Maximum radiator outlet temperature threshold. When exceeded target coolant temperature will be set to c_tco_sp_tco_ex_max
- c_toil_max_ect - Maximum oil temperature threshold. When exceeded target coolant temperature will be set to c_tco_sp_tia_max
E-thermostat target coolant temperature
- c_tco_sp_toil_min - Target coolant temperature until the thresholds set by c_toil_min_ect, c_tam_min_ect, and c_tia_min_ect are exceeded.
- c_tco_sp_tco_ex_max - Target coolant temperature if c_tco_ex_max_ect is exceeded
- c_tco_sp_tia_max - Target coolant temperature if c_toil_max_ect or c_tia_max_ect are exceeded
- c_tco_bol_ect - Target coolant temperature if an external low coolant temperature request has been received
E-thermostat target coolant temperatures maps
- id_tco_sp_ect__n__maf_sub - Target coolant temperature when c_toil_min_ect, c_tam_min_ect, and c_tia_min_ect are exceeded - AC off
- id_tco_sp_ect_acin__n__maf_sub - Target coolant temperature Target coolant temperature when c_toil_min_ect, c_tam_min_ect, and c_tia_min_ect are exceeded - AC on
E-thermostat regulations
- ip_ectpwm_i__tco_dif - e-thermostat I component
- ip_ectpwm_p__tco_dif - e-thermostat P component
- id_ectpwm_add__n__tco_sp - Required e-thermostat duty cycle to achieve coolant temperature setpoint
PS : some of you may experience loss of power setting coolant temperature too low on M54B30. Seems that those engines likes higher temp for optimal run.
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 x 16 lookup table, that can also be shown as 1 x 256 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.
Ford or Bosch slot type sensors are often used in high horse power blow through configurations for turbocharging which the BMW OEM sensors are not well suited for.
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 with a patch that has undergone extensivetesting, but the maximum engine load is still limited to 1389mg/stroke.
We are working hard to get around this limit as soon as possible and beta testing showed great results with a limit of 2778mg/stroke.
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.
- id_maf_tab__v_maf_1__v_maf_2 - MAF sensor definition. 1x256
- id_maf_tab - MAF sensor definition. 16x16
Engine Speed Limiter
The MS43 has two gear dependant engine speed limiters, a softlimiter and a hardlimiter for each gearbox type (manual or automatic transmission).
The softlimiter works by cutting single injectors based on fuelcut pattern, whereas the hardlimiter immediately cuts off all cylinders.
- id_n_max_at: softlimiter for AT gearbox
- id_n_max_mt: softlimiter for MT gearbox
- id_n_max_max_at: hardlimiter for AT 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 receives the current vehicle speed (_vs) via CAN bus from the rear right speed sensor signal of the ABS control unit. This is new and differs from older chassis that got it from a sensor inside the differential.
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
For aggressive hard cut reduce the limiter hysteresis to:
- c_n_max_hys 32 to 0
- c_n_max_hys_max 320 to 32
Vehicle Speed Limiter
The Siemens MS43 has several vehicle speed limiter for different situations.
The maximum vehicle speed limiter is depending on the transmission type and only becomes active when the engine speed threshold is passed.
- c_vs_max_at_1 - Applicable maximum speed automatic transmission
- c_vs_max_mt_1 - Applicable maximum speed manual transmission
- c_n_min_vs_max - Engine speed threshold for activating the speed limitation
Setting the c_vs_max_* limiter to 255km/h won't get rid of the Vmax limit, instead you have to set c_n_min_vs_max to 8160rpm.
Also there is a vehicle speed limiter if the maximum engine oil temperature is reached
- c_vs_max_toil_max - Maximum speed when exceeding the max. oil temperature (c_toil_max)
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 to your engine.
Catalyst Overheating Prevention
- ip_maf_min_cop__n__iga_dif - MAF threshold for catalyst overheating prevention function
- ip_maf_min_cop_ron__n__iga_dif - MAF threshold for catalyst overheating prevention function with bad fuel quality
To disable catalyst overheating prevention (COP) set ip_maf_min_cop__n__iga_dif and ip_maf_min_cop_ron__n__iga_dif to 1389mg/stroke.
CAT Heating
- id_t_ch_ti_cat_var__tco_st - Duration after start to switch on the injection time correction for catalyst heating function with cat-preparation (c_conf_cat 0 or 1)
- ip_t_ch_ti__tco_st__km_ctr - Duration after start to switch on the injection time correction for catalyst heating function
- id_t_iga_ch_cat_var__tco_st - Duration after start to switch on the ignition angle intervention for catalyst heating function with cat-preparation (c_conf_cat 0 or 1)
- ip_t_iga_ch__tco_st__km_ctr - Duration after start to switch on the ignition angle intervention for catalyst heating function
Set them to "0" to disable catalyst heating injection and ignition altering.
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
Please look here for the old 430056 functions that were published by Daniel.F back in 2015: Siemens_MS43_Old_Stuff
Here are some handy mods when going forced induction Forced_Induction_Upgrades
Idle Control Valve Delete
Removing the idle control valve (ICV) / idle speed actuator (ISA) is possible due to the motorized throttle body the M54 engine uses.
Disconnect the idle control valve connector and either remove the idle control valve and plug the hole in the intake manifold (preferred) or use something to seal the idle control valve air tight.
If you want to machine a matching plug, use this template: ISA_Delete_Plug.pdf
The most important table that makes the ICV delete possible is the ip_pvs_isa_isapwm table. This table is used by the ecu to decide how much pvs input should be added to the drivers requested pvs input for a given idle control valve duty cycle.
In a stock engine this table is used to extend the idle control valve duty cycle so when the idle control valve duty cycle goes above 100% the throttle will start to open to deliver more air into the engine. So when we remove the idle control valve we re-scale this table to emulate the idle control valve airflow with different pvs inputs. These pvs inputs are in the end translated to a throttle opening by the ip_tps_sp_pvs table.
If we take an example from the ICV delete values above we will see in the ip_pvs_isa_isapwm table that at 17.5% idle control valve duty cycle the ecu will add 7.430° of pvs input to the drivers requested pvs input and if we take a look in the ip_tps_sp_pvs table we will see that around idle speed this pvs input will result in a throttle opening of around 2.999°. As we can see the values in ip_pvs_isa_isapwm and ip_tps_sp_pvs are tightly connected so if the ip_tps_sp_pvs table is modified then the ip_pvs_isa_isapwm table will also have to be modified accordingly to maintain a stable idle.
Copyable ICV Delete Tables M54B30 ONLY!.
The ip_pvs_isa_isapwm values above are created for a M54B30 engine so the values may need to be modified to get a stable idle with a M54B22 or M54B25 engine as these engines have a smaller throttle body, a good starting point would be to increase the ip_pvs_isa_isapwm table values with the opening area percentage difference between the M54B30 throttle body and the M54B22/M54B25 throttle body.
This modification modifies a monitoring table so the calibration addition checksum needs to be corrected or disabled after applying the changes. Check here for more information about checksums.
Exhaust Pop Modifications
When tuning for exhaust pops there are two approaches that can be taken.
Toggleable exhaust pops
This approach disables the trailing throttle fuel cut by raising the minimum engine speed threshold for trailing throttle fuel cut to an engine speed that the engine can't reach, this will produce continuous exhaust pops as soon as the throttle is lifted.
As the MS43 has two separate tables for when the AC is on or off we can use that logic to for example only activate exhaust pops when the AC is on.
- ip_n_min_puc__tco - Minimum engine speed for trailing throttle fuel cut activation with AC off
- ip_n_min_accin_puc__tco - Minimum engine speed for trailing throttle fuel cut activation with AC on
To tune the intensity of the exhaust pops the following ignition tables can be used.
- ip_iga_pu__n__tco - Target ignition angle in case of trailing throttle
- ip_iga_puc__n__tco - Target ignition angle in case of trailing throttle fuel cut-off
- ip_iga_accin_puc__n__tco - Target ignition angle in case of trailing throttle fuel cut-off with AC on
Timered exhaust pops
This approach uses a built in timer function in the MS43 which delays the activation of the trailing throttle fuel cut by a set amount of time.
With this approach it's possible to achieve a set amount of pops before the trailing throttle fuel cut is activated.
- c_t_puc_deacc_vs - Delay before activating trailing throttle fuel cut when car is stationary
- ip_t_puc_deacc_1__n__maf_mmv - Delay before activating trailing throttle fuel cut. First gear
- ip_t_puc_deacc_2__n__maf_mmv - Delay before activating trailing throttle fuel cut. Second gear
- ip_t_puc_deacc_3__n__maf_mmv - Delay before activating trailing throttle fuel cut. Third gear
- ip_t_puc_deacc_4__n__maf_mmv - Delay before activating trailing throttle fuel cut. Forth gear
- ip_t_puc_deacc_5__n__maf_mmv - Delay before activating trailing throttle fuel cut. Fifth gear
To tune the intensity of the exhaust pops the same tables as the toggleable exhaust pops approach can be used.
Both approaches can also be combined in the following way to have short pops with AC off and continous pops when the AC is on.
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:
The biggest valve overlap will be achieved when using the lowest adjustable value on the intake side (80° respectively 86°) and the lowest adjustable value on the exhaust side (-80°)
A good starting point for further optimization could be:
M Cluster LED Control
After swapping in an M3 cluster into a E46 or M5 cluster into E39, 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 shiftlights behaviour.
Following maps are used:
- id_icl_toil_led__n - LEDs used at the given oil tempetature for the warmup light feature
- ldpm_toil_led - Oil temperatur axis to adjust the switch points of the led array for the warmup light feature
- id_icl_led__n - LEDs used at the given enginespeed for the shift light feature
- ldpm_toil_led - Engine Speed axis to adjust the switch points of the led array for the shift light feature
Explanation for the decimal values used (M3):
- 112 - all LEDs lit
- 96 - 4500 and upwards
- 80 - 5000 and upwards
- 64 - 5500 and upwards
- 48 - 6000 and upwards
- 32 - 6500 and upwards
- 16 - 7000 and upwards
- 00 - 7500 lit
- 02 - oil warning LED yellow
- 04 - coolant warning LED
Explanation for the decimal values used (M5):
- 64 - 4000 and upwards
- 48 - 4500 and upwards
- 32 - 5000 and upwards
- 16 - 5500 and upwards
- 00 - 6500 lit
- 01 - oil warning LED yellow
- 04 - coolant warning LED
Download the warmup and shiftlights patch for TunerPro depending on your software version:
- 430056: Siemens_MS43_MS430056_Cluster_LED_Mod_v2.zip
- 430066: Siemens_MS43_MS430066_Cluster_LED_Mod.zip
Use with 512kByte file only. Checksum correction required!
Map Reduction
You can reduce the total amount of maps you have to tune in MS43 with a very simple trick without losing map size like with the "fewmaps" files.
This is done by forcing the MS43 into using the cold engine injection, ignition and VANOS maps for cold enigne only.
This is done by setting all the transition tables responsible for changing between cold and warm engine state to "1.0":
- ip_fac_is_ivvt
- ip_fac_pl_ivvt
- ip_fac_cam_sp_in_is
- ip_fac_cam_sp_ex_is
- ip_fac_cam_sp_in_pl
- ip_fac_cam_sp_ex_pl
That will leave us with the following maps during normal engine operation:
- Injection
- Idle Speed: ip_ti_tco_1_is_ivvt
- Part Load: ip_ti_tco_1_pl_ivvt_1 & ip_ti_tco_1_pl_ivvt_2
- Ignition
- Idle Speed: ip_iga_tco_1_is_ivvt
- Part / Full Load: ip_iga_tco_1_pl_ivvt
- VANOS
- Idle Speed: ip_cam_sp_tco_1_in_is & ip_cam_sp_tco_1_ex_is
- Part Load: ip_cam_sp_tco_1_in_pl & ip_cam_sp_tco_1_ex_pl
- Full Load: ip_cam_sp_tco_1_in_fl & ip_cam_sp_tco_1_ex_fl
ATTENTION: Be aware that the following tables can be used if there is an active error in the ECU:
- ip_tib__n__maf
- ip_igab_is__n__maf
- ip_igab__n__maf