Advertising:

MS43X Custom Firmware

From MS4X Wiki

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.

Overview

All the basics and resources will be explained here. For a more detailed explaination 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

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 (January 2024)

MS43X001

  • Initial release firmware

Designated I/O

  • Secondary Air Mass Air Flow Sensor (SA_MAF) - manifold air pressure sensor input

Main Features

Load Acquisition

One of the most impacting changes with MS43X is the completely overhauled engine load acquisition. We changed the complicated engine load calculation used in MS43 to aspeed density or volumetric efficiency (VE) based system. This is more commonly used with standalone ECUs and can be tuned just like that. That means you can now decide between a MAF sensor, a 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
Load Acquisition Data

MAF and MAP sensors utilize different 0-5V inputs on the ECU, so you can define different threasholds for the signal error detection.

In theory you can even connect a MAF and a MAP sensor and then switch by just 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 integration in standalones 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

Make sure to check the minimum version included in the function sub page.

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

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.

Launch Control

Minimum firmware version: MS43X001

Knock Light

Minimum firmware version: MS43X001

M Cluster Support

Minimum firmware version: MS43X001