Chevrolet Cruze Forums banner

1 - 1 of 1 Posts

120 Posts
Discussion Starter #1
So, no intro, because I am short on time. It's been a very, very long weekend, and yeah. 'nuff said. Anywaaaaayyyy...

This is what I have used to come up with this. Your results will vary slightly, but the concepts are the same:

2015 Chevy Cruze LT 1.4t manual
AEM 30-4110 Wideband controller (set to p1, reading in lambda)
Serial connection to computer (more on that below)
HP Tuners (standard or better, as long as the software is up-to-date)

Building your serial adapter
First thing is first; don't be a buster and hack up a cable. There is a much nicer way and will only cost maybe 20 bucks (if you cannot afford 20 bucks to save your car from certain death, then you cannot afford to fix your car, and as such, you should not be tuning via this method. Well, unless you go the cable hack method. Which is fine. I just like a cleaner look)

Buy these items:

DB-9 terminal with case and screws (female): $8.99

DB-9 Serial to USB adapter (male): $7.45

Getting your tune on for less than 20 bucks: priceless. ;)

Blue wire from your AEM harness goes to terminal 2 on the FEMALE DB-9 terminal adapter, terminal 5 goes to the same ground as the gauge (these gauges ONLY have a single ground, so use the same ground as your gauge. It doesn't really matter because it's not measuring voltage, so you won't have to worry about offsets. I love that) .

Install the serial driver software for your device (windows 10 should recognize it, but check the device manager and make sure.). It needs to be on com 2, 3, or MAYBE 4. I have only had luck with com2. You can set this up here:


I found that for my system and adapter I had to restart the system. Just do it (it is Windows, after all).

That is it for that.


Setting up channels, math parameters, graphs in HP Tuners

There are few things I hate in the world than inconsistency from vendors and incorrect/out of date docs to go with it. With our particular vehicles, there is some confusion, and little-to-no documentation to clear it up for us.

First, let's just get into the channel setup, then I will explain the silly things along the way...

Now, I personally log the listed channels below. I suggest that you do the same.

Engine RPM (SAE)
Vehicle Speed (SAE)
Engine Coolant Temp (SAE)
Intake Air Temp (SAE)
Manifold Air Temp
Desired Boost
Barometric Pressure Sensor
Manifold Absolute Pressure Sensor
Turbo Bypass DC
Cylinder Airmass
Accelerator Pedal Position
Throttle Position
Injector Flow Rate
Injector Pulse Width Avg. Bank 1
Fuel Pressure (SAE)
Volumetric Efficiency Airflow
AEM - EQ Ratio
Equivalence Ratio Commanded (SAE)
Air-Fuel Ratio Commanded
AC Pressure Sensor
Barometric Pressure (SAE)
Intake Manifold Absolute Pressure (SAE)
O2 Voltage B1S1
O2 Voltage B2S1
Burst Knock Retard
Timing Advance (SAE)
Delivered Engine Torque
Knock Retard

NOTE: There is no MAF channel listed. We don't want it, we don't need it, and you should have your car running in speed-density, open-loop (MAF, COT, DFCO, stock o2, all disabled, as well as setting the closed-loop enable delay to the highest it will go; this will force your car into open loop).

The particular channels that are germane to this discussion are Equivalence Ratio Commanded (SAE) and AEM - EQ Ratio, as well as Barometric Pressure (SAE) and Intake Manifold Absolute Pressure (SAE). Though, if you wish (and most suggest you do), use a generic alternative to the SAE channels. They may or may not be completely accurate as explained further down.

You need to set your wideband to p1, which will read 0-5v in lambda. There is a hole in the back of the gauge, take a tiny flathead, and while it's on, turn the screw within to that setting (refer to the docs on AEM's site here:

This will make the gauge read in lambda (NOT EQ RATIO. More on that below...) and also output lambda through your serial port. Again, no offsets, as it's sending actual data, not voltage to be mathified).

Go to your channel list, and add a channel like so:


NOTE: Do NOT transform this. It's not needed. It is already outputting the proper data, and will match EXACTLY with your gauge.
ASIDE: I log the AFR just for a quick reference or use a math param. I come from a bit older generation and am just training myself to use lambda only. You should NOT be using AFR for this type of tuning. There are various articles about it, so I will not bore you here (if you really want to be bored, read:

Also make sure you grab Equivalence Ratio Commanded! If it ain't in the channels, it will not be logged, and none of this will work.

Math Parameters:

Click Tools => Math Parameters. Under User Defined, find 2 blank ones, and set them up like so. Follow these settings exactly. No need to hit new variable (Yes, I could type them out to copy/paste, but if you type it yourself, you will pay more attention.).


Now, here is the kicker. GM has done some funky things, one of which not being decisive on whether or not to use EQ or lambda. It can vary with generations and with models (even trim packages, from what I understand.). Equivalence Ration Commanded [Sensor] is NOT EQ; It is lambda (EQ: higher than 1.00 === rich. Lambda: higher than 1.00 === lean). This can be confusing; on our cars, the math just works, but I don't know about any other Cruzes except for the one that I have. If you do end up with a GM vehicle and it's reading the inverse (phi), then make a new math parameter and use (1 / [50118]) or whatever your PID is. That will convert it to the inverse reading. Then you just create your chart with the custom math parameter instead of the actual Equiv. Ratio Commanded PID. Which brings us to the most important section...

So, you should already know how to set up a table to log VVE (VVE numbers vs Engine Speed (RPM) and Pressure Ratio (kpa / baro, essentially how much boost over baro you are making). This is actually much better than just reading MAP, as you know your baro for your altitude, and can definitively know how much boost, in kpa, you are ACTUALLY running.).
In Scanner, go to your graphs, right-click, and click Graphs Layout. Add a new graph. For the parameter, select your AEM EQ Math param. For column and row axis', set up engine speed (RPM) and pressure ratio (located under Math => Pressure). Match your settings to mine (if you use certain filters, go for it. I have mine set up so that it only logs in those cells if the desired torque exceeds zero. I will need to fine tune it more, but yeah. You get the idea.). Leave that window open...

Open Editor and go to to your VVE table. Right-click the top row for RPM => column axis => copy labels. Then go back to scanner, and in the field for Column Axis, paste those numbers in there. Don't eff with them. ;) Do the same for your Row Axis (grab the labels from the pressure ratio (row column) in Editor's VVE table), paste them into the Row Axis values field. Leave Unit for column and row as Revolutions per Minute and Number(), respectively. Make sure your new EQ graph is highlighted, then click the equals (=) icon near the top of the window. This will make a copy of that so you don't have to do the column/row axis stuff again. #timesavior

You should have something that roughly looks like this:


Your tables may vary slightly in the values for the labels in the axis, but just make sure that they match your VVE table. The cell hits are to filter out everything that is anomalous between hits, assuring that our average (top-right corner) is a good, solid one.

The shading colours are not important, but the numbers you put in (more precisely, the difference between positive and negative) are. High value, in our case is a reading over 1.00 lambda, which is lean, which means we need to remove fuel, and vice versa. This graph on the right will give us the percentage of difference between our commanded and actual lambda values, and the high value will tell us, say, to add 10% more fuel. This is why we have a conversely negative value to do the opposite. Now, if you happen to have a vehicle/OS that the Equivalence Ratio Commanded is ACTUALLY EQ, you have to do some math. This should be obvious when you go to input the data into your VVE tables:

NOTE: It does not say this many places, but the VVE graph essentially is a representation of air your car can move into the cylinders. The higher the number (not RPM or pressure ratio. The numbers in the cells.), the more air you are telling it that it is getting, and it will adjust it's fuel to compensate. The higher the number in the VVE cells, the more fuel will be calculated to compensate for this air (VVE table does not rely on feedback from sensors. This is your open-loop, all over, base, "this is what my engine flows" graph. It's probably the absolute main source of truth for SDOL (Speed Density, Open-Loop) conditions. This is why VVE tuning is ESSENTIAL for a proper running, fun to drive vehicle. You should be doing this before ANY WOT tuning, spark, or whatever. Dial this in, and all else will be much easier. I haven't tuned my car in 5.5 months before this, and did a LOT of mods to get air in and out. The difference reveals itself every time I log and tune. Now with my wideband, it's much, much better.

Connect to your car and hit record. If your AFR channel, disappears, you did something wrong. Make sure your serial cable is reading properly through termite or some other terminal emulator. If it doesn't read there, check drivers, cabling, etc until you do. Also just try restart your system and/or HP Tuners. Once it doesn't disappear from channels when recording, you should see cells populate upon driving. If you do not see any cells propagating, check your math, then your graphs, in that order. If your channel is showing data, then the next step is the math params. If math params prove correct, then check the graphs. I find that if I update the math, I need to either restart Scanner, or just go back to the Graph Layout and reselect the parameter (click on it, choose your serial param), and it will change when the data updates. Really handy when you are troubleshooting with the car running. The data flowing in will keep updating, so you can play with the math parameters, then update the graph settings, and it will appear. I really wish there were a way to do it in real time so if I need to change Math Parameters, I can see the output in real time, with no averaging....... There is!

Set up a Chart to watch the math or transform (works for anything like that), and when you open Math Parameters while the car is running or at least Scanner is recording, you will see the numbers in that chart update in real time. That has been a huge time saver for me, and for you, if you are NOT using serial and working with your AFR/lambda/eq running through the analog output (like through the A/C Pressure Sensor wire or the Pro Link.). Just a little tip. ;)


