Using MSTweak to tune your MegaSquirt

(Regardless of the firmware you are using)

Last Updated 3-21-2006 by Jerry Hoffmann,

NOTE– this article is extremely dated now and kept here solely for archive purposes.  We don’t recommend MSTweak at this point in time.  We recommend instead using TunerStudio’s VE Analyzer Live feature!



Many of these principals are applicable for a forced induction vehicle but this was written with tuning an NA vehicle in mind.  FI people do your homework!

MSTweak will make tuning your cruise and low-load VE map areas pretty straightforward.  MegaTune will allow you to set the crossover (stoic) voltage and will report the AFR on a gauge in MegaTune. Also your MegaSquirt will use the crossover point you programmed to allow you to do real-time closed-loop EGO fueling correction.

What MSTweak does is rely on the EGO correction to bring your mixture back to stoic (or back to whatever you set your crossover point at) when it’s not. Using your logs, it records all of the ‘crossover’ points and what the VE was set to at that point and what correction factor needed to be applied to bring it back to stoic. It can then suggest a corrected VE parameter for the point on the fuel map in question.  I can’t stress enough how important it is to read the MSTweak help file (it’s short, just do it), especially the section titled ‘How to get a good datalog’.  This will save you much frustration and get you much better logs to work with.
How to use MSTweak 3000 to modify your VE Tables

MSTweak is great but can be a bit confusing at first.  Here’s a step by step focusing on using MST3k to modify your tables.  The next paragraph focuses more on the tuning side of things.

  1. Backup your MegaSquirt configuration first to an .MSQ file.
  2. Connect to your MegaSquirt using MegaTune and open your fuel/VE Table.
  3. Go to ‘FILE>VE Export’, and save your VE Table to a .VEX file on your drive.
  4. Open MSTweak and go to ‘EDIT>Settings’.  Set the EGO Crossover Voltage to whatever voltage reading your o2 sensor or wbo2 system read at stoic 14.7:1 AFR (or whatever AFR you want to tune to).  14.7:1 is at .5v on most narrowband sensors, wbo2 systems vary and are sometimes programmable.  Check the box next to ‘Outlier Elimination’ to enable this.  Click Save.  (Read the help file for other configuration options.)
  5. From the MSTweak main screen go to ‘FILE>Open Datalog’.  Select as many current datalogs as you’d like to and click OPEN.  This will take a moment to process, it can take a while on slower machines or if you open several large logs.  When this is complete (finished plotting is displayed at bottom of the Status window) you are ready to load your VE map.
  6. From the MSTweak main screen go to ‘EDIT>Modify VE Map’.
  7. From the ‘Modify VE Map’ window go to ‘FILE>Open LD Map’.  Select the map you exported earlier (.VEX file) and click OPEN to open it.
  8. Now click the ‘Calculate Map’ button on the right side of the current window.  MST3k will apply the recommended changes to your map.
  9. Click ‘FILE>Save LD Map’ and save the updated .VEX file with a different name.  (That way you still have your old map to fall back to if needed.)
  10. Open MegaTune while connected to your MegaSquirt, open your fuel/VE Table, go to ‘FILE>VE Import’ and select your updated .VEX file.
  11. Click the ‘Send to ECU’ button.  Click Close.
  12. Backup your MegaSquirt configuration to a new, updated .MSQ file.
  13. That’s it!

Tuning Cruise and low-load areas of your map with MSTweak 3000

So you basically rough out your VE map or use the default map.  Just get the car drivable and err on the side of caution with the ignition and fuel, then take a few miles of logs and feed them into MSTweak3000 to get a rough idea of what VE range you will be in and adjust the rest of your map to where it makes sense (add fuel at high RPM ranges and under higher load). If MST3k (MSTweak 3000) sets your cruise VE at 3200 rpms to 60% you but didn’t adjust the 3700 RPM point and you notice it’s set to 90% there you would want to apply some correction to that to bring it back in line with what MST2k is reporting. Say 65%. At this point you really have got a better starting point to get the most benefit from MSTweak 3000.

So once you’ve got that ‘starting point map’ I mentioned above you’re ready to get some better datalogs. Take a couple hours of logs under multiple conditions (cruise and low rpm, no full throttle power runs yet) and feed them into MSTweak allowing it to correct your map. This will get you MUCH closer to a solid map in very short order.

IMPORTANT: I had a question about this that I’ve verified on the MSTweak forum The datalogs are tied to the VE table that the MS was using when the datalog was created. In other words if you capture datalogs and then update your VE table after those datalogs were captured then those logs are no longer valid data to feed into MSTweak because they were based on your old datalog files.  Datalog, MSTweak to mod you VE table, delete your old ‘used’ datalogs, and then start over at the beginning of the sentence.  Once you mod your VE table your old datalogs are no longer valid to tune with.

So capture some logs, feed them into MSTweak and adjust your VE table and then THROW OUT the old logs. Capture new ones if you want under the new VE table and repeat the MSTweak process until you are happy with cruise and low rpm performance. I tuned for stoic 14.7:1 at cruise. I may lean it out more under cruise at some point for economy. I’ve read best economy is at around 16.5:1 if your car likes to cruise that lean. (Read disclaimer below)

Tuning Higher Load areas of your map manually

Next you look at your map and estimate your fueling needs at higher throttle/map and rpm bins on the map.  MSTweak3000 is great for cruise and low-load but won’t help you very much here.  First you are once again just trying to rough this in based on your cruise VE’s which should now be pretty accurate.  As always err on the side of caution by estimating a bit more fuel than you’d expect to need in these upper areas of the map.  Then get out on the road (safest and probably most effective with someone else driving though I did it by myself) and do some partial accel runs (in the 70-80 kpa range) into the higher rpm ranges, either datalog it or watch in real-time and adjust your table accordingly.  Take one row at a time and tune all higher load (not tuned previously with MST3k) columns in that row.  Then move on to the next higher row and do the same thing.  Rinse and Repeat.  (OK, so don’t rinse anything, just repeat for all rows.)  A wideband system is extremely helpful here. You probably want to tune (NA) to about a 12.5-13:1 AFR under throttle. Adjust your 80-100kpa bins based on the results of your 70-80 kpa tuning, like +10% fuel per 10kpa increase (just to rough it in). Then tune the 80-90 kpa range and repeat the adjustment of the 90-100kpa bins to rough them in further, lastly tune the 90-100 kpa range (full throttle run).

I’m sure I missed something here but it should give you a good idea of what I went through anyways which worked for me. My car is running great though I may still take it to a dyno to perfect the ignition map and get all the power I can out of my 86 MR2.

DISCLAIMER — Read the official tuning section in the MegaManual!  Read the MSTweak help file!  I didn’t write MegaTune or MSTweak3000 so I don’t know everything there is to know about both of them.  Be conservative on the ignition timing while tuning and make sure you know more about this than what you just read here.  Read lots of books and look for successful examples. Bottom line: take it easy and don’t blow your car up… and if you do it’s not my fault!

So where do I get MSTweak?

Where can I ask questions?


MSTweak3000 Won’t Read my Logfiles now that I’ve upgraded to MSnS-E 029!

Resolution from ’71jeep’ on the forums:

Go into Wordpad. Open up your datalog (make sure in file types you select all files other wise you will not be able to see your datalog) and delete the whole first line the first line is just a sentence that states what code it is and a few more words and it should work I ran into the same problem I am not sure what changed.  But I found if you delete this it works just fine.

Taken from thread at:

Also this thread covers other possible causes and solutions: