This page contains some of the basics to using BRE. If you feel something should be here that is not here, feel free to e-mail me at ogle6@hotmail.com.
Throughout this guide I will use the following terminology:
rom window: the main window of a rom when open. It is the window that contains the fuel and ignition tables.
Menu->Menuitem: denotes a menu item to click.
BRE supports most OBD0 vtec ROMs, and as of 2.2 beta, BRE supports NG55/60 ROMs as well. BRE does not support the PR3-93 ROMs (93 being the number on top of the old chip) in a decent manner, so should you be the unlucky soul who has one of these ECUs, you are sort of left in the dark. The fully supported PR3 ROM is the PR3-58.
To open a ROM go to File->Open (or Ctrl+O) and then navigate to the ROM of your choice.
On the OBD0 VTEC ECUs, one Fuel map is for when the car is out of vtec, one is for when in vtec. The values are believed to be the milliseconds the injectors stay open. So a higher number == more fuel.
Likewise with the ignition maps, one is for when the car is out of vtec, and one is for when the car is in vtec. The values are absolute degrees of ignition advance.
On each map, headers at the left are RPM. Headers on the top are vacuum or boost in the intake manifold. Headers that are integers are vacuum in inHg, decimal headers are for boost columns.
The RPM headers/scales are different because of the vtec/non vtec difference. There is more resolution from 500 - 6000 rpm in the non vtec maps and 4000-9000 rpm in the vtec maps. This is because when you are not in vtec you will most likely be between 500 and 6000 rpm, and between 4000 and 9000 rpm when in vtec.
Just for reference, the AFR is NOT indicated anywhere in the ROM itself. You have to tune fuel by observing the AFR through a datalogger or ghetto means and then add or subtract fuel where necessary in the fuel maps. If you have the newest version you will notice a "Target AFR" tab pair. Those are there only for the sake of the editor's auto tune functionality. Editing them will have NO direct effect on the cars tune. They only tell the editor where you want the afr.
The maps are colored for easier viewing. The colors have no other functionality.
In BRE you can edit one cell at a time by double clicking on a cell, or just typing with a cell highlighted. You can edit a range of cells by highlighting the range to edit, then right clicking anywhere in the map. This will bring up a menu with functions to be used on the maps.
BRE supports the Moates.net Ostrich PROM emulator for real-time editing. This can be used to update the tune while the car is running. Heres how you get it up and going:
- Connect the Ostrich and determine what COM port it is on
- Open the Emulation Options dialog by using the menu (Emulation->Emulation Options...) or with the shortcut (Ctrl+Shift+R)
- Edit the options to your preference:
- Connection: the COM port the ostrich is on
- High-Speed: if your ostrich has trouble connecting at high-speed, you can turn this off.
- Live Edit: This will update the ostrich anytime any byte in the ROM is changed (i.e. by editing a map)
- Manual Download: This requires you to download the byte changes to the ostrich (F4).
- Real time tuning: These options are for tuning while using the Datalogger. These options are covered in the Datalogger usage section.
- Click Emulation->Begin Ostrich Session... (Ctrl+R). This will attempt to connect and download the ROM to the Ostrich. If you have the High-Speed option checked, and have trouble connecting, uncheck the high-speed box and try again. The low speed option seems to be more reliable.
Now you can edit the ROM and have your changes downloaded to the Ostrich while the car is running. In live edit mode, BRE will automatically download changes to the Ostrich.
If you need to rewrite the entire ROM to the Ostrich, there is a Put command (Ctrl+Shift+P or Emulation->Put ROM). This is sometimes faster than the download changes function if you are in manual download mode. To verify that the ROM running the car is the same as the ROM being edited in BRE, you can use the Verify function (Ctrl+Shift+V or Emulation->Verify Rom). This will read the ostrich and compare the data to that in BRE, then report back to you whether the ROMs are the same.
From 2.2beta on, the datalogger part of BRE is associated with a ROM. So, in order to open the datalogger you must make sure you have a ROM open, and that the ROM has the ability to datalog with BRE (All ROMs in the BRE zip file have this ability). The datalogger is accessed through the Tools->Datalogger...menu. This brings up the Datalogger form. Next you must connect to the ECU.
- Connect the datalog cable to the computer and to the ECU. Find out what comport the cable is connected to.
- Open the datalogger if it is not already and open the Port Setup dialog (button on the datalogger or Logger->Port Setup... menu). Set the COM port name to the port your cable is connected to. The baud should be already properly set.
- Click OK, then open the Datalogger options (Logger->Options menu) and edit them:
- Interval: This is the number of milliseconds between samples.
- Map Trace: Enable this to have the grid selection follow the cell location being used by the ECU. You can choose to have the logger put the afr/lambda into the cell being used as well. Note that when a value is placed in a cell by the map trace its the immediate last value in that cell. It is NOT the average. Also note that the datalogger is considerably faster with the map trace turned off. By turning it off, you are only turning off the graphical component of the trace. The cell being used by the ECU is still logged even with this off.
- Units: Choose between metric and standard units.
- O2 Sensor: Choose the wideband o2 sensor you are using. This sensor's 0-5V liner output must be connected to your o2 input (the SECOND o2 input on OBD0 VTEC ECUs) in order for this to work. BRE will log the output's voltage through the O2 input on the ecu and calculate the afr/lambda for you. If the o2 sensor you use is not a part of BRE, you can write a script to support your sensor. See the Scripts section.
- O2 Sensor Adjustment boxes: Because of many factors, the afr calculation may not produce exactly the same values as the wideband's software. These boxes let you compensate for this lack of exactness. After the afr is calculated, these boxes are applied in the following format: real_afr = mult_box*calculated_afr + add_box.
- Mixture Unit: Choose between lambda and AFR.
- Now you are ready to connect, so click the Connect button.
- If you want to save a logging session you must click the "log to file" checkbox on the main datalogger form. This will pop up a save dialog so you can choose the file you want to save the session to. The log file produced can be used by the log analyzer, or replay function later.
- Now click start.
- As stated earlier, the graphical component of the map trace is a bit of a resource hog. The datalogger uses less processor with it off.
- BRE allows you to add and subtract fuel through the map trace. The function will change fuel at the current cell being used by the ecu. Press Ctrl+I to increase fuel by a small amount, Ctrl+Shift+I to increase by a large amount, Ctrl+D to decrease fuel by a small amount, and Ctrl+Shift+D to decrease by a large amount. The change amounts are adjustable in the Emulation Options dialog.
BRE supports real-time AutoTune. To use this you must have the datalogger open, a properly setup wideband o2 sensor run into your ECU (2nd o2 sensor (pin C8) on an obd0 VTEC ECU), and an ostrich emulator emulating in live edit mode. BRE needs to know the afr in order to do this. Using the real-time AutoTune feature is very easy. All you need to do is hit Ctrl+Shift+R (or click the Logger->Start Real-Time AutoTune menu item) with the logger running.
Before you start it for the first time, though, there are some settings in the Auto Tune options dialog you should at least look at. These options are available in the Edit->AutoTune Options... menu on the ROM window (not the datalogger). Also, you need to adjust the target AFR in the main ROM window to your desired target AFR.
First, the basics: each time a cell is hit in the logger, the current, east, south, and southwest cells get assigned a weight based on the interpolation values. So a weight of .20 would be 20% usage of that cell on that sample, a 1 is a 100% weight on that cell, meaning that cell is only being used and the surrounding cells are not being used at all.
The Options:
- Min Change:: The minimum change that the tuner will make. If the percentage difference between the measured and the target mixture is lower than this value, nothing will be edited.
- Max Change:: The maximum change that the tuner will make. If the percentage difference between the measured and the target mixture is higher than this value, than this value will be applied.
- Min Freq.:: this is the minimum sum of those weights for the tuner to make a decision in some particular cell. i.e. 4 samples with a .5 weight in, say, cell 2,5 will allow the tuner to average those samples and make a decision on how much to increase or decrease. The higher the number the better the average but the slower it is.
- Min Cell Weight: the minimum weight that will get averaged into the "good samples" pile for that cell. i.e. no sample in some cell with less than 20% usage will be considered in the decision making process. The higher the more "accurate" the sample will be for that cell. BUT I have found that sometimes there is more of an even distribution. For example, my car it idles with an even distribution of ~.20 to ~.25 on the 4 cells in the idle area and so the tuner will do no adjusting because all the cells are outside the acceptable range.
- Max Col Deviation: the maximum that some cell's pulse width value can deviate from it's east and west neighbors. In this case the cell being edited by the tuner cannot be 15% larger or smaller than the east or west cell. This helps keep the tuner from raising the crap out of a cell then lowering the crap out of another cell nearby which would result in an ok average sometimes but would make it unpredictable.
- MaxRowDeviation: same as above but for the row neighbors.
- LatencyIntervals: this is the minimum number of samples that must occur before the tuner can make another decision. Without this, the tuner does not account for the time it takes for the changed value to go through the ostrich, the ecu, into the engine, through the exhaust, to the wideband, through the controller, back through the ecu and into the logger. If this is low (like 0) then the tuner tends to over shoot because it does not see the change right away, and when it does, the afr is way past target. This option is the reason real-time autotune is slow. The problem is that it kind of needs to be slow to allow changes to propagate. I have tested this value at 3 with a 50ms datalogger interval and it was very accurate.
- Cell Block-out: There are 2 (or more) tabs in the AutoTune Options dialog that are labeled "* Fuel Block out." Each of these tabs corresponds to one of the fuel maps and allows you to specify which cells to NOT auto tune. When the background color of a cell in one of these tabs is white, the cell WILL be auto tuned. When the background color is black, the cell will NOT be auto tuned. To change the state of any cell, first highlight the cell in question, then right click and choose the option you wish to use. Shortcuts are Ctrl+B to block a cell or range of cells, and Ctrl+U is to unblock a cell or range of cells.
The realtime autotune is not for driving fast. Its for tuning cruising, idle and/or gradual changes in rpm and/or map. It cant cope with big transitions because the ecu adds corrections beyond the maps at those times, then the tuner sees the change in afr and tries to adjust the map (which isnt necessarily causing the afr change). I use it to tune 800 - 5000 rpm cruising under different loads. I typically find a nice route with hills and flat portions, turn on the real-time auto tune, then go for a short leisurely drive. I try to stay away from big pulls and big changes in TPS.
Each time a correction is made and you are logging to a file, the correction from the Tuner is placed in a column called "Tuner Adj." in the log file. Its in the format "(column`row) multiplier; (column`row) multiplier;"
An example would be: (1`2) 1.05; (1`3) -1.023;
The Log Analyzer is a portion of BRE that enables the tuner to easily look at all the fuel statistics (right now it only deals with fuel) in some previously recorded log file.
The analyzer is accessed in two ways: through the ROM window in the Tools->Analyze Log... menu, and through the datalogger in the Logger->Analyze Current Log... menu item. In the former, you can open any previously recorded BRE log file (.csv), and in the latter, you will be analyzing the file that was most recently logged to.
In the analyzer, there will be 6 tabs: two for the measured mixture, two for the target mixture, and two for the percentage difference between the measured mixture and the target mixture.
The measured mixture tabs contain all of the measured afr/lambda values. In each cell, a weighted average between all of the samples taken in that cell is computed and then displayed. This average depends on the interpolation value taken in that sample as well. So say if a sample was taken at cell 2,3 but the ECU was only using 2% of 2,3 and 98% of cell 2,4 then a .98*afr_in_2,4 will be averaged into 2,4's average and only .02*afr_in_2,3 will be added to 2,3's average. These weights are added up for each cell and if the sum is less than the value in the "Min Freq. Factor" box at the bottom of the form, then the average for that cell is not displayed.
The target tabs contain the target mixture you are looking to get in each cell. At first they will be 20.20 because they have not yet been edited in each ROM. So, you must edit the Target Mixture in each cell to your own values. Editing the target grids is the same as editing the maps: right click for your options.
The percentage difference tabs compute the percentage difference between the values in the measured tabs and the target tabs. This helps the tuner see how far off the tune is. These values are also used by the auto tune function described in the next section.
Values in the cells that do not have colors are guesses made by the analyzer based on surrounding cells.
There are is only one option you can change to change the analyzer's behavior. It is in the AutoTune options (which are in the Edit->Autotune Options.. menu in the ROM window or in the Analyzer->Autotune Options.. menu in the analyzer window):
- Estimate cell gaps: This turns on or off the estimation in the Analyzer.
- Max Est Cell Gap: The max size of the cell gap that will be estimated. i.e. if there is a cell at 2,3 and a cell at 6,3 with measured mixture values, all of the cells in between will be estimated if the Max Est Cell Gap is less than or equal to 3.
The statistical autotune is used by pressing the button at the bottom left of the Analyzer form. It is assumed that the ROM you want to autotune is open and the latest log from that ROM is opened in the log analyzer. When the button is pushed, the differences in the % Differences tabs are applied to the fuel maps with respect to a couple options available in the AutoTune Options dialog:
- Min Change: The minimum change that the tuner will make. If the percentage difference between the measured and the target mixture is lower than this value, nothing will be edited.
- Max Change: The maximum change that the tuner will make. If the percentage difference between the measured and the target mixture is higher than this value, than this value will be applied.
- Cell Blockout: There are 2 (or more) tabs in the AutoTune Options dialog that are labeled "* Fuel Blockout." Each of these tabs corresponds to one of the fuel maps and allows you to specify which cells to NOT auto tune. When the background color of a cell in one of these tabs is white, the cell WILL be auto tuned. When the background color is black, the cell will NOT be auto tuned. To change the state of any cell, first highlight the cell in question, then right click and choose the option you wish to use. Shortcuts are Ctrl+B to block a cell or range of cells, and Ctrl+U is to unblock a cell or range of cells.
BRE now supports scripting. The scripts are written in C# and are then loaded into the BRE script manager if they are to be used. The script manager can be accessed in BRE from the Extras->Script Manager menu (or F5).
Once opening the script manager you will see a big Load button. Oddly enough this button is used to load scripts into BRE. So to load a script, just click Load and find the script you need to load.
To unload a script, highlight the script in the manager, right-click and click unload. To properly unload scripts in BRE you must restart the application (because of a side effect of .NET's Assembly loading and AppDomain BS).
Loaded scripts are remembered in the loadscripts.app file in the plugins directory, and automatically loaded when BRE is started. If some script is updated, it will be recompiled when BRE is started (scripts don't need to be reloaded when they are updated).
If you would like to learn how to write scripts you must go to the BRE API.
BRE Documentation Home