Announcement

Collapse
No announcement yet.

A quick and easy way to street tune your CSL conversion for drivability.

Collapse
This is a sticky topic.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Bry5on
    replied
    Originally posted by mushitaro View Post
    ​The whole CSL conversion tuning process now runs inside a single app. No TunerPro steps, no AQ_REL log converter, no MegaLogViewer, no VE spreadsheet, no separate reader/flasher — read the DME, log, calculate, edit the map and write it back, all in one place.

    It also works on mobile now, so you can tune from an Android phone in the car.​
    This is really badass and makes things a whole lot simpler for DIYing. Nice work!

    On the other hand, it looks like Claude grabbed karter16's source code for some of its primary function and didn't understand the nature of his intent for sharing it. I'd recommend adding attribution to him both here and in the app itself, and also watching his work closely for any bug fixes he implements, as they'll have been inherited in your codebase! Probably worth reaching out to him too

    Leave a comment:


  • 0-60motorsports
    replied
    Originally posted by mushitaro View Post
    ​The whole CSL conversion tuning process now runs inside a single app. No TunerPro steps, no AQ_REL log converter, no MegaLogViewer, no VE spreadsheet, no separate reader/flasher — read the DME, log, calculate, edit the map and write it back, all in one place.

    It also works on mobile now, so you can tune from an Android phone in the car.

    Which means you can see what you still need while you are driving. Every cell the log has visited is tinted on the map in three bands — some data / enough to act on (10 samples) / well covered (30). You watch the map fill in as you drive, so you know which cells still need a pass instead of finding out after you get home.

    MSS54HP CSL CONVERT /// TUNER — v2.1.1
    https://mss54hp-csl-convert-tuner.tsunagi.app/​

    New since V1
    • Direct DME communication over a K+DCAN cable — read, live log and write, no other software needed
    • Live tuning — the VE calculation updates in real time as you drive
    • Coverage display — absolute sample counts per cell, in three bands
    • Automatic checksum correction on every download and every write
    • Read verification — every read is checked against the checksums the DME stores inside itself, covering all 64 KB
    • RESET ADAPT — clears the learned lambda, knock and VANOS values before a re-tune
    • FLASH counter — shows how many writes the DME has left (30 per processor), read-only inspection of the service blocks (VIN / AIF), and a counter reset
    • Session storage — BASE + tuned BIN + the paired log are kept in the browser, and can be reloaded or compared
    • Crash protection for logs — samples are written every 5 seconds, so an interrupted run is offered back on the next launch
    • 3D map view, drawn on the axes' real values
    • Log viewer — chart and row table share one window; click a point to jump to its row
    • Mobile and head unit layout — one view at a time, controls in a footer within thumb reach
    • Install to the home screen, works offline
    • Japanese / English, following your browser's language

    Requirements

    The app uses the Web Serial API on desktop and WebUSB on Android, so there is nothing to install — just open the URL in Chrome.

    For the direct DME workflow you need an OTG-capable Android device and a K+DCAN cable.
    Genuine FTDI chips only (FT232AM / BM / R). CH340 and other clone cables do not work — untested and not supported.

    Speed

    A read takes about 2 minutes at the default 9600 baud. A write takes about 4 minutes including the read-back verification.

    38400 and 125000 can be selected, but if the DME refuses the rate the app silently falls back to 9600. In practice: 38400 occasionally completes, but fails more often than it works, and 125000 has never worked once. 9600 is the rate to trust.

    Android head unit — experimental

    Tuning from an Android head unit in the car also works now. Install it from the browser and it runs offline, without browser chrome.

    Status

    I have tested this on a real car and tuning works. It is still a test build, so unexpected bugs are possible — read the safety notes before flashing.

    The file workflow is unchanged

    You can still just upload a partial BIN and a Testo log CSV and download the tuned BIN. No cable needed, and the output has its checksums already calculated.

    Note: the values in the screenshots were captured in PRACTICE mode (the built-in DME simulator), so they are not readings from a real car.

    Click image for larger version

Name:	1786281805215.jpg
Views:	253
Size:	17.8 KB
ID:	363331Click image for larger version

Name:	1786281805194.jpg
Views:	243
Size:	19.0 KB
ID:	363332Click image for larger version

Name:	1786281805199.jpg
Views:	247
Size:	28.3 KB
ID:	363333
    Click image for larger version

Name:	1786281805207.jpg
Views:	244
Size:	55.4 KB
ID:	363334Click image for larger version

Name:	1786281805188.jpg
Views:	249
Size:	33.1 KB
ID:	363335Click image for larger version

