Announcement

Collapse
No announcement yet.

MSS54 DS2 Tool: FREE TOOL for programming DME - Tune, full binary, flash counter, etc

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • rtrules
    replied
    Just tried the tool (only to have a look, only reading) and it looks reaallyyyy cool! It's so cool that people and especially you are still developing on this platformm, and then also sharing it for free!
    One question regarding adaptions for knock, does negative (e.g. -0.7 deg) mean the engine has to pull 0.7deg on this cylinder?

    Leave a comment:


  • karter16
    replied
    Originally posted by George Hill View Post
    With that said, not many people have DIS anymore and the DS2 program is soooo easy. I'm crossing my fingers karter16 gets it operational.


    Click image for larger version  Name:	Screenshot 2026-05-29 at 4.56.57 PM.png Views:	0 Size:	103.5 KB ID:	356792

    Run on a not-very-warm car so don't worry too much about the actual values. I have some UI tidy up to do, add the rest of the test results, etc. , I was interpreting the results of the leak test round the wrong way (0x00 is success, non-0x00 is a failure) so the "Result" value shows as incomplete whereas it should show as complete, etc.

    Point though is that it works.
    Last edited by karter16; 05-28-2026, 09:07 PM.

    Leave a comment:


  • karter16
    replied
    Originally posted by bmwfnatic View Post

    I was more thinking maybe decompile whatever file DIS uses for this test? That way we also have the official test criteria, but I never looked into the file structure...


    Originally posted by ac427 View Post

    Sounds good. Do you think the test is based on a single file in DIS?
    Okay good point - making sure we follow the exact sequence as defined by the test is a great plan, I should have approached it this way from the start. The logic around the DS2 calls is defined in the mss54ds0.prg file. Attached is the disassembly of this file. You can see for the VANOS jobs that each job makes the relevant DS2 calls and has the timing and result validation built into the job.
    Attached Files

    Leave a comment:


  • ac427
    replied
    Originally posted by bmwfnatic View Post

    I was more thinking maybe decompile whatever file DIS uses for this test? That way we also have the official test criteria, but I never looked into the file structure...
    Sounds good. Do you think the test is based on a single file in DIS?

    Leave a comment:


  • bmwfnatic
    replied
    Originally posted by ac427 View Post
    Is there any way monitor the data stream when the DIS Vanos test is started?

    I can run the test and record a dump of the session for research.
    I was more thinking maybe decompile whatever file DIS uses for this test? That way we also have the official test criteria, but I never looked into the file structure...

    Leave a comment:


  • ac427
    replied
    Is there any way monitor the data stream when the DIS Vanos test is started?

    I can run the test and record a dump of the session for research.

    Leave a comment:


  • Tomba
    replied
    Originally posted by karter16 View Post

    Yes that's right, so all each of those jobs really do is make a DS2 call to the DME. The DME then processes those requests. In my case I'm just making each of those DS2 calls directly to achieve the same end result.
    When I made the TST file for testing, a lot of members couldn't pass the leak test [dichtheid]. The clue was to let the engine drop down to idle after a test was finished and then activate the test, instead of sending the commands behind each other. Once successful, you will receive start and end value which I believe should not drift more than ~3°CR.

    From memory, DIS doesn't send them all in once, but check first if the timing is OK and within limits before proceeding.

    Originally posted by karter16 View Post
    Ok yep, we're talking about the same thing. The CO_EINZELABGLEICH_xxxx functionality is achieved by automatic adaption in the MSS52/54. on the MSS50 you'd do as you say to manually tune ti_ll_z1​ thru ti_ll_z8. On the MSS52/54 it's performed automatically.

    Fun fact - it seems the DS2 call (Control byte $41) actually still exists on the MSS52/54 and can still be called, but appears to have been repurposed to allow one to specify bench values for LAA_F1, LAA_F2, LAA_OFFSET1 and LAA_OFFSET2.
    ​So the individual values that can be read by [co_einzelabgleich_lesen] are stored by the ECU learning function rather than manually measured, adjusted and stored by an engineer? Would make sense with the missing exhaust extraction points.

    suspecting that [ti_ll_z1] _ll_ = leerlauf injection time cylinder #/

    Leave a comment:


  • karter16
    replied
    Originally posted by Tomba View Post

    Are you refering to [STEUERN_xVANOS1_xxxx] jobs?
    Yes that's right, so all each of those jobs really do is make a DS2 call to the DME. The DME then processes those requests. In my case I'm just making each of those DS2 calls directly to achieve the same end result.



    Originally posted by Tomba View Post
    There might be 2 functions,
    [CO_EINZELABGLEICH_LESEN]

    There seem to be some jobs to run balance tests as well,

    Code:
    name : STEUERN_TI_ABGLEICH_STARTEN
    comment : Anstossen der automatischen Einzeldrosselklappenkorrektur (Prueflauf)
    ​and
    Code:
    name : STEUERN_SG_AUTOSYNC
    comment : automatische Leerlaufsynchronisation durchfuehren​
    On, MSS50, I run the job to turn off lambda control, run the engine, measure CO content per cylinder, adjust, and store (to store you need to run the [login_request]). This to target all CO levels to be near equal.

    Maybe MSS54 uses a different approach and adjust individual fuel trim on each cylinder based on the rough running conditions?
    Ok yep, we're talking about the same thing. The CO_EINZELABGLEICH_xxxx functionality is achieved by automatic adaption in the MSS52/54. on the MSS50 you'd do as you say to manually tune ti_ll_z1​ thru ti_ll_z8. On the MSS52/54 it's performed automatically.

    Fun fact - it seems the DS2 call (Control byte $41) actually still exists on the MSS52/54 and can still be called, but appears to have been repurposed to allow one to specify bench values for LAA_F1, LAA_F2, LAA_OFFSET1 and LAA_OFFSET2.

    Leave a comment:


  • Tomba
    replied
    Originally posted by karter16 View Post

    Yep I'm thinking that diagnostic actions are something that could follow. Probably the common ones like vanos, CSL flap actuation, etc. at least. funny, I was actually looking at the DS2 calls for the VANOS check yesterday!
    Are you refering to [STEUERN_xVANOS1_xxxx] jobs?


    Originally posted by karter16 View Post

    Re the individual trims are you talking about ti_ll_z1​ thru ti_ll_z8? (injection timing adjustments per cylinder to balance out uneven running) If so they're stored in the EEPROM adaptions block and are actually dynamically adapted by the DME. If you mean something else let me know and I can have a look :-)


    There might be 2 functions,
    [CO_EINZELABGLEICH_LESEN]

    There seem to be some jobs to run balance tests as well,

    Code:
    name : STEUERN_TI_ABGLEICH_STARTEN
    comment : Anstossen der automatischen Einzeldrosselklappenkorrektur (Prueflauf)
    ​and
    Code:
    name : STEUERN_SG_AUTOSYNC
    comment : automatische Leerlaufsynchronisation durchfuehren​
    On, MSS50, I run the job to turn off lambda control, run the engine, measure CO content per cylinder, adjust, and store (to store you need to run the [login_request]). This to target all CO levels to be near equal.

    Maybe MSS54 uses a different approach and adjust individual fuel trim on each cylinder based on the rough running conditions?

    Leave a comment:


  • Tomba
    replied
    Originally posted by ac427 View Post

    Can you run the "Throttle set point" calibration on a swapped car?
    I would expect that all tests that can be performed in DIS should be executable from the MSS54DS0.PRG file.

    Adapting the "CSL flap" is present,
    VANOS tests are present,

    I would expect throttle setpoints can be called by the job [IO_STATUS_VORGEBEN] but unsure how to input correct parameters for the throttle valve.


    I might be wrong here, as DIS can also read out old Motronic 1.2, while I can't find a PRG for that...

    For DS2,
    I do have always wondered how, TestO uses the serial (DS2) jobs and send the request and reads it. They are all in the [betriebswtab] but I don't know how to use it.
    Last edited by Tomba; 05-27-2026, 11:45 PM.

    Leave a comment:


  • Slideways
    replied
    Originally posted by karter16 View Post

    And to confirm, have you set the COM latency time to 1ms in device manager? If you use FTDI driver then the software can do this automatically, if you use COM then you have to make sure it's set to 1ms (defaults to 16ms).
    Tried another cable and fast read worked! K+DCAN clear cable

    The blue TTFS OBD cable did not work. It seems like this is one of the cheaper blue cables.

    Leave a comment:


  • George Hill
    replied
    Originally posted by terra View Post
    I seem to recall DIS letting you just manually enter the car's details, and I'm pretty sure I was able to access test plans etc that way ?
    Maybe? I thought you could only type in the VIN to get you to wiring diagrams, I didn't think it would pull up test plans and let you run them? BUT it has been 16+ years since I was regularly using DIS, very possible my memory is foggy on this. But even then you still need a cluster as a gateway for the communication functions?

    With that said, not many people have DIS anymore and the DS2 program is soooo easy. I'm crossing my fingers karter16 gets it operational.

    Leave a comment:


  • terra
    replied
    Originally posted by George Hill View Post

    Sure, but you can't run that without an EWS/IKE from an M3.
    I seem to recall DIS letting you just manually enter the car's details, and I'm pretty sure I was able to access test plans etc that way ?

    Leave a comment:


  • George Hill
    replied
    Originally posted by ac427 View Post
    Can you run the "Throttle set point" calibration on a swapped car?
    No, you need to be able to access the DMS test group/plan, which is essentially the functions from DIS. And without an M3 EWS ISTA/DIS won't identify the S54 properly to allow the functions to populate.

    Leave a comment:


  • George Hill
    replied
    Originally posted by Shonky View Post
    It is possible to run DIS in a VM and get VANOslS results. A bit painful and tricky to get working though so I'm all for an easy to use app.
    Sure, but you can't run that without an EWS/IKE from an M3.

    Leave a comment:

Working...
X