E46 BMW Social Directory E46 FAQ 3-Series Discussion Forums BMW Photo Gallery BMW 3-Series Technical Information E46 Fanatics - The Ultimate BMW Resource BMW Vendors General E46 Forum The Tire Rack's Tire Wheel Forum Forced Induction Forum The Off-Topic The E46 BMW Showroom For Sale, For Trade or Wanting to Buy

Welcome to the E46Fanatics forums. E46Fanatics is the premiere website for BMW 3 series owners around the world with interactive forums, a geographical enthusiast directory, photo galleries, and technical information for BMW enthusiasts.

You are currently viewing our boards as a guest which gives you limited access to view most discussions and access our other features. By joining our free community you will have access to post topics, communicate privately with other members (PM), respond to polls, upload content and access many other special features. Registration is fast, simple and absolutely free so please, join our community today!

If you have any problems with the registration process or your account login, please contact contact us.

Go Back   E46Fanatics > Tuning & Tech > Driveline, Engine & DME Tuning

Driveline, Engine & DME Tuning
Talk about driveline improvements, NA tuning and DME tuning your E46 BMW here. This includes diffs, intakes, exhausts, chips, software and OBD tuning.

Reply
 
Thread Tools Search this Thread Rating: Thread Rating: 3 votes, 5.00 average. Display Modes
Old 07-13-2014, 09:59 AM   #1
daniel_f.
Registered User
 
Join Date: Jul 2011
Location: Germany
Posts: 558
My Ride: 330iCA
Deciphering MS43, an open approach!

Hello guys,

even if i have my last exam next week, numerical mathematics , i´ve taken my time to work on MS43. I´m very happy about the progress i made in the last days and i definately would like to thank Thaniel for his awesome work and help.

Thaniel not only pointed me in the right direction to use *.s28 files, he´s also a big help in converting those damos files.

The biggest problem in deciphering MS43 is the circumstance, that even when using the a2l and the corresponding hex file, most of the maps are somewhat off.

Thats what others must have come to and i think thats the point when most people quit. Maybe most, but not me, as you know i´m literally in love with MS43!

Now as i said, biggest problem i had to, was the offset in almost every map, which is pretty annoying.

Luckily i had the chance to read the ecu from a very special car, some may remember, i took the map-file (64kb) from an Alpina B3S
Now the funny thing is, that particular car was equipped with MS430056, instead of MS430055 which the damos related hex-file is coming from.
And believe me or not, that version fits 100%

Now for understanding what MS43 really does, its essential to know what every map does. Therefore you need the meaning of the abbreviations, a point which is pretty though for non-natives like me.

  • A
  • _abc_ --------------------------------------------
  • _acc_ air conditioning compressor
  • _accin_ Aircon compressor request
  • _accout_ Aircon compressor deactivation
  • _acin_ Aircon activated
  • _ad_ criteria for adaption
  • _add_ lambda adaption additive
  • _afl_ air/fuel-ratio lean
  • _afr_ air/fuel-ratio rich
  • _aj_ anti-jerk
  • _amp_ ambient pressure
  • _as_ application system
  • _ast_ after start
  • _at_ automatic transmission
  • _av_ actual-value

    B
  • _bat_ battery ampere
  • _bls_ brake light switch

    C
  • _cast_ cold, after start
  • _ch_ catalyst heating-condition
  • _cha_bat_ battery charging current
  • _conf_ configuration
  • _cop_ catalyst overheating protection
  • _cor_ correction
  • _cps_ evap system
  • _cppwm_ pwm control of evap solenoid
  • _cr_ ?clutch released?
  • _crlc_ correlation
  • _cru_ cruise control
  • _cs_ clutch switch
  • _cst_ cold start
  • _ctl_ control/intervention
  • _ctr_ counter
  • _cyctr_ cycle-counter

    D
  • _deacc_ deacceleration
  • _dec_ decrement
  • _diag_ diagnose
  • _dif_ difference/differential
  • _dly_ delay
  • _dmtl_ diagnose module tank leakage
  • _dri_ check for "AT" at "Drive" or "Reverse"
  • _dyw_ window for limited dynamic

    E
  • _ecf_ engine cooling fan
  • _ect_ engine coolant thermostat
  • _ef_ exhaust flap
  • _eoi_ end of injection

    F
  • _fac_ lambda adaption multiplicative
  • _fco_ Fuel consumption
  • _fil_ filtered/normalized
  • _fl_ full-load
  • _frq_ frequency

    G
  • _gear_ gear
  • _grd_ gradient
  • _gs_ gear shift

    H
  • _hys_ hysteresis

    I
  • _iga_ ° ignition advance
  • _iga_optm_ ° optimal ignition map
  • _igab_ ° basic ignition map
  • _igcfb_ ° ignition current feedback
  • _inc_ increase
  • _inf_ intercept function
  • _is_ idle-speed/partial load
  • _isapwm_ idle speed actuator
  • _ivvtpwm_ individual variable valve timing

    K
  • _knk_ knock (-control)

    L
  • _lam_ Lambdaintegrator
  • LDP_ Axis descriptor
  • _lgrd_ gradient limitation
  • _lim_ limit
  • _ls_ lambdasensor
  • _ls*_up_ before-cat lambdasensor
  • _ls*_down_ post-cat lambdasensor
  • _lsh_ lambdasensor heater
  • _lshpwm_ pwm controlling of lambdasensor heater

    M
  • _maf_ maf sensor
  • _max_ max limiter
  • _mis_ misfire
  • _mpl_ multiple sparks
  • _mt_ manual transmission
  • _mtcpwm_ pwm control of throttle body
  • _mv_ mean value

    N
  • _n_ engine rpm
  • _nl_ knock circuit noise level

    P
  • _pl_ part-load
  • _plaus_ plausibility
  • _puc_ overrun fuel cut
  • _pste_° ??? ???
  • _pvs_ Acceleration pedal°

    R
  • _r_ resistance, electrical
  • _rest_ restart-condition
  • _rly_ Relay

    S
  • _saf_ secondary airflow
  • _sap_ secondary air pump
  • _sav_ secondary air valve
  • _soi_ start of injection
  • _sp_ set-point
  • _ssg_ SMG gearbox
  • _sum_ switch after x jumps
  • _swi_ switch

    T
  • _tam_ temperature ambient
  • _tco_ coolant temperature
  • _td_ coil dwell time
  • _teg_ temperature exhaust gas
  • _thd_ threshold
  • _tia_ temperature intake
  • _tib_ injection time, basic
  • _tmag_ correlated temp: temp coolant vs temp oil
  • _toil_ temperature oil
  • _tout_ time-out
  • _tps_ throttle position sensor
  • _tq_ torque
  • _tqd_ torque, ?drag?
  • _tqfr_ torque, friction
  • _tqi_ torque, ?indexed?
  • _tqr_ torque reduction due to intervention

    V
  • _vb_ voltage battery
  • _vim_ Disa
  • _vs_ vehicle speed
  • _vls_ voltage lambdasensor

    W
  • _wf_ (fuel)wall-film
  • _wup_ warm-up



Keep in mind, HakenTT (aka revlimit, aka Wolfowitz) already revealed it, ip_* are 3 dimensional maps, c_* are constant values, c_conf is something similar to easy codable values like within N*SExpert and c_dtc* belongs to error codes, which i´m currently working on deleting.

I know its just a starting point and there are some important abbr. still unfound, but i guess thats just a matter of time

All you really need is Asap2Demo, Thaniels a2l and my *.s28 file, which i´m gladly attaching to this post (rename to *.rar and unpack). Note that its not the alpina file, but its an MS430056 which does exactly the same.

I´ve attached a tool to correct checksum for MS43

Few people may tend to think it´s now possible to tune their cars by themself, but believe me thats not gonna happen (right now). Siemens has done an awesome job in calculating, factorizing and incorporating different values and merge them together to get e.g. the real ignition advance.

For the real enthusiasts like me, lets keep sharing and collecting whatever is found.
Attached Files
File Type: pdf 330i_430056_original.pdf (197.0 KB, 47 views)
File Type: pdf ms43_V3_Ro_056.pdf (107.6 KB, 42 views)
File Type: pdf checksum corrector.pdf (1.99 MB, 17 views)
File Type: pdf Funktionsbeschreibung_Siemens-MS42.pdf (4.18 MB, 31 views)
File Type: pdf VinToHex.pdf (144.1 KB, 13 views)
__________________
kind regards
Daniel


Last edited by daniel_f.; 09-10-2014 at 02:36 PM.
daniel_f. is offline   Reply With Quote
Ads by Google

Guests, get your FREE E46Fanatics.com membership to remove this ad.
Old 07-13-2014, 12:13 PM   #2
daniel_f.
Registered User
 
Join Date: Jul 2011
Location: Germany
Posts: 558
My Ride: 330iCA
VIN:
  • Vehicle Identification Number:
    0x3CF8-0x3D04


ISN:
  • Virginize EWS by FF´ing:
    0x3ED0-0x3F1F


Scalars:
  • scalar of intake temp sensor:
    ip_tia__v_tia
  • scalar of coolant temp sensor:
    ip_tco_raw__v_tco
  • maf sensor table:
    id_maf_tab


Injection:
  • basic injection time:
    ip_tib__n__maf
  • pre-Injection on engine start based on coolant temp:
    ip_tipr_cst__tco
  • Injection on cold engine start:
    ip_ti_cst__n__tco
  • Afterstart enrichtment based on coolant temp and intake air temp:
    ip_ti_cast__tia__tco
  • Injector lag correction, based on battery voltage:
    ip_ti_add_dly__vb
  • full load correction based on rpm:
    ip_ti_fl__n
  • Alpha/n table, when maf sensor is disconnected:
    ip_maf_1_diag__n__tps_av
  • min rpm for overrun fuel cut, based on coolant temperature (without A/C active):
    ip_n_min_puc__tco
  • min rpm for overrun fuel cut, based on coolant temperature (with A/C active):
    ip_n_min_accin_puc__tco
  • coolant temp threshold overrun fuel cut:
    c_tco_dly_puc_min
  • abort of overrun fuel cut below, based on coolant temp:
    ip_n_max_inf__tco


ignition:
  • basic ignition advance:
    ip_igab__n__maf
  • Ignition advance, optimal:
    ip_iga_optm_tco_1__n__maf, ip_iga_optm_tco_2__n__maf
  • basic ignition advance at idle:
    ip_igab_is__n__maf
  • monitoring of ignition advance, possible limiter:
    ip_iga_ref_mon
    ip_iga_ref_mon2


Idle speed:
  • idle rpm based on coolant temp when A/C is active:
    ip_acin_n_sp_is__tco
  • idle rpm based on coolant temp when A/C is off:
    ip_n_sp_is__tco


Lambda
  • lambda sensor voltage threshold detection lean/rich:
    c_vls_lam_afl or c_vls_lam_afr
  • min rpm to activate closed loop lambda control *:
    c_lam_n_min
  • min cooling temperature to activate lambda adaption *:
    c_tco_ti_ad_min
  • max intake temperature to activate lambda adaption *:
    c_tia_ti_ad_max
  • max rpm to activate additive injection adaption *:
    c_n_ti_ad_add_max
  • min rpm to activate multiplicative injection adaption *:
    c_n_ti_ad_fac_min


Limiter:
  • engine rpm, soft limiter (automatic transmission):
    id_n_max_at__gear
  • engine rpm, hard limiter (automatic transmission):
    id_n_max_max_at__gear
  • engine rpm, soft limiter (manual transmission):
    id_n_max_mt__gear
  • engine rpm, hard limiter (manual transmission):
    id_n_max_max_mt__gear
  • engine rpm, in case of missing vehicle speed signal (DSC deleted):
    c_n_max_vs_diag

  • id_n_max_cycnr__vs
  • vehicle speed, limiter (automatic transmission):
    c_vs_max_at_1
  • vehicle speed, limiter (manual transmission):
    c_vs_max_mt_1


DISA:
  • Hysteresis between activation and deactivation, engine rpm:
    c_n_hys_vim
  • activation and deactivation of DISA, based on engine rpm and air flow (part-load):
    id_vim_pl__n_vim__maf
  • activation and deactivation of DISA, full-load condition active:
    id_vim_fl__n_vim


Coolant temperature:
  • max coolant temp before activation of electric thermostat, regardless of every other circumstance:
    c_tco_ex_max_vs
  • Coolant temperature based on engine speed and engine load (A/C off):
    id_tco_sp_ect__n__maf_sub, ip_temp_sp_tco__n__maf
  • Coolant temperature based on engine speed and engine load (A/C on):
    id_tco_sp_ect_acin__n__maf_sub


Cruise control:
  • min vehicle speed for cruise control:
    c_vs_min_cru


Exhaust flap:
  • min vehicle speed, exhaust flap activation (automatic transmission):
    c_vs_min_ef_at
  • min vehicle speed, exhaust flap activation (manual transmission):
    c_vs_min_ef_mt
  • exhaust flap activation based on engine rpm and tps angle (X=Gear 1-5) :
    ip_pvs_min_at_X_ef__n_32


Cooling fan:
  • cooling fan pwm value while ignition off, based on cat temp (calculated) :
    id_ecfpwm_igk_off__temp_cat


misfire detection:
  • misfire detection off, below:
    c_n_min_er
  • :
    c_crk_dif_max_er
  • misfire detection off, above:
    c_n_max_er
  • # injector valves allowed to be turned off due to misfire:
    c_mis_max_nr_off_iv


limits:
  • overrev-recognition, threshold:
    c_n_lim_min