Name:	1786281805182.jpg
Views:	252
Size:	45.6 KB
ID:	363336
    Click image for larger version

Name:	1786281805179.jpg
Views:	243
Size:	29.1 KB
ID:	363337Click image for larger version

Name:	1786282505807.jpg
Views:	253
Size:	25.5 KB
ID:	363338Click image for larger version

Name:	1786282505796.jpg
Views:	252
Size:	20.0 KB
ID:	363339
    Click image for larger version

Name:	IMG_4857.jpg
Views:	250
Size:	129.9 KB
ID:	363340
    ​
    Thats very cool! Great work.

    Leave a comment:


  • mushitaro
    replied
    ​The whole CSL conversion tuning process now runs inside a single app. No TunerPro steps, no AQ_REL log converter, no MegaLogViewer, no VE spreadsheet, no separate reader/flasher — read the DME, log, calculate, edit the map and write it back, all in one place.

    It also works on mobile now, so you can tune from an Android phone in the car.

    Which means you can see what you still need while you are driving. Every cell the log has visited is tinted on the map in three bands — some data / enough to act on (10 samples) / well covered (30). You watch the map fill in as you drive, so you know which cells still need a pass instead of finding out after you get home.

    MSS54HP CSL CONVERT /// TUNER — v2.1.1
    https://mss54hp-csl-convert-tuner.tsunagi.app/​

    New since V1
    • Direct DME communication over a K+DCAN cable — read, live log and write, no other software needed
    • Live tuning — the VE calculation updates in real time as you drive
    • Coverage display — absolute sample counts per cell, in three bands
    • Automatic checksum correction on every download and every write
    • Read verification — every read is checked against the checksums the DME stores inside itself, covering all 64 KB
    • RESET ADAPT — clears the learned lambda, knock and VANOS values before a re-tune
    • FLASH counter — shows how many writes the DME has left (30 per processor), read-only inspection of the service blocks (VIN / AIF), and a counter reset
    • Session storage — BASE + tuned BIN + the paired log are kept in the browser, and can be reloaded or compared
    • Crash protection for logs — samples are written every 5 seconds, so an interrupted run is offered back on the next launch
    • 3D map view, drawn on the axes' real values
    • Log viewer — chart and row table share one window; click a point to jump to its row
    • Mobile and head unit layout — one view at a time, controls in a footer within thumb reach
    • Install to the home screen, works offline
    • Japanese / English, following your browser's language

    Requirements

    The app uses the Web Serial API on desktop and WebUSB on Android, so there is nothing to install — just open the URL in Chrome.

    For the direct DME workflow you need an OTG-capable Android device and a K+DCAN cable.
    Genuine FTDI chips only (FT232AM / BM / R). CH340 and other clone cables do not work — untested and not supported.

    Speed

    A read takes about 2 minutes at the default 9600 baud. A write takes about 4 minutes including the read-back verification.

    38400 and 125000 can be selected, but if the DME refuses the rate the app silently falls back to 9600. In practice: 38400 occasionally completes, but fails more often than it works, and 125000 has never worked once. 9600 is the rate to trust.

    Android head unit — experimental

    Tuning from an Android head unit in the car also works now. Install it from the browser and it runs offline, without browser chrome.

    Status

    I have tested this on a real car and tuning works. It is still a test build, so unexpected bugs are possible — read the safety notes before flashing.

    The file workflow is unchanged

    You can still just upload a partial BIN and a Testo log CSV and download the tuned BIN. No cable needed, and the output has its checksums already calculated.

    Note: the values in the screenshots were captured in PRACTICE mode (the built-in DME simulator), so they are not readings from a real car.

    Click image for larger version

Name:	1786281805215.jpg
Views:	253
Size:	17.8 KB
ID:	363331Click image for larger version

Name:	1786281805194.jpg
Views:	243
Size:	19.0 KB
ID:	363332Click image for larger version

Name:	1786281805199.jpg
Views:	247
Size:	28.3 KB
ID:	363333
    Click image for larger version

Name:	1786281805207.jpg
Views:	244
Size:	55.4 KB
ID:	363334Click image for larger version

Name:	1786281805188.jpg
Views:	249
Size:	33.1 KB
ID:	363335Click image for larger version

Name:	1786281805182.jpg
Views:	252
Size:	45.6 KB
ID:	363336
    Click image for larger version

Name:	1786281805179.jpg
Views:	243
Size:	29.1 KB
ID:	363337Click image for larger version

Name:	1786282505807.jpg
Views:	253
Size:	25.5 KB
ID:	363338Click image for larger version

Name:	1786282505796.jpg
Views:	252
Size:	20.0 KB
ID:	363339
    Click image for larger version

Name:	IMG_4857.jpg
Views:	250
Size:	129.9 KB
ID:	363340
    ​

    Leave a comment:


  • paulpbmw
    replied
    Nice ! Mentally preparing for this.. I don't have access to the car now to mess around with test0..when I do have, I'll have to be efficient.
    Last edited by paulpbmw; 07-16-2026, 08:03 AM.

    Leave a comment:


  • karter16
    replied
    yes correct, I think in Testo it's called "relativer Oeffnungsquerschnitt". Either that or you could use https://nam3forum.com/forums/forum/m...sh-counter-etc which refers to it as "aq_rel".

    Yes standard M3 software does use the same parameter.

    Leave a comment:


  • paulpbmw
    replied
    Ok will do.
    So if I were to use test0 to data log Id have to look for relative opening and rpm ? That's ofcoarse assuming that the standard M3 DME is using the same parameter..

    Leave a comment:


  • karter16
    replied
    Originally posted by paulpbmw View Post
    karter16 I know its off topic but i meant to ask if the y axis on 18x12 load base map is throttle position of another parameter? ill delete the questions after your answer not to contaminate this thread, thanks
    Yep so this is the table in question:

    Click image for larger version  Name:	Screenshot 2026-07-15 at 2.34.25 PM.png Views:	0 Size:	359.5 KB ID:	361181
    And the y-axis is aq_rel (Relative Throttle Opening) which is calculated by taking the point-in-time absolute cross-sectional opening of both the Idle Control Valve (ICV) and the throttle bodies, summing the areas together and then calculating a relative % opening from that value.

    The variable is called aq_rel in the software, and is generally referred to as either that or "Relative Opening". aq_rel is not the same as relative throttle position or relative pedal position. Hope that was what you were meaning?

    I would leave these posts here if I was you - I think they're good information for everyone - others might be wondering the same in the future.

    If you're trying to visualise the difference between aq_rel and throttle position, consider that when closed the throttle body is essentially a throttle plate at 90 degrees to the body, so that no air can flow. when fully opened the throttle plate is parallel to the flow of air, so airflow is at it's maximum.

    Relative Throttle Position is a percentage of how much the throttle plate is rotated from its closed position. e.g. 0% when closed, 100% when the plate has rotated by 90 degrees and is parallel. 50% means it's at 45 degrees (half way through it's rotation).

    Relative Throttle Opening is a percentage of the current cross-sectional area that is opened up, and does not have a linear relationship with Relative Throttle Position. Consider that at 50% Relative throttle position the throttle plate is still blocking the airflow significantly, and therefore Relative Throttle Opening under those conditions will be significantly less than 50%.

    Last edited by karter16; 07-14-2026, 06:43 PM.

    Leave a comment:


  • paulpbmw
    replied
    karter16 I know its off topic but i meant to ask if the y axis on 18x12 load base map is throttle position of another parameter? ill delete the questions after your answer not to contaminate this thread, thanks

    Leave a comment:


  • karter16
    replied
    Originally posted by paulpbmw View Post
    karter16 Wow thats a really major discovery !!

    I have a question about the standard non csl m3 map (2701) to be precise, what is the y axis on the partial throttle fuel map ?

    Im currently fine tuning a friends m3 that a tuner didnt even bother touching.

    Trying to use a similar process but also want to get the correct parameter for the y axis, Thanks and much respect 👊
    Hey presuming that you're talking about KF_R_N_AQ_REL then the y axis is plain aq_rel. it's only the CSL maps that were changed to use dr_rel instead.

    Cheers!

    Leave a comment:


  • paulpbmw
    replied
    karter16 Wow thats a really major discovery !!

    I have a question about the standard non csl m3 map (2701) to be precise, what is the y axis on the partial throttle fuel map ?

    Im currently fine tuning a friends m3 that a tuner didnt even bother touching.

    Trying to use a similar process but also want to get the correct parameter for the y axis, Thanks and much respect 👊

    Leave a comment:


  • Bry5on
    replied
    Originally posted by Obioban View Post
    Beggars can’t be choosers, but it would be great to get a tool to allow similar auto tuning but using a wide band 02.
    That’s pretty complicated with the MSS54HP as the CSL binary is not always targeting the same stoich target, particularly at mid-rpm and transitions to WOT. Not saying it’s impossible of course but it’s not trivial either!

    Leave a comment:


  • Obioban
    replied
    Beggars can’t be choosers, but it would be great to get a tool to allow similar auto tuning but using a wide band 02.

    Leave a comment:


  • mushitaro
    replied
    First of all, I would like to express my gratitude to everyone who contributes daily to the research and publication of the CSL CONVERT tuning methodology.

    I have been looking for a way to give back to this community, and I have developed an application that integrates the various tuning processes currently shared in this thread into a single workflow.

    Integrated Processes:
    • Disabling MAP & LTFT compensation (TunerPro)
    • RO (Relative Opening) Correction (AQ_REL to AQ_REL_ALPHA_N Logfile Converter | Spreadsheet)
    • Lambda Value Aggregation (MegaLogViewer)
    • Tuning VE Calculation (VE Tuning With Lambda Integrators | Spreadsheet)
    • VE Comparison vs. Stock CSL (VE Tuning With Lambda Integrators | Spreadsheet)
    • VE Table Editing (TunerPro)
    • Re-enabling MAP & LTFT compensation (TunerPro)

    In short, I have taken the previously labor-intensive process and streamlined it: now, you can simply upload your Partial BIN and TESTO LOG CSV, click the download button, and the process is complete. (The tool is completely free.)

    The app is hosted on GitHub Pages, so it can be used immediately without installation: https://mss54hp-csl-convert-tuner.tsunagi.app/

    The source code is also public, so please feel free to review or modify it: https://github.com/mushitaro/mss54hp-csl-convert-tuner/

    Important Note on Development: This application was developed entirely using Gemini (LLM); there has been no manual code review by a human. As a result, there may be unexpected bugs or redundant "spaghetti" code in some places. I have left some of the redundant code as-is because I’ve had bitter experiences where asking an AI agent to "clean up" resulted in it deleting critical logic that was difficult to recover.

    Technical Specifications & Limitations:
    • Supported BIN: Currently only tested with 0401 partial BIN.
    • CSV Formats: Supports semicolon-delimited (Testo output) and comma-separated (Spreadsheet output).
    • Headers: Header names must match Testo exactly.
    • Accuracy: I have compared the values generated by this app against manual tool calculations at the cell level and confirmed they match perfectly.
    • Checksums: A checksum correction feature is not yet included, but it can be implemented quickly if the addresses and reference ranges are identified.

    Ideally, I would like to integrate Testo and flashing tools directly, but I am still researching that logic. If anyone can provide information on this, I would love to try and integrate it.

    Compatibility: Tested on Chrome and Edge. I cannot guarantee operation on Safari or Firefox (though Gemini claims to have performed automated testing...).




    Click image for larger version  Name:	スクリーンショット 2025-12-25 135430.png Views:	0 Size:	327.7 KB ID:	331185

    Click image for larger version  Name:	スクリーンショット 2025-12-25 135456.png Views:	0 Size:	356.2 KB ID:	331186

    Click image for larger version  Name:	スクリーンショット 2025-12-25 135530.png Views:	0 Size:	172.5 KB ID:	331187

    Click image for larger version  Name:	スクリーンショット 2025-12-25 135609.png Views:	0 Size:	21.1 KB ID:	331192 Click image for larger version

