Advertising:
MS43X Custom Firmware: Difference between revisions
(2 intermediate revisions by the same user not shown) | |||
Line 22: | Line 22: | ||
*'''XDF''': [[:File:Siemens_MS43_MS43X001_64K.xdf|Siemens MS43 MS43X001 Partial [64kb]]] | *'''XDF''': [[:File:Siemens_MS43_MS43X001_64K.xdf|Siemens MS43 MS43X001 Partial [64kb]]] | ||
*'''XDF''': [[:File:Siemens_MS43_MS43X001_512K.xdf|Siemens MS43 MS43X001 Full [512kb]]] | *'''XDF''': [[:File:Siemens_MS43_MS43X001_512K.xdf|Siemens MS43 MS43X001 Full [512kb]]] | ||
*'''ADX''': [[:File:Siemens_MS43_MS43X001_Extended_Logging.adx| | *'''ADX''': [[:File:Siemens_MS43_MS43X001_Extended_Logging.adx|Siemens MS43 MS43X001 Extended Logging]] | ||
We will only reference the newest version here, for legacy versions check the download archive: [[MS43X Firmware Archive]] | We will only reference the newest version here, for legacy versions check the download archive: [[MS43X Firmware Archive]] | ||
Line 99: | Line 99: | ||
Credit where credit is due: Big thanks to prj from nefmoto, who generously published his assembler code over at [https://github.com/prj/C167BoostControl Github]. This saved a lot of time. | Credit where credit is due: Big thanks to prj from nefmoto, who generously published his assembler code over at [https://github.com/prj/C167BoostControl Github]. This saved a lot of time. | ||
== Electric Cooling Fan IAT Dependancy == | |||
Minimum firmware version: '''MS43X001''' | |||
MS4X introduces intake air temperature dependancy for the electronic cooling fan control routine. | |||
This is extremely useful for forced induction builds with an air to water intercooler system as these system heat up quite fast when stationary without any air flow. | |||
By default this table is disabled (set to "0.00"). | |||
*'''ip_n_ecf_tia__tia''' - IAT dependancy for ECF control routine | |||
== Flex Fuel == | == Flex Fuel == | ||
Line 120: | Line 131: | ||
'''Important:''' A factor of "0.00" means full ''_ron98'' value useage and a factor of "1.00" means full ''_e85'' value useage. | '''Important:''' A factor of "0.00" means full ''_ron98'' value useage and a factor of "1.00" means full ''_e85'' value useage. | ||
== Immobiliser Delete== | |||
Minimum firmware version: '''MS43X001''' | |||
The imobiliser delete is now a config switch and does no longer need manual patching. | |||
*'''c_conf_imob''' - Configuration switch for immobiliser control (same as c_abc_inc_tout_imob) | |||
== Knock Light == | == Knock Light == |
Latest revision as of 20:09, 27 March 2024
MS43X is a custom firmware that's based on MS430069, but with several new and some extended functions. Summing up it can be seen as the successor of patchlists for 430069 and will include all future feature updates. We decided to go this route because of the raising difficulty of adding new features without butchering existing ones and optimization of execution time.
Although this was very long awaited we decided to put it into excessive testing that took its time. Anyway, we are very proud to present our own firmware for a proper MAP integration and more, because it's defiantly more than just a speed density or MAP conversion, but see for yourself :)
Overview
All the basics and resources will be explained here. For a more detailed explanation check out the sub views.
Downloads
The main difference to existing firmwares is that we will no longer be publishing patchlists, because that left room for problems and lead to frustrating results in the past when used incorrectly. Every new MS43X firmware release will get new definition files that will come bundled with it.
Firmware Files
- E36/7 Z3-series
- soon
- E39 5-series
- soon
- E46 3-series
- soon
- E53 X5-series
- soon
Definition Files
- XDF: Siemens MS43 MS43X001 Partial [64kb]
- XDF: Siemens MS43 MS43X001 Full [512kb]
- ADX: Siemens MS43 MS43X001 Extended Logging
We will only reference the newest version here, for legacy versions check the download archive: MS43X Firmware Archive
Changelog
Make sure to check out the latest version.
Latest Version: MS43X0001 (TBD 2024)
MS43X001
- Initial release firmware
Hardware Prerequisites
In order to run this custom firmware its necessary to obey some simple rules regarding the wiring.
We decided to make the input and output configuration fixed.
Designated I/O
- Secondary Air Mass Air Flow Sensor (SA_MAF) - manifold air pressure sensor input
Main Features
Like in normal MS43 we quickly explain all the features that we touched and changed for a proper working speed density conversion.
Load Acquisition
One of the most impacting changes with MS43X is the completely overhauled engine load acquisition. We simplified the stock engine load calculation used in the MS43 to make it tuneable in the same way as the speed density implementation commonly used in standalone ECUs and to top it all of you can also decide between using a MAF sensor, MAP sensor or Alpha/N as your primary load input.
- c_conf_load - Load input configuration (0: MAP sensor, 1: MAF sensor, 2: Alpha/N)
- c_eng_disp - Engine displacement in cubic decimeters
MAF and MAP sensors utilize different 0-5V inputs on the ECU, so you can define different thresholds for the signal error detection. This also means that you can have both a MAF and a MAP sensor connected at the same time and switch between them by changing c_conf_load in the calibration file.
MAP Sensor Variables
- c_map_diag_ini - Initializations value for manifold air pressure sensor diagnostics
- c_map_min_diag - Minimum manifold air pressure for short to ground diagnostics
- c_map_max_diag - Maximum manifold air pressure for short to positive diagnostics
Volumetric Efficiency
Something that is different from the usual speed density implementation in standalone ECUs is that instead of a single VE table we have eight. This is necessary because the VANOS can influence engine efficiency based on valve overlap.
Injection
Ignition
New Features
Here we list features that were never available on a standard MS43. Make sure to check the minimum version needed for the feature to be available.
Boost Controller
Minimum firmware version: MS43X001
MS43X features a fully configurable boost (by gear) controller with safety function to counter overboosting. This can either be run in open loop fixed PWM output mode, or closed loop with MAP feedback and a PID algorythm.
MS43's hardware has a spare output we decided to give a meaning for boost control. Its a low-side switched PWM output that is capable of operating in the range of 10%-90% duty circle and can be loaded with a 1 amp load.
- c_conf_bc - Configuration switch - Boost controller configuration (0: Disabled, 1: Fixed duty cycle operation, 2: Closed loop operation)
- c_bc_req_map_thr - Minimum manifold pressure enabling closed loop operation, should be at around spring cracking pressure
- c_bc_pwm_min - Minimum allowed duty cycle
- c_bc_pwm_max - Maximum allowed duty cycle
- c_bc_i_max_thr - Manifold pressure target error threshold for switching from dynamic closed loop operation to steady state closed loop operation
Also there is a safety threshold you can use to prevent overboosting including a release hysteresis where the boost controller enters normal operation mode again:
- c_bc_map_max - Manifold pressure threshold for activation of boost cut
- c_bc_map_max_hys - Boost cut deactivation hysteresis
In case c_conf_bc is set to "1" the boost controller will operate in fixed duty circle output without any feedback or in other words "open loop":
- ip_bc_fixed_pwm__n - Duty cycle used during fixed duty cycle operation
In the closed loop setting it will have a complete PID regulator and a pre control for targetted boost level:
- ip_bc_pwm_p__n - Boost controller P term
- ip_bc_pwm_i__n - Boost controller I term
- ip_bc_pwm_d__n__map_err - Boost controller D term
- ip_bc_pwm_pilot__map_req__n - Pre-control duty cycle for closed loop operation
The target boost can be requested individually depending on engine speed and current gear making it a fancy boost-by-gear controller:
- ip_bc_map_req__gear__n - Requested manifold pressure
- ip_bc_map_req_fac__pvs_av - Requested manifold pressure accelerator pedal input correction
Credit where credit is due: Big thanks to prj from nefmoto, who generously published his assembler code over at Github. This saved a lot of time.
Electric Cooling Fan IAT Dependancy
Minimum firmware version: MS43X001
MS4X introduces intake air temperature dependancy for the electronic cooling fan control routine.
This is extremely useful for forced induction builds with an air to water intercooler system as these system heat up quite fast when stationary without any air flow.
By default this table is disabled (set to "0.00").
- ip_n_ecf_tia__tia - IAT dependancy for ECF control routine
Flex Fuel
Minimum firmware version: MS43X001
The flex fuel integration makes use of a dedicated 0-5V input signal coming from an ethanol content sensor and or adapter board.
To maintain best safety and ensure sensor diagnostic, there's an operating range to be defined with a lower and an upper limit:
- c_ff_v_min_diag - Minimum flex fuel sensor voltage for short to ground diagnostics
- c_ff_v_max_diag - Maximum flex fuel sensor voltage for short to positive diagnostics
In case of a faulty sensor or if you exceed those limits a flex fuel sensor fault will get triggered and the ECU defaults into the following substitute values:
- c_ff_ti_diag_sub - Flex fuel blending factor substitute in case of sensor fault - Injection
- c_ff_iga_diag_sub - Flex fuel blending factor substitute in case of sensor fault - Ignition
- c_ff_bc_diag_sub - Flex fuel blending factor substitute in case of sensor fault - Boost controller
During normal operation the following blending factors with blend between _ron98 and _e85 values in depending on flex fuel input voltage:
- ip_fac_ff_ti__v_ff - Flex fuel blending factor - Injection
- ip_fac_ff_iga__v_ff - Flex fuel blending factor - Ignition
- ip_fac_ff_bc__v_ff - Flex fuel blending factor - Boost controller
Important: A factor of "0.00" means full _ron98 value useage and a factor of "1.00" means full _e85 value useage.
Immobiliser Delete
Minimum firmware version: MS43X001
The imobiliser delete is now a config switch and does no longer need manual patching.
- c_conf_imob - Configuration switch for immobiliser control (same as c_abc_inc_tout_imob)
Knock Light
Minimum firmware version: MS43X001
Launch Control
Minimum firmware version: MS43X001
M Cluster Support
Minimum firmware version: MS43X001