Alternator:
  • Charging battery current based on ambient temp and battery voltage:
    ip_cha_bat__tam__vb
  • (added/)subtracted engine rpm based on battery charging current when A/C is activated :
    ip_dri_acin_n_sp_add_ccb__cha_cd


Torque Control:
  • engine torque basic value for calculation:
    c_tq_stnd
  • engine torque calculation based on engine load and rpm:
    ip_tqi_maf__n__maf
  • monitoring of calculated engine torque, possible limiter:
    ip_tqi_ref_mon
    ip_tqi_ref_mon2
  • engine torque based on driver demand and engine rpm:
    ip_tqi_pvs__n__pvs


electronic thermostat:
  • added pwm of electronic coolant thermostat based on coolant temp and engine rpm (Alpina has the same values, no need for modding) :
    id_ectpwm_add__n__tco_sp


TPS control:
  • tps angle based on engine rpm and acceleration pedal sensor:
    ip_tps_sp_pvs__pvs__n
  • threshold for recognition of kickdown (AT):
    c_v_pvs_thd_kd


selected gear calculation:
  • Gear recognition based on vehicle speed and engine rpm:
    id_gear__n_vs_cru


plausibility check brakepedal + acceleration pedal simultaneously
  • check if vehicle speed is higher:
    c_vs_pvs_bls_bts_plaus
  • check if engine rpm is higher:
    c_n_pvs_bls_bts_plaus
  • set dtc if simultaneously engagement is taking longer then * seconds:
    c_t_bts_plaus_max
  • check if driver demand is higher:
    c_pvs_av_bls_plaus
  • if not plausible, reduce tps angle xy° every 10ms:
    c_pvs_av_bls_not_plaus_lgrd


diagnosis system of main relay:
  • after * seconds from key switched on test:
    c_t_rly_main_diag
and
  • if Klemme 15 is more then * volts:
    c_v_igk_rly_main_diag
and
  • set dtc if voltage difference between Klemme87 and Klemme 15 is above * volts:
    c_v_dif_igk_rly_main_max


A/C activation/deactivation
  • deactivate a/c compressor if vehicle speed is below:
    c_vs_max_accin
and
  • if acceleration pedal angle is above:
    c_pvs_fl_accin





TPS adaption at every start
  • tps adaption allowed if engine rpm is below *:
    c_n_max_tps_ad
and
  • coolant temp is below *:
    c_tco_max_tps_ad
and
  • coolant temp is above *:
    c_tco_min_tps_ad
and
  • ambient temp is above *:
    c_tia_min_tps_ad
and
  • battery voltage is above *:
    c_vb_min_tps_ad
and
  • vehicle speed is below *:
    c_vs_max_tps_ad


TPS limp mode:
  • in case of one faulty tps stepper, limit tps ° to *:
    c_tps_max_diag
  • limit engine rpm to *, in case both tps stepper fail:
    c_n_tps_min_diag_mon



to be done:

  • possibly limp mode reduction of allowed tps angle:
    ip_tps_max_tps_ratio_diag__n
  • actually i don´t know what that map is for, but alpina has different entries (seems like lowerting the idle rpm based on coolant temp):
    ip_dri_acin_n_sp_add_heat__tco
  • possible rpm limiter in limp mode:
    ip_n_max_diag__pvs_av
__________________
kind regards
Daniel


Last edited by Bernie@Fanatics; 09-11-2014 at 05:05 PM.
daniel_f. is offline   Reply With Quote
Old 07-13-2014, 04:09 PM   #3
Harry330
Registered User
 
Join Date: Dec 2013
Location: In the USA
Posts: 72
My Ride: 330Ci
I will say i personally don't no much about bmw computers, but i wanted to say good job. Keep up the Great Work!
__________________
One Of Many Goals.
Harry330 is offline   Reply With Quote
Old 07-13-2014, 06:21 PM   #4
HakenTT
OEM ///Member
 
Join Date: Aug 2009
Location: gross deutsches reich USA
Posts: 552
My Ride: 323i with S54
I don't know the real solution to EWS delete, I use emulator. I did contact Terra because he knows disassembly language and I am willing to be a part in discovering real EWS delete on MS43. As far as I know DAMOS files do not say anything about anti theft solution.

ev abschalten points to address of FB9A, and in eeprom 29F400 there is no data there, it is empty block. But if the bin file is downloaded using PAsoft dump memory function, you will get data on that address.

The way MS43 is, the DME is universal. Then when you install it in the car, you use INPA and use 'variant coding reset' feature. This changes data in the memory and codes the DME for A/T or M/T and other features. You can see the difference when you download the memory and then compare two files.

ev abschalten is not present in winols display, so don't know anything about it.