Understanding the data, and applying to VVE tables

Now we have logged our data. What to do, what to do... Welp, let's use it. What I did below is take my VVE table and complete screw it up for science. Lol. This is what it looked like on the tune that I logged for this howto (yeah i know, not terrible. I literally just dropped the whole thing down by about 30% and flubbed a bunch of cells randomly):


Then I logged using the methods described above. These are the results of the EQ Error Graph (which is the whole reason we are doing this:


as you can see, this is NOT good. At all. I am running at least 26% more lean than my commanded EQ (or in this case, lambda). Red means that I am lean, and you can also see that I should be adding at least ~25% fuel in those areas. So, highlight the whole histogram (MAKE SURE you are set to "AVERAGE"/A at the top of the histograph) by clicking in the top-left corner of the table. Right-click the table, and copy. Then move to editor and open your VVE table to the default table ("Manifold Switch Closed"). Highlight the whole table, then right-click => Special => Multiply by %.

NOTE: Rule of thumb by a lot of people is to multiply by % if you are over 10% off either way, and multiply % by half if under 10%. You are shooting for a margin of error below 5% at least. 0 would be perfect, but it ain't happening. Aim for 2%, probably won't get there, but under 5% error will suffice.

From here, you will want to hand-smooth the table. There are multiple techniques. You can start with areas around 1-4 or 5 cells that are not filled in, select the closest two that are vertically adjacent, and interpolate between them, then do the same with the cells on the side. You can do it completely by hand using the 3D graph, you can blend deep valleys and high peaks to even them out when they are radical. A tip when you are extremely off is say, if you are 30% lean, just highlight the whole table and multiply by 1.30 to add 30% to it, and it will bring you much closer. Then log, refine, repeat. A couple of examples:


So yeah. That is it. At least the basics. Once you refine this to the point where you are getting 4-5% error or less, you are good to go. Also, if you are getting KR, make sure it's actual KR, check for boost leaks, and I find that if you were running lean in the first place and you add fuel, try to log again and see if you are still getting KR. If you are, THEN pull some timing. You would be surprised what just adding a little fuel can do.

I think I covered the brunt of it. Of course, I will be adding more and more howtos like this as time goes on and I find time. Hope you enjoy.
1 - 1 of 1 Posts