Name:	スクリーンショット 2025-12-25 135556.png
Views:	492
Size:	21.8 KB
ID:	331194
    ​
    Last edited by mushitaro; 12-24-2025, 10:41 PM.

    Leave a comment:


  • porcam542
    replied
    Finishing up csl intake project now. Been here reading for weeks. You guys are amazing. This and several other threads so helpful in trying understand what’s going on and what needs done to make the swap proper. Thanks for the hard work and making it available to all.

    Leave a comment:


  • Bry5on
    replied
    Originally posted by ac427 View Post
    Great work as always karter16

    I would love to do some CAN logging. I have also purchased a Gauge.S

    Which software do you use to record the logs?

    How can i implement CAN bus logging?

    I could try the mullet tune route but since i have CSL camshafts in my engine it won't really help.
    First you’ll need to do a little wiring to bring CAN to your gauge.s - I’d recommend building a jumper harness from the steering angle sensor using a junkyard section of wiring with both connectors.

    Then you’ll need to map all the standard CAN values, knock CAN values (if you turned this on in your tune file) and any custom CAN values you may have implemented (more advanced, if you get this far).

    Attaching a gauge.s config file that contains lots of CAN setup info for you or anyone else stumbling in here.

    config-8-24-25_knockCAN04.zip
    Attached Files

    Leave a comment:

Working...
X