sharing some information that I found out tracing leads on the MS43 hardware.
The signal from EWS module that sends rolling codes goes to connector X60004 to pin number 33.
Then from there the trace goes trough a resistor then directly to C167 processor.
To the pin number 79 and that is P3.12 /BHE/WRH/

Infenion C167 datasheet showed the port is for

Quote:
Port 3 is a 15-bit bidirectional I/O port. It is bit-wise
programmable for input or output via direction bits. For a pin
configured as input, the output driver is put into highimpedance
state. Port 3 outputs can be configured as push/
pull or open drain drivers. The input threshold of Port 3 is
selectable (TTL or special).
The following Port 3 pins also serve for alternate functions:


BHE External Memory High Byte Enable Signal,
WRH External Memory High Byte Write Strobe
__________________
Siemens tuning junkie
HakenTT is offline   Reply With Quote
Old 07-13-2014, 07:19 PM   #5
unevolved
Registered User
 
Join Date: Jul 2013
Location: Houston, TX
Posts: 571
My Ride: 2003 325i
I wish there was something I could do to help, but I'm really glad you're doing this. If non-M's could be tuned easily, the aftermarket would explode and we'd all benefit.
__________________


In a bacon and egg sandwich, the chicken is involved, but the pig is committed. Be that pig.
unevolved is online now   Reply With Quote
Old 07-13-2014, 07:19 PM   #6
unevolved
Registered User
 
Join Date: Jul 2013
Location: Houston, TX
Posts: 571
My Ride: 2003 325i
If there's any tasks a mechanical engineer would be good at, let me know. I'm very interested in seeing this done, but I don't have the skills to do it.
__________________


In a bacon and egg sandwich, the chicken is involved, but the pig is committed. Be that pig.
unevolved is online now   Reply With Quote
Old 07-13-2014, 07:25 PM   #7
HakenTT
OEM ///Member
 
Join Date: Aug 2009
Location: gross deutsches reich USA
Posts: 552
My Ride: 323i with S54
Quote:
Originally Posted by unevolved View Post
I wish there was something I could do to help, .
Yes there is. Don't post if there is nothing you have to contribute, thread gets loaded with worthless posts
HakenTT is offline   Reply With Quote
Old 07-13-2014, 08:00 PM   #8
unevolved
Registered User
 
Join Date: Jul 2013
Location: Houston, TX
Posts: 571
My Ride: 2003 325i
Goddamn dude, nevermind. There's a ton of aborted threads out there that people abandoned because people lost interest. Just trying to encourage OP to finally decipher and publish this.
__________________


In a bacon and egg sandwich, the chicken is involved, but the pig is committed. Be that pig.
unevolved is online now   Reply With Quote
Old 07-13-2014, 08:01 PM   #9
Thaniel
Registered User
 
Join Date: Sep 2010
Location: Dublin, va
Posts: 89
My Ride: 99 323i, 93 357i
Quote:
Originally Posted by daniel_f. View Post
thank Thaniel for his awesome work and help.
You are welcome. Without that MS430056 data file We wouldn't have been able to unlock the info. I'm glad to see you are willing to share the information. Since it was based on MS430056 extract you found I wasn't sure I should post it.

Quote:
Originally Posted by daniel_f. View Post
For the real enthusiasts like me, lets keep sharing and collecting whatever is found.
Yes let's. Perhaps I should add here that when I matched the MS430056 to another .bin Daniel provided I also matched it to my 2001 330i's .bin. No they did not share addresses but I added another set of columns and massaged the addresses in the same fashion. So I have another A2L to share. Once I figure out what version number it is I'll post it on my google drive (the .bin is already there).

While I'm typing perhaps I'll mention a few things about the data matching. The first thing I do is extract the axis points. Preceding each axis data set is a length byte (or word or long). With the length byte the whole string of axis points can be extracted from the .bin. If the data in the axis is word length the length byte is word length. All 3 .bins start the axis bytes at 74001 (74000 being the length byte). But each .bin has a different amount of axis. For example in my car the axis points match in length and nearly identical values from 74001 to 74087. the next axis point in the 056 is 6 bytes long (we have the length bit telling us how long it is) and in my car is 4 bytes long. So no match. Looking at the length of the following axis points lengths and axis data (in hex) it becomes obvious that my car is missing the next axis. And if I shift the data down to the next axis point the 2 match again. This miss matching happens about 40 more times in the list of axis points. It is worth noting. It could have been the axis itself and the corresponding map is smaller. This happened in my 328i to 323i conversion (and it makes a real mess). But luckily in this data set it appears that if the map existed in the ECU it was the same size. Making it easier to match maps, curves and axis.

My point is it's not just a matter of shifting the beginning point of the data. As if there is any extra data or less data in the stream then it is all jumbled as soon as there is a difference.

With the Maps and curves and values there is no length byte. the matching I do is purely looking for similar values in the stream and matching them up. Once aligned enough of the bytes match to make it obvious it is correct. then once things do not match it's obvious too. In the transition area there can be some guessing. But the error rate I think is a pretty low %. But if one of the error spots is in the map or value you are interested in.......Well we'd have to look at it.

Anyway. That's how I align the various .bin's to each other. Once the .bins are aligned the matching A2L gives us what the values mean. I make extensive use .xls sheets to make things easier and more visual but there is still some hand manipulation. Oh and I shouldn't leave this out. My son Garrett put in many hours matching curve and map data after I set up the .xls sheets. It was not all done by me. :-)

Thaniel
__________________
My LS1 V8 into E36 and then E46 Blog
www.LS1BMW.blogspot.com

Last edited by Thaniel; 07-13-2014 at 08:23 PM.
Thaniel is offline   Reply With Quote
Old 07-13-2014, 08:10 PM   #10
Thaniel
Registered User
 
Join Date: Sep 2010
Location: Dublin, va
Posts: 89
My Ride: 99 323i, 93 357i
Quote:
Originally Posted by daniel_f. View Post
but to me it`s weird they made german entries in an english Damos file...
I'm pretty confident it was originally all German and at some point only a portion of it was translated to English.

Thaniel
__________________
My LS1 V8 into E36 and then E46 Blog
www.LS1BMW.blogspot.com
Thaniel is offline   Reply With Quote
Old 07-14-2014, 12:02 AM   #11
daniel_f.
Registered User
 
Join Date: Jul 2011
Location: Germany
Posts: 558
My Ride: 330iCA
Quote:
Originally Posted by unevolved View Post
I wish there was something I could do to help, but I'm really glad you're doing this. If non-M's could be tuned easily, the aftermarket would explode and we'd all benefit.
Your welcome

I didn´t know anything about damos files or asap2demo even at the last week and i´m definately not an electronics man


That said, i found a very interesting map which takes vehicle speed and divides it through rpm, you then get a constant factor for each gear, so that the ecu knows which gear is actually engaged. I think i´m having the wrong numbers right now, as i´m using SA204 short gearing, but software for oem diff

i found torque limiter and driver desired torque wish, too.

lets see what else is getting revealed.
__________________
kind regards
Daniel

daniel_f. is offline   Reply With Quote
Old 07-15-2014, 02:24 PM   #12
daniel_f.
Registered User
 
Join Date: Jul 2011
Location: Germany
Posts: 558
My Ride: 330iCA
made some steep progress and beginning of listing important maps to start with.
__________________
kind regards
Daniel

daniel_f. is offline   Reply With Quote
Old 07-16-2014, 07:06 AM   #13
Thaniel
Registered User
 
Join Date: Sep 2010
Location: Dublin, va
Posts: 89
My Ride: 99 323i, 93 357i
Took a moment this morning and reorganized and added to my google drive
https://drive.google.com/#folders/0B...VZCQk02X1NWZTA

It now has A2L's for versions
MS430037
MS430056 - Original A2L
MS430066

In process is the MS430055 and MS430069

Also included is a correspoinding ECU dump in .s28 format (the format ASAP2Demo likes)

***For those not familliar with what is going on, I will take a stab at providing a little direction. Following is a summary of how to read the information on the drive.***

To read the A2L's open with a A2L compaitble reader like ASAP2DEMO (Free) or WinOLS (Very expensive, WinOLS free version is not A2L compatible). Then load the corresponding ECU dump (full dump).

What if you want to load your own ECU's dump? Extract a full dump. Usually this is saved as a .bin. Use a hex editor to export it into a .S28 file. and do the above.

***For those with questions of how to delete EWS, IMMO ****
Those are not done trough the OBDII port. You have to remove a surface mount EEPROM from the ECU board and program with an EEPROM chip programmer. This, I believe, is beyond the scope of this thread.
__________________
My LS1 V8 into E36 and then E46 Blog
www.LS1BMW.blogspot.com

Last edited by Thaniel; 07-16-2014 at 07:19 AM.
Thaniel is offline   Reply With Quote
Old 07-16-2014, 07:23 AM   #14
Thaniel
Registered User
 
Join Date: Sep 2010
Location: Dublin, va
Posts: 89
My Ride: 99 323i, 93 357i
Quote:
Originally Posted by daniel_f. View Post
made some steep progress and beginning of listing important maps to start with.
Ah I see you edited post number 2. Great descriptions. I'll have to see if they will fit into the comment portion for each map in the A2L.
__________________
My LS1 V8 into E36 and then E46 Blog
www.LS1BMW.blogspot.com
Thaniel is offline   Reply With Quote
Old 07-17-2014, 07:14 PM   #15
Thaniel
Registered User
 
Join Date: Sep 2010
Location: Dublin, va
Posts: 89
My Ride: 99 323i, 93 357i
Quote:
Originally Posted by Thaniel View Post
Took a moment this morning and reorganized and added to my google drive
https://drive.google.com/#folders/0B...VZCQk02X1NWZTA

It now has A2L's for versions
MS430037
MS430056 - Original A2L
MS430066
Added the 055 to the drive and updated the 037 and 066. Having a 3rd dump to compare against cleared up some of the "grey" areas.

If a map did not exist in that version I set the Address to 0x0000 but stray data will show. So glance at the address if map looks weird.

Thaniel
__________________
My LS1 V8 into E36 and then E46 Blog
www.LS1BMW.blogspot.com
Thaniel is offline   Reply With Quote
Old 07-18-2014, 07:38 AM   #16
unevolved
Registered User
 
Join Date: Jul 2013
Location: Houston, TX
Posts: 571
My Ride: 2003 325i
Quote:
Originally Posted by Thaniel View Post
***For those with questions of how to delete EWS, IMMO ****
Those are not done trough the OBDII port. You have to remove a surface mount EEPROM from the ECU board and program with an EEPROM chip programmer. This, I believe, is beyond the scope of this thread.
That procedure sounds similar to modifying other ECUs I've worked on. If it's possible to burn new chips with something like this, it could be doable by the average Joe. That sounds promising.
__________________


In a bacon and egg sandwich, the chicken is involved, but the pig is committed. Be that pig.
unevolved is online now   Reply With Quote
Old 07-18-2014, 09:02 AM   #17
Thaniel
Registered User
 
Join Date: Sep 2010
Location: Dublin, va
Posts: 89
My Ride: 99 323i, 93 357i
Quote:
Originally Posted by unevolved View Post
doable by the average Joe.
The EEPROM chip is surface mounted and, in my opinion, is very difficult to remove (I'm not interested in removing it). And man are those pins small. 90% of what the average joe wants to change is updateable through the diagnostic bus (TXDI) which is available at the OBDII port on E46's since mid 2000 (on the 20 pin prior to that).

With that said I've bought a chip programmer and my son has been busy trying to figure out how to make it work with a blank 29F400BT chip (The programmer we have only works with XP and programms through the parallel port. Despite having a USB port on the board. Had to dig through the old computer pile to get the right equptment.). But that's a topic for another discussion. I may post on my blog what we learn. Will depend on how far we get.

Thaniel
__________________
My LS1 V8 into E36 and then E46 Blog
www.LS1BMW.blogspot.com

Last edited by Thaniel; 07-18-2014 at 09:02 AM.
Thaniel is offline   Reply With Quote
Old 07-18-2014, 09:17 AM   #18
Thaniel
Registered User
 
Join Date: Sep 2010
Location: Dublin, va
Posts: 89
My Ride: 99 323i, 93 357i
Quote:
Originally Posted by daniel_f. View Post
Maybe interesting maps found:
[*]basic ignition advance:
ip_iga_ron_98_pl_ivvt__n__maf[/LIST]
I thinkt the RON_98 was originally roz98 or 98 octane. There is also a map "ip_iga_ron_91_pl_ivvt__n__maf" Which I believe is the same thing but for 91 Octane (don't tell those folks that think BMW's shouldn't run on anything but premium).

The MS42, which didn't have the english translation mess, I think the two correspoinding maps are:

kf_zw_roz91_vanos_tl__n__lm
kf_zw_roz98_vanos_tl__n__lm

Which I roughly translated to
kf_timing_91 Octane_vanos_Part Throttle__RPM__Airflow__
kf_timing_98 Octane_vanos_Part Throttle__RPM__Airflow__

Right or wrong? What do you think? What does ip or kf stand for?

Thaniel
__________________
My LS1 V8 into E36 and then E46 Blog
www.LS1BMW.blogspot.com

Last edited by Thaniel; 07-18-2014 at 09:17 AM.
Thaniel is offline   Reply With Quote
Old 07-18-2014, 09:40 AM   #19
daniel_f.
Registered User
 
Join Date: Jul 2011
Location: Germany
Posts: 558
My Ride: 330iCA
Your absolutely right, but as Alpina didn´t touch the 91octane map, i don´t see any reason to change that. I have it on my personal list, but i don´t think its wise to edit them.

KF means Kennfeld, which translates to "map" or "table". ip_* is exactly the same, even so i don´t have any clue how they translated kennfeld into anything starting with "i"

Removing the 93C86 is pretty straight forward for someone with soldering skills and very easy with a hot-air gun.

Knowing what to change within that eprom is something more difficult, as i don´t have any clue whats going on in it.

(edit)

actually i´d say this:

kf_zw_roz91_vanos_tl__n__lm
kf_zw_roz98_vanos_tl__n__lm

Kennfeld_Zündwinkel_Roz91_Vanos_**__abhängig-von-Drehzahl__abhängig-von-Luftmasse

which translates to Map_Ignition-advance_related-on-ROZ91_don´t-know-what-Vanos-has-to-do-here__based-on-rpm__based-on-airflow

i wouldn´t trust tl to be Teillast or partial load unless you have verified the axis are not up to their max values. if, e.g. n is going up to 6500rpm, you can easily bet its not partial load.
Attached Files
File Type: pdf Ms430037_93C86.pdf (483 Bytes, 18 views)
__________________
kind regards
Daniel


Last edited by daniel_f.; 07-18-2014 at 09:48 AM.
daniel_f. is offline   Reply With Quote
Old 07-18-2014, 11:59 AM   #20
Thaniel
Registered User
 
Join Date: Sep 2010
Location: Dublin, va
Posts: 89
My Ride: 99 323i, 93 357i
Quote:
Originally Posted by daniel_f. View Post
Your absolutely right, but as Alpina didn´t touch the 91octane map, i don´t see any reason to change that. I have it on my personal list, but i don´t think its wise to edit them.

KF means Kennfeld, which translates to "map" or "table". ip_* is exactly the same, even so i don´t have any clue how they translated kennfeld into anything starting with "i"

Removing the 93C86 is pretty straight forward for someone with soldering skills and very easy with a hot-air gun.

Knowing what to change within that eprom is something more difficult, as i don´t have any clue whats going on in it.

(edit)

actually i´d say this:

kf_zw_roz91_vanos_tl__n__lm
kf_zw_roz98_vanos_tl__n__lm

Kennfeld_Zündwinkel_Roz91_Vanos_**__abhängig-von-Drehzahl__abhängig-von-Luftmasse

which translates to Map_Ignition-advance_related-on-ROZ91_don´t-know-what-Vanos-has-to-do-here__based-on-rpm__based-on-airflow

i wouldn´t trust tl to be Teillast or partial load unless you have verified the axis are not up to their max values. if, e.g. n is going up to 6500rpm, you can easily bet its not partial load.
Good stuff. ok so Kf = Kennfeld = Map. I'll add that to my MS42 decode ring :-)

Now what is this map for. That is a good question and what we really need to discover on as many maps as possible. This is my take on it.

The units for the axis are in mg/stroke and RPM. or in other words Airflow vs RPM. Think that covers the "based on RPM and airflow" portion clearly. The values are in Crank angle. So it definately appears to be a timing map. But is it ignition timing or vanos timing? I don't get the reference to Vanos Are the values absolute values or offsets?

As far as the "tl". I do not belive "tl" means less than full RPM. Just not full load. I interpret this to mean the the throttle plates are not full open. I could be at max rpm with very little throttle opening if there is little load. Perhaps full lload is the base and these are just offsets when it is part load?

Other intersting thoughts. In the MS42 this map is also present (looks like ip_igab__n__maf or ip_iga_tco_1_pl_ivvt__n__maf in the MS43)
kf_zw_tkw1_vanos_tl__n__lm

Which I had interpreted as:
kf_timing_Map1_vanos_Part Throttle__RPM__Airflow__

Not sure how it is used differently from the previous mentioned ones that included Roz. But values are simlar

And to make some comparisions against the "part throttle" threre are 2 other similar maps but with "idle air" instead of "part throttle":
kf_zw_tkw1_vanos_ll__n__lm
kf_timing_Map1_vanos_Idle Air__RPM__Airflow__

kf_zw_tkw2_vanos_ll__n__lm
kf_timing_Map2_vanos_Idle Air__RPM__Airflow__

There isn't a full throttle map but expect the timing of whatever it is handled a different way at full throttle. But I could be completely wrong.

My head is starting to hurt Think I'll go back to translating A2L's for a bit :-)
__________________
My LS1 V8 into E36 and then E46 Blog
www.LS1BMW.blogspot.com

Last edited by Thaniel; 07-18-2014 at 12:14 PM.
Thaniel is offline   Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Censor is OFF





All times are GMT -5. The time now is 08:04 AM.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.
(c) 1999 - 2011 performanceIX Inc - privacy policy - terms of use