Safe Tuning Guide for Buells

About this online document

This tuning guide has been converted from Nick's PDF document to a web page. I skipped those parts like the EEPROM layouts, that could be found online at this site, to avoid duplicates. This page is available as a standalone html document also.

1. Disclaimer

This guide is intended to assist in the tuning of your Buell ECM.

If you modify your ECM, you may be legally obliged to notify your insurance company. It may also be illegal in some countries to ride on the road with a modified ECM. It should also be stated that modifying your ECM can void your manufacturer's warranty.

  • All numbers shown in lists, tables and maps are examples and are not included for use in your ECM.
  • Before you start your tuning adventure, backup the ECM content, save this file and back it up to a safe location, CD or another machine. This file is essential if anything goes wrong and you need to recover your ECM.
  • Never change more than one thing, or one area at a time! Always know what you have done.
  • Do not adjust areas of the ECM if you do not know what they do.

Modifying your ECM will invalidate warranty, could damage your engine and is performed entirely at your own risk! In the U.S.A., Canada and Europe, federal law makes it illegal for anyone to tamper with, disconnect, remove or otherwise render inoperative any automotive emissions related control device. In general, the entire fuel system and all its individual components (including the EFI ECM) are considered 'emissions related control devices'. The penalties for tampering can be substantial.

Bear this in mind when using this guide!

2. Introduction

This guide has been produced to give the budding tuner some background and methods when using tools, such as ECMSpy, to make changes to the Buell ECM.

Issue 2 of this document describes salient parts of the operation of the DDFI-2 ECM and presents case studies where the described methods have been used to success.

Issue 3 of this document will concentrate on DDFI-3 and is hoped will also cover DDFI.

The authors acknowledge that the document is by no means complete and welcome feedback, reporting of errors, comments and suggestions for further inclusions to

3. ECMs and Fuel Injection

Electronic fuel injection (EFI) is a way of metering fuel to run internal combustion engines. The process is controlled by a electronic device, called the ECU (Engine Control Unit), EEC (Engine Electronic Controller) or ECM (Engine Control Module).

The ECM and its associated hardware forms the Buell EFI system and takes the place of the carburettor and ignition system on your Buell. The ECM also controls the fan and exhaust valve (on XB12 models) and has it's own built in test system for itself and associated hardware, flagging up error codes when problems are detected. The ECM holds the key to getting your bike to run well, within the constraints of the exhaust, inlet and engine hardware.

This document focuses on changes to key fuelling and ignition control parameters and is the result of more than three years development in Europe, America and Australia, predominantly on DDFI-2 systems.

4. Buell ECM History


For the FI tubers, these are ECM types with an "A" as the second letter, i.e. KA210 and JA120


For early XBs, with a "B" as the second letter, i.e. CB060 GB231 IB310 or - Japan only - a "C" as the second letter. This ECM has an additional spade connector for either the active muffler control or pressure compensation. Japanese models come with an additional plug for the throttle solenoid.


For later XBs and 1125s with "D" as the second letter. The first letter usually changes with the EEPROM layout, this is also shown in the EEPROM data, e.g. 89 for YDxxx and 90 for ZDxxx. The three trailing numbers and letters show the release, i.e. M31EC27 for XB or B3HUS10 for 1125. This is also stored in EEPROM for the later ECMs.

5. ECM Operation

To get the best out of the ECM, it is important to understand how it works. This section explains the operation.

Throughout this section, EEPROM parameters are referred to in square brackets, i.e. [ Parameter Name ].

5.1 Fuel Control

The basic function of the ECM is to meter fuel in response to air flow. Figure 1 and Figure 2 show the schematics of operation for the front and rear cylinder fuel control during steady state conditions.

Figure 1 Fuel metering front cylinder
(Click image for an unscaled view)

Figure 2 Fuel metering rear cylinder
(Click image for an unscaled view)

These diagrams can be broken down into:

  • The fuel maps
  • The applied corrections
  • The control loops

In addition to the steady state operation above, fuel is metered to support acceleration enrichment when accelerating. This is discussed later in the section.

5.1.1 Fuel Maps

The starting point for the ECM when deciding how much fuel to deliver to the engine is the base fuel map. The Buell ECMs use separate maps for front and rear cylinders, shown in Figure 1 and Figure 2 as Front Fuel Map and Rear Fuel Map.

The fuel map is read as a function of throttle position and engine speed. This type of fuel control is known as Alpha-N, where Alpha refers to throttle angle and N refers to engine speed.

Each point in the fuel map does not describe a fuel flow, but an injector pulse width, i.e. how long the injector is opened and flowing fuel. If the fuel pressure is increased, or the injector size is increased, then for the same pulse width, the fuel flow will increase. For the technically minded, each value in the table equates to 58 microseconds of injector pulse width duration (DDFI and DDFI-2 only).

The alpha, or throttle angle, is measured by the TPS, the throttle position sensor. If the TPS value is incorrect, the ECM will provide the amount of fuel required for the wrong throttle setting and hence poor running will occur. A worse scenario is if you tune the bike with an incorrect TPS value, then any future correction to the TPS will result in incorrect fuel maps. It is therefore very important to reset the TPS prior to tuning.

The fuel map shows the TPS values on the left (range 0 - 255) and the engine speed across the top. Low throttle, low engine speed is on the bottom left, with full throttle, high engine speed on top right. (Values shown in the table below are just given as an example and not suitable to be used for any Buell.)

1070565342363324232322222020 Front and Rear Maps

The Buell and most air cooled in-line V twins run on different temperatures for the rear and front cylinder due to airflow across the fins. The ECM has separate tables for fuel and ignition on front and rear cylinders with a temperature dependent front cylinder fuel correction. Due to an uneven firing order and intake and exhaust design, the volumetric efficiency and hence fuel requirement for the front and rear cylinder are not the same. It has been noted that changing fuel on one cylinder can also change mixture for the other one, keep this in mind and double check for any side effects. Areas of the Fuel Map

The fuel map can be broken down into different areas which have different requirements on fuelling. Figure 3 is intended to help explain the areas of the fuel map and what the rider needs from those areas. It is only an indication, but should help you understand how the map works.

Fuel Map Regions

Figure 3 Map usage domains – Requirements for engine operation

Note, the XB12 redlines at 6800 RPM, the XB9 at 7300 RPM, hence the final column will hardly be used on a Buell.

Depending on what the bike is used for, different areas of the map will be visited. The following diagram gives an example of the use of the map for road and track riding.

Fuel Map Region Usage

Figure 4 Map usage domains – Road and track operation

For the track, the throttle is generally wide open for max power, however it is shut for maximum engine braking and feathered open to control the power when exiting corners. For road riding, the diagonals are closer together as the use of the throttle is less fierce. It is these diagonals which form the basis of a closed loop area.

The base fuel map is the map where the remapping will be performed

5.1.2 Applied Corrections

Corrections are applied to the base fuel maps to account for changes in atmospheric conditions, engine operating conditions and unit to unit variations, such as engine deterioration and sensor calibration errors. The ECM holds several correction tables to adjust fuel to various changing conditions. Many of these tables rely on engine temperature, like the warm up enrichment or the front cylinder correction.

These corrections are applied constantly during engine running.

The following corrections generally do not need adjustment to suit your bike, unless you live in a unique environment, e.g. up the mountains, in which case, you are probably lucky enough to have wonderful roads with Buell written all over them. Inlet Air Temperature Correction

The inlet air temperature correction compensates for changes in air density due to air temperature changes. Cold air is denser than hot air and as a result more fuel can be burned. As the air temperature reduces, the ECM compensates by increasing the fuel flow.

From simple physics the density as a function of temperature can be calculated. A correction can then be calculated to account for the change in density, about a temperature origin.

With the Buell ECM, the origin temperature is set at 25 deg C.

Figure 5 shows the calculated correction and Table 1 shows a sample table applied to the base fuel map.

Inlet Air Temperature Correction

Figure 5 Correction for Inlet Air Temperature calculated from physics (Ideal Gas Law)

Air Temp. (°C)Fuel (%)

Table 1 Inlet Air Temperature correction values
It is unlikely that this correction will need any attention Engine Temperature Correction

This is more normally referred to on older vehicles as the choke. The ECM uses the rear cylinder temperature and provides additional fuel to a cold engine to compensate for reduced fuel vaporisation performance. Table 2 shows a sample table applied to the base fuel map.

Note that at high temperatures, excess fuel is added for cooling and sensor failure purposes.

Eng.Temp. (°C)Fuel (%)

Table 2 Engine Temperature correction values example
It is unlikely that this correction will need any attention

A separate engine temperature correction is applied to idle and is shown in Table 3. As the engine on an XB typically operates between 180 and 220, the correction applied is 100%.

Eng.Temp. (°C)Fuel (%)

Table 3 Engine Temperature correction values (Idle) example
It is unlikely that this correction will need any attention

As the engine on an XB typically operates between 180 and 220, the correction applied is 100%. Engine Temperature Correction (Front Cylinder)

The ECM allows the correction of the front cylinder fuel table to compensate for cooling differences between the front and rear cylinders. Table 4 shows a sample table applied to the base fuel map.

Eng.Temp. (°C)Fuel (%)

Table 4 Engine Temperature Correction (Front Cylinder) values example
It is unlikely that this correction will need any attention

As the engine on an XB typically operates between 180 and 220, the correction applied is 100%. Battery Voltage Correction

The time taken to open the fuel injector increases as the supply voltage decreases. A correction for battery voltage is applied to compensate for this, however the correction is added (a delta) to the base fuel map rather then multiplied (a factor) as the corrections discussed above. Table 5 shows a sample table applied to the base fuel map.

Battery Voltage (V)Correction

Table 5 Battery Voltage Correction values
It is unlikely that this correction will need any attention Exhaust Gas Oxygen Measurement Corrections

The EGO and AFV are corrections which are derived from the measurement of oxygen in the exhaust, using the O2 or Lambda sensor. The corrections are derived and applied to compensate for other uncertainties, such as changes in air pressure, engine to engine variations, air filter clogging, exhaust deterioration, engine deterioration and sensor calibration errors.

The EGO is a correction derived and applied during Closed Loop and Closed Loop Learn control regimes.

The AFV is a correction derived in the Closed Loop Learn (and Open Loop Learn) regime(s) and is applied in the Open Loop and Open Loop WOT control regimes.

For Buell X1, S3 and XB engines before 2010 model year, the O2 sensor is installed into the rear header only, this is the input to the ECM to calculate the EGO correction. Although the front cylinder's mixture is not monitored by the ECM, EGO and AFV corrections are applied to both cylinders in the same manner.

More advanced EFI systems use additional measurements to improve the accuracy of the air flow calculations. For further reading, see reference 9.

5.1.3 Control Loops

Closed Loop
Where the ECM corrects it's fuelling based on lambda measurements
Closed Loop Learn
Where the ECM corrects it's fuelling based on lambda measurements and calculates a correction to be applied when in open loop
Open Loop
Where the ECM increases the fuelling to either richer than stoichiometric (large throttle openings) or leaner than stoichiometric (closed throttle)
Open Loop WOT
Where the ECM can further richen the fuelling for wide open throttle operation

These control loops are shown in Figure 6.

Fuel Map Control Loop Areas

Figure 6 Fuel map schematic showing control loop areas Closed Loop

Closed loop operation is where the ECM constantly monitors exhaust gas oxygen using anarrow band lambda sensor and adjusts fuel levels to deliver a stoichiometric mixture.

In reality, the closed loop mixture bounces either side of stoichiometric, as it balances on the switching point of the lambda sensor output, if you inspect logged data you will see the O2 sensor sends a sinusoidal signal and a correction (EGO) that bounces either side of 100%.

The closed loop area is defined by a TPS and RPM boundary and as standard, this area equates to low to mid throttle positions at low to mid RPM and is shown in Figure 6.

Referring to Figure 1, the fuelling in the Closed Loop region is applied in the following manner:

  1. From TPS and RPM measurements, the baseline fuel flow is determined from the front and rear fuel maps, see Figure 6.

  2. A factor to account for inlet air density is applied as a function of Inlet Air Temperature.

  3. A factor to account for engine temperature is applied

  4. A factor is applied, EGO, as part of the closed loop control to correct the mixture to stoichiometric as measured by the lambda sensor.

  5. A delta to account for battery voltage is applied

Note that operations 1 to 4 are not necessarily carried out in this order, however the intention is create a fuel flow as close to the target, stoichiometric, as possible.

In addition, the Idle Closed Loop, at the bottom left of the fuel map, Figure 6, operates in the same manner however using different tables for correction.

Also note that the Closed Loop and Closed Loop Learn boundaries change with AFV, this is called Altitude Adjustment.

From an engine operation perspective, the further away the fuelling, driven by 1, 2 and 3, is from stoichiometric, the rougher the engine will feel. Closed Loop Learn

The Closed Loop Learn region is a subset of the Closed Loop region and is where the global correction, the AFV, is calculated to account for all other uncertainties not addressed, these may include; ambient pressure and sensor deterioration. The Closed Loop Learn region occurs at about 40 – 70mph with a steady throttle and is shown in Figure 6.

The fuel is metered the same as in the Closed Loop region, except after 23 iterations of a difference between EGO and AFV, the AFV is reset to equal the EGO correction. Note that the AFV is only calculated in this region when the engine temperature is between [ Calibration Mode Maximum Engine Temperature ] and [ Calibration Mode Minimum Engine Temperature ], see section 18. Open Loop

Open Loop operation occurs outside the Closed Loop and Closed Loop Idle regions, see Figure 6.

Open Loop fuel is metered as in Closed Loop, substituting the AFV instead of EGO correction and applying an open loop factor, [ Open Loop Default Correction ].

The Open Loop region covers the TPS and RPM which are encountered during a transition from Closed Loop to Open Loop WOT and during deceleration. For the former, the AFR needs to provide a smooth transition to WOT and for the latter, the AFR needs to be very lean to ensure the engine returns to idle quickly, to increase the engine braking effect and to reduce the chance of popping and banging in the exhaust. Open Loop WOT

Open Loop WOT operation is shown at the top of the operating envelope in Figure 6.

In the WOT region, by definition, the rider wants maximum power as operation in this region results in high speeds. The choice of AFR is discussed in section 14, stoichiometric trades power for efficiency, hence a mixture richer than stoichiometric is desirable for power and response.

The description of the operation of this loop is the same as Open Loop, but a different user definable factor, the [ WOT Enrichment ] factor is used. Open Loop Learn Function

A neat little ECM function is the Open Loop Learn.

This uses the O2 sensor to detect rich or lean running conditions and operates in two ways:

  1. If, during a decel, the ECM detects a rich mixture, the AFV is temporarily reduced.

  2. If, at WOT, the ECM detects a lean mixture, the AFV is temporarily increased. This is shown clearly in Figure 7.

For decel operation, the following parameters are applicable:

[ Deceleration Learn Maximum RPM ]
Upper RPM for Open Loop Learn (decel)
[ Deceleration Learn Minimum RPM ]
Lower RPM for Open Loop Learn (decel)
[ Deceleration Learn Minimum Duration ]
Minimum number of cam revs for validity
[ Deceleration Learn Minimum Readings ]
Number of decels where mixture measured as rich before AFV is reduced

For WOT operation, if the mixture is lean, the AFV is increased. The following parameter is applicable:

[ Open Loop Enrichment Delay ]
Time at which mixture is lean before increasing AFV

This function can be enabled/disabled through the [ System Configuration ] Byte, see Figure 8.

Open Loop Learn

Figure 7 Example of Open Loop Learn operation at Wide Open Throttle

System Configuration Bits

Figure 8 [ System Configuration ] Byte definition and example of use Boundary definition

It should be noted that all these region boundaries can be set by the user, however think carefully why you would want to reset them.

See section 18 for:

[ Closed Loop Region Upper Boundary ]
Definition of Closed Loop region upper boundary
[ Closed Loop Region Lower Boundary ]
Definition of Closed Loop region lower boundary
[ Calibration Mode Region Upper Boundary ]
Definition of Closed Loop Learn region upper boundary
[ Calibration Mode Region Upper Boundary ]
Definition of Closed Loop Learn region lower boundary
[ WOT Region ]
Definition of WOT region lower boundary

5.1.4 Acceleration Enrichment

Acceleration Enrichment is one of the more complex corrections for changing from one steady state condition to another, comprising several tables and values. Acceleration Enrichment is applied when the throttle is opened fast to richen the mixture and prevent the bike from hesitating whilst giving a fast ans smooth transition between steady state operating points.

The amount of fuel is dependent on the following conditions:

  • throttle movement

  • engine temperature

  • engine speed

The ECM differentiates between a light acceleration and full acceleration condition. To identify such a condition the ECM monitors throttle position and calculates a moving average to smooth the curve and set up a trend value. By default the moving average is calculated using the following formula:

TPS avg (n) = TPS avg (n-1) + (TPS curr - TPS avg (n-1)) * 5/64

To results of that computation are shown in the table below. The values start with a steady 45° opening of the throttle, which is then opened quickly to full 90° and back again:

TPS curr (°)
TPS avg. (°)
TPS Diff. (°)0.030,042.739.336.333.430.828.426.29.1-21.6-19.9-18.3

Table 6 TPS calculations used for accel enrichment

A small graph might illustrate the trend better than numbers only:

TPS Trend

Figure 9 TPS calculations used for accel enrichment

This graph shows the current throttle position, the average throttle position (trend) and the difference between the current and the average throttle position (which will be negative in deceleration conditions also). By default, light acceleration starts at a TPS difference of 0.3°, and full acceleration enrichment is triggered at a TPS difference of 15° - 18°. As long as these conditions are met, acceleration enrichment is active. The amount of fuel added is calculated from the actual throttle position and adjusted to engine temperature and engine speed in two other tables:

RPM (1/min) Fuel (%)
800 160
1200 125
2500 60
5000 15
Eng.Temp. (°C) Corr. (%)
0 210
25 130
130 50
220 20

Table 7 Applied accel enrichment correction examples

Acceleration enrichment percentage is calculated by throttle movement and RPM first and then temperature corrected according to engine temperature. By default the enrichment lasts one revolution, then the throttle position is evaluated again by the formula given above.

5.2 Ignition control

As shown in Figure 10, ignition control takes the form of a base map, a correction for engine temperature and a configurable function for reducing the advance (less power) for noise abatement. This is discussed more in section 5.4.

Figure 10 Ignition timing function
(Click image for an unscaled view)

Checking static timing

Before adjusting any settings for timing, make sure the static timing is set correctly. The procedure to check the timing is as follows, quoted from the service manual:

  1. Raise rear wheel using a lift or jacking point. Tie down motorcycle for additional support.
  2. Remove timing inspection plug.
  3. Place transmission in 5th gear.
  4. Raise sidestand.
  5. Connect Digital Technician (or EcmSpy) to data port on motorcycle and select the Static Timing (EcmSpy: Active Tests) procedure screen.
  6. Turn on ignition and move handlebar stop switch to the run position. Listen for fuel pump cycling to confirm ignition is active.
  7. Turn or gently bump the flywheel in a forward direction using the rear wheel. Position the flywheel TDC mark at the very left edge of the inspection hole.
  8. If the engine is coming up on the compression stroke for the front cylinder, the screen will be displaying LOW - 0 volts (EcmSpy: CPS signal off) with timing mark at left edge of window.
  9. Gently bump flywheel forward in tiny increments.
  10. If the static timing is correct, the screen will switch to HIGH - 5 volts (EcmSpy: CPS signal on) at the precise moment the timing mark exactly centers in the inspection window.
  11. If engine is coming up on the compression stroke for the rear cylinder, the screen will be displaying HIGH - 5 volts as timing mark is just coming into view at left edge of window and will switch to LOW - 0 volts at same point as the timing mark continues through the window. (If this is observed, turn flywheel forward one revolution to bring engine to compression stroke for front cylinder.)
  12. If timing is correct, install timing inspection plug and tighten to 120-180 in-lbs (14-20 Nm).

5.2.1 Ignition map

As with the fuelling, the starting point for the ECM when deciding the time of the spark is the base ignition map. The Buell ECMs use separate maps for front and rear cylinders.

The fuel map is read as a function of throttle position and engine speed. As with the fuel control, this is known as α-N (alpha-N), where α refers to throttle angle and N refers to engine speed.

Each point in the ignition map describes an advance in degrees multiplied by 4.

5.2.2 Ignition correction at idle

The ECM corrects ignition timing when in Closed Loop Idle. The correction table is defined as additional ignition advance as a function of engine temperature.

See section 18 for [ Idle Spark Advance Temperature Adjustment ]:

Eng. Temp (°C)Additional Advance (°)
0 30
12 21
60 7
160 0

Table 8 Idle ignition advance correction

At engine operating temperature, the additional advance over the base ignition map is zero (advance is clamped at 0 degrees at 160 degrees C and above). The base ignition map can be modified to give a smoother idle.

5.2.3 Ignition correction as a function of engine temperature

The ECM has the ability to correct ignition timing when in all control regimes apart from Closed Loop Idle. The correction table is defined as additional ignition retard as a function of engine temperature. On some, if not all, ECMs, this function is not used.

See section 18 for [ WOT Spark Advance Reduction ]:

Eng.Temp (°C) Additional Retard (°)
100 0
180 1
215 2
250 3

Table 9 WOT ignition retard correction

5.2.4 Rev limiter

Rev limiting is done in response to either:

  • Excess engine speed

  • Excess time at a fixed engine speed

  • Excess engine temperature

The budding tuner will only be interested in raising the rev limiter for the first two of the above, however, bear in mind that XB engines do not like to be revved much beyond 7000 RPM.

Limiting due to excess engine temperature is described in section 17. Engine speed limiting (simple)

The rev limiter operates in three modes:

Soft Skip spark operation - less sparks are skipped than delivered

Hard Skip spark operation - more sparks are skipped

Kill all sparks are skipped

Each mode is configurable by an 8 bit binary word for front and rear. Examples below.

Soft (front) 1 1 1 0 1 1 1 0
Soft (rear) 1 0 1 1 1 0 1 1
Hard (front) 0 1 0 1 0 1 0 1
Hard (rear) 1 0 1 0 1 0 1 0
Kill (not configurable) 0 0 0 0 0 0 0 0

Each limiter is triggered on by a speed threshold (usually higher than off) and triggered off by a speed threshold (usually lower than on).

[ RPM Fixed Soft Limit Trigger ]
typical value 6750 RPM for 1200 engines
[ RPM Fixed Soft Limit Recharge ]
typical value 6700 RPM for 1200 engines
[ RPM Fixed Hard Limit Trigger ]
typical value 6800 RPM for 1200 engines
[ RPM Fixed Hard Limit Recharge ]
typical value 6750 RPM for 1200 engines
[ RPM Fixed Kill Limit Trigger ]
typical value 7000 RPM for 1200 engines
[ RPM Fixed Kill Limit Recharge ]
typical value 6950 RPM for 1200 engines Engine speed limiting (time at speed)

The ECM includes a function whereby the ignition can be cut either soft, hard or kill, when the engine has been used above a speed threshold for a set amount of time. This function is recorded as having hampered Buell land speed records.

[ RPM High Speed Hysteresis High Value ]
High speed threshold, hysteresis pair, typical value 120
[ RPM High Speed Hysteresis Low Value ]
Low speed threshold, hysteresis pair, typical value 110
[ RPM High Speed Timed Limit Timer Start ]
RPM limit timer start point, high speed, typical value 6300 RPM
[ RPM High Speed Timed Limit Timer Reset ]
RPM limit timer reset point, high speed, typical value 6000 RPM
[ RPM High Speed Timed Hard Limit ]
Timed RPM limit, high speed, high, typical value 6400 RPM
[ RPM High Speed Timed Soft Limit ]
Timed RPM limit, high speed, low, typical value 6300 RPM
[ RPM High Speed Timed Soft Limit Delay ]
Soft RPM limit delay, high speed, typical value 10 seconds
[ RPM High Speed Timed Hard Limit Delay ]
Hard RPM limit delay, high speed, typical value 12 seconds
[ RPM Low Speed Timed Limit Timer Start ]
RPM limit timer start point, low speed, typical value 6300 RPM
[ RPM Low Speed Timed Limit Timer Reset ]
RPM limit timer reset point, low speed, typical value 6000 RPM
[ RPM Low Speed Timed Hard Limit ]
Timed RPM limit, low speed, high, typical value 6400 RPM
[ RPM Low Speed Timed Soft Limit ]
Timed RPM limit, low speed, low, typical value 6300 RPM
[ RPM Low Speed Timed Soft Limit Delay ]
Soft RPM limit delay, low speed, typical value 3 seconds
[ RPM Low Speed Timed Soft Limit Delay ]
Hard RPM limit delay, low speed, typical value 5 seconds

Note: Setting either time to 255 disables them.

5.3 Active Muffler control / pressure measurement and correction

The Active Muffler Control (AMC) is used on the XB12 range. It shares the ECM inputs with pressure measurement for fuel map correction.

Only one of these functions can be used. The default is the AMC.

5.3.1 Active Muffler Control

The AMC serves two purposes; to improve mid-range torque and to decrease noise. The AMC is covered by the patent US 7,347,045 B2. Operation and effect

The AMC is operated by the servo motor located under the airbox cover. A configuration byte, [ Active Muffler Configuration ] controls the mode of operation and including continuous operation or operation only at WOT (default), see Figure 11.

Unless there is a lot of dyno time, the settings can be left alone.

Active Valve Configuration

Figure 11 [ Active Muffler Configuration ] Byte definition and example of use

The operation for a 2005 XB12R is described below.

Exhaust Valve Effect

Figure 12 Effect on torque


open = short pipe
PointAMC StateValve StateRPM Region
1AMC offclosed = long pipebelow 1450 RPM
2AMC onopen = short pipeabove 1500 RPM
3AMC onbelow 3300 RPM
4AMC offclosed = long pipeabove 3350 RPM
5AMC offclosed = long pipebelow 5050 RPM
6AMC onopen = short pipeabove 5100 RPM
Pipe with AMC on

Figure 13 Open / AMC on

Pipe with AMC off

Figure 14 Closed / AMC off Removal

Most aftermarket pipes do not feature the AMC, which makes the servo motor unnecessary. You can either do one of the following:

  1. Leave the motor connected either with the cable disconnected at the motor or at the muffler.

  2. Create a false motor, see Figure 15.

  3. Disconnect the motor connector and/or remove motor, this will result in the Check Engine Light (CEL) being illuminated but will give you space under the airbox cover for other accessories. The CEL can be "turned off" by inhibiting the error checking in Byte 5 of the Enabled Diagnostics.

False Servo Motor Circuit

Figure 15 False servo motor circuit design

5.4 Noise Abatement Logic

The XB9 bikes up to and including 2007 model included logic to retard the ignition timing at conditions corresponding to noise test points.

This results in a flatspot at around 3000 RPM.

The simple way around this is to remove the speed input to the ECM, this is a white wire on the grey ECM connector, and hence this modification has become known as The White Wire Mod.

The ECM uses this as one of the criteria for retarding the ignition to meet noise legislation and hence the function can be muted in the ECM.

5.4.1 Logical disconnection

Logical disconnection involves setting the [ Spark Advance Retard Configuration ] byte to turn the function off. This is defined in Figure 16. A typical configuration for the function turned ON is shown in Figure 17, a typical configuration for the function turned OFF is shown in Figure 18.

Note the unsetting of bit 1, "Activate on WOT transition".

Turning off this one bit is a surgical operation, however setting the whole byte to zero works equally as well, and is used on the Parts and Accessories (P&A) Race ECMs.

Spark Advance Retard Configuration

Figure 16 [ Spark Advance Retard Configuration ] byte definition

Spark Advance Retard On

Figure 17 Typical configuration for the function turned ON

Spark Advance Retard Off

Figure 18 Typical configuration for the function turned OFF

5.4.2 Physical disconnection

  1. Locate the ECM
  2. Remove the grey connector
  3. Remove seal and place somewhere safe
  4. Carefully prise out the orange retainer using a small electricians screwdriver (indentations already there to help on the sides)
  5. Locate the white wire at pin 8 (small numbers are present on the back of the connector)
  6. Pull on the white wire whilst holding back the locating tag inside the plug
  7. Once removed, refit the orange retainer, replace the seal and plug the grey connector back into the ECM
  8. You MUST insulate the removed terminal as it's connected to the VSS and speedometer (heatshrink is good) and then cable tie it back to the loom.

6. Tuning methods

Depending on what you want to get out of the bike and what instrumentation you have available, the tuning method may be different.

6.1 Tuning goals

The tuning goals should be, starting from the bottom of the map up:

  1. A stable idle
  2. Good fuel economy and smooth running at fixed speed (cruise)
  3. Good response when you open the throttle, however much
  4. As much power as possible at wide open throttle
  5. Good pop free engine braking when you shut the throttle from load
  6. A prompt return to idle when blipping the throttle with the engine unloaded

6.1.1 Keeping the standard control regions

This means to use the Closed Loop, the Closed Loop Learn, the Open Loop and the Open Loop WOT regions and of course keeping the O2 sensor connected.

This is the favoured method because it keeps the control simple and maintains the protection of Open Loop Learn etc. and accommodates changes in atmospheric pressure.

6.1.2 Turning off the lambda (O2) sensor

This leaves the engine with no correction for atmospheric pressure, compensation for intake ram effects, or correction for running lean at WOT.

6.1.3 Either of the above with pressure compensation correction

The lambda sensor input to the ECM is removed and a pressure sensor is used to allow compensation to be made to the fuelling based on inlet pressure changes. Depending on the position of the sensor and the configuration in the ECM, this method can also be used for forced induction systems, either turbo-charging or ram effect.

6.2 Target AFRs

Figure 19, based on Figure 3, shows the target AFRs for mapping to achieve the tuning goals in section 6.1.

The AFR is only really practically measured using a lambda sensor. In days of old, "plug chops" could be performed, however due to the inaccuracy of this method and the location of the plugs on Buell XBs and the later Helicon engines, this is discouraged.

AFR Targets

Figure 19 Target AFRs for tuning goals

6.2.1 Stable idle

A stable idle is possible in closed loop, i.e. at 14.7:1 AFR under the standard control regimes. Increasing to 13.2:1 will make it crisper. Some tuning manuals, such as reference 9, suggest richer mixtures, however this is likely to be aimed at carburettored applications where wall wetting, due to poor atomisation, is more likely to occur.

6.2.2 Good fuel economy and smooth running at fixed speed (cruise)

Everything has a time and a place. Max power is needed when you want it, but when you are at cruise, you want the fuel in your tank to last between fuel stops, you want to minimise the amount of times you need to stop and you want to benefit from the amount of money NOT spent on fuel so you can spend it on more tuning goodies.

Figure 43 in Section 15 shows the relationship between efficiency, power and AFR.

For the standard control regimes, you are limited to an AFR of 14.1:7, for DDFI and DDFI-2, this is only on the rear cylinder. For DDFI-3, you are limited on both cylinders. Since the front and rear maps can be modified independently, on DDFI and DDFI-2, the front can be made to run leaner to reduce fuel consumption further.

By turning off the lambda sensor, you can run leaner which may allow you to run more efficiently. Some engines will run leaner than others without undue cycle by cycle variation (misfire) which ultimately results in more fuel burn.

Target AFR here is 14.7:1 for the closed loop controlling cylinder on the standard control regime, or between 14.7:1 and 16.2:1 on the closed loop non-controlling cylinder on the standard control regime or when the lambda sensor is turned off.

6.2.3 Good response when you open the throttle, however much

The accel enrichment controls this facet.

6.2.4 As much power as possible at wide open throttle

Back to Figure 43 in Section 15 shows that max power occurs at an AFR about 10% richer than sotichiometric. This is backed up by the findings of the case study in section 8.1. Target AFR for max power is 13.2:1. A zone of wider opened throttle than cruise is set up as a bridge, the target AFR here is 5% richer than stoichometric to smooth the transition, i.e. 14.0:1 AFR.

6.2.5 Good pop free engine braking when you shut the throttle from load

Popping in the exhaust is caused by unburned fuel and air, often available due to leaks in the exhaust joints. With carburettored engines, closed throttle is a compromise for this region as a result of the attention given to a stable idle. With a fuel injection system, the fuel can be cut to almost zero during high speed closed throttle use. Cutting the fuel to zero will, however, result in poor respose when the throttle is opened again. Target AFR here is leaner than stoichiometric, perhaps 17:1, but can be adjusted easily to achieve the response required with no popping.

6.2.6 A prompt return to idle when blipping the throttle with the engine unloaded

Connected to the above, however an overshoot where the engine runs down below idle is a pain in the ass. A slight ramp up on fuelling towards stoichiometric for the last 1000 RPM is needed here.

6.3 Type of lambda sensor

Section 14 discusses the two types of lambda sensors which are commonly used for tuning, the Narrowband and Wideband varieties.

The use of each depends on what your goal is, referring to section 6.1;

6.3.1 Keeping the standard control regions

Since the standard O2 sensor will be used for control when tuning is complete, the standard O2 narrow band sensor needs to be used to set up in the Closed Loop and Closed Loop Learn for the rear cylinder.

As discussed, the standard O2 sensor cannot measure AFR accurately other than stoichiometric (14.7:1 for gasoline fuelled vehicles), therefore for any region outside the Closed Loop and Closed Loop learn, a Wideband sensor is required.

The above statement is disputed by some, however evidence to support is presented in 14.

6.3.2 Turning off the lambda (O2) sensor

Since there will no longer be any closed loop mixture control on the engine, it is now important to understand the AFR at all fuel map conditions. For this reason, a Wideband lambda sensor is needed.

6.4 Number of lambda sensors required

Since the engine is an inline V twin, the rear cylinder is going to run hotter than the front due to the reduced cooling effect. In addition to this, the standard headers, and the majority of aftermarket headers, join the front and rear cylinders at a junction (or collector). As a result, the speed at which peak volumetric efficiency occurs will differ between front and rear.

The standard engine is fitted with a lambda sensor in the rear header, close to the port, as can be seen from Figure 20 in the top left. Obviously, this lambda sensor can only tell you what is going on in the rear cylinder. If you tune with a single lambda sensor, you need to make some assumptions about the unsensored (front) cylinder.

O2 Sensor Bosses

Figure 20 Modified standard headers (XB12) showing standard lambda sensor boss on rear header and additional bosses upstream of the collector

6.4.1 Tuning with one lambda sensor

As discussed above, if you intend to tune with one lambda sensor, you need to make some assumptions about the unsensored (front) cylinder. The easiest to make is that the shape of the map is correct and that any % changes to the rear cylinder should equally apply to the front.

This assumption is only valid if the map pair being modified is applicable to the exhaust fitted, particularly the headers, and that the map pair was created accurately, i.e. not cobbled together assuming that the ECM will correct for big errors.

If using a Wideband sensor in the standard boss, be sure that it will fit without being damaged by the fan.

6.4.2 Tuning with two lambda sensors

The advantage of tuning with two lambda sensors is that you will know exactly what is going on in each cylinder. Tuning with two lambda sensors simultaneously, rather than swapping one lambda sensor between front and rear, will allow you to see any interaction between cylinders made by a change in fuelling to one of them.

At least on additional boss will need to be welded onto the headers. The additional boss(es) need to be placed as close to the exhaust port as possible, for minimal lag in measurement and to avoid measuring any interacting exhaust gas from the other cylinder, whilst allowing the sensor and heater wires to be routed without fouling.

If tuning with the standard control regimes and retaining the stock O2 sensor, it is advisable to mount two slave sensor bosses, for two reasons:

  1. Even though most wideband sensor packages allow two outputs simultaneously, WB and simulated NB, the NB output may not be identical to the stock sensor, and you should not be setting maps up to work with a sensor you are not going to be using in service.

  2. Some WB sensors cannot deliver enough current to maintain the output voltage when connected to a Buell ECM due to the low input impedance of the ECM. In simple terms, the ECM will measure the AFR erroneously. The Innovate LC-1 suffers from this issue, whereas the Tech-Edge is reported not to.

Of course, slave O2 sensors do not have to be positioned on the pipe, but can be mounted externally, measuring the O2 content of the exhaust by drawing off gas using a vacuum pump. This system works OK on a dyno, however no so if you want to set your maps up when riding the bike. This method introduces a lag into the system, as there will be an additional delay between the exhaust stroke and the sensor reading. This will be a function of engine speed, vacuum pressure and pipe length.

Section Table of Contents [ hide ]

7. Methods

7.1 Overview

The flowcharts presented here are intended to cover every eventuality. Not everybody has a wideband lambda sensor, not everybody has access to a dyno, however, the cornerstone of all these methods is the use of the ECM's EGO correction to tell you what the fuelling needs to be in the Closed Loop areas.

It couldn't be simpler to set up these regions, the use of datalogging allows you to tune your bike for real world operation. Far more enjoyable than slaving over a dyno to set a bike up in an environment it will never run in. Don't misunderstand me, a dyno has it's place, especially for setting up the open loop areas and for finessing the ignition.

Logs need to cover as much of the fuel map as possible, so 30 minutes is probably a minimum, with some town riding and some out of town riding, just rolling on the throttle and rolling off.

As you log, understand your bike and how it is responding, make mental notes as you ride and write them down at the side of the road noting the time when things happened.

A helpful trick is to mark the throttle at different positions so you can equate back to the ECM maps. This is a necessity for some of the methods presented later.

Setting your closed loop learn areas up will result in a stable AFV close to 100%. After remapping, and after a few rides, check the AFV again, it should be close to 100, possibly between 95 and 105. Don't get hung up on the AFV, it is there to account for any changes that the sensors on the bike cannot account for. From day to day the AFV will change.

7.2 Pre-requisites

As well as ensuring your bike is in mechanically sound condition, with no air leaks in the intake, nor the exhaust, the pre-requisites are:

  1. Save the current EEPROM content
  2. Check the static timing
  3. Set the TPS
  4. Note the AFV and multiply both front and rear maps by it's value
  5. Set the AFV to 100%

Failure to save the EEPROM means you have no baseline to return to, for example if you put the stock exhaust on or if this tuning experience is too much for you ...

Failure to set the TPS could mean that your ECM will be reading from the wrong point on the map, in which case all your hard work will be done to a setup which can probably never be replicated.

Multiplying the maps by the AFV and resetting it means that you will be remapping with the open loop area factored correctly in relation to the closed loop learn area. Sure this can probably be bettered as part of the mapping exercise, but you need to go into battle with your strongest army.

Tuning Prerequisites

Figure 21 Pre-requisites

Tuning Process Finder

Figure 22 Process finder

Tuning w/o O2 Sensor

Figure 23 Method for O2 sensor disconnected

Tuning w/ rear NB Sensor

Figure 24 Method for NB sensor in rear boss

Figure 25 Method for NB sensor and WB sensor in rear boss
(Click image for an unscaled view)

Tuninig w/ Two NB and WB Sensors

Figure 26 Method for NB and WB sensor is front and rear bosses

Figure 26 Method for NB and WB sensor is front and rear bosses
(Click image for an unscaled view)

Tuninig w/ Slave WB Sensors

Figure 27 Method for NB and WB sensor in front and slave rear bosses

Figure 27 Method for NB and WB sensor in front and slave rear bosses
(Click image for an unscaled view)

8. Case studies

8.1 Tuning of XB12R – Ti Force Exhaust – Standard Control Regime

This case study follows the generation of maps on an XB12R to work with a Ti Force exhaust and K&N filter using the standard control regimes.

The following steps were taken:

  1. Disable error checking for the AMC servo removal
  2. Installation of slave lambda sensor bosses
  3. Setting up of Closed Loop, Closed Loop Learn and Idle Closed Loop on the rear cylinder
  4. Setting up of Closed Loop, Closed Loop Learn and Idle Closed Loop on the front cylinder
  5. Setting up of Open Loop Wide Open Throttle and Open Loop at high throttle openings
  6. Setting up of Open Loop at closed throttle
  7. Tidying up of idle

8.1.1 Disable error checking for the AMC servo removal

See section

8.1.2 Installation of slave lambda sensor bosses

Modified Ti Force Headers

Figure 28 Modified Ti Force headers (on the bench)

Fitted Ti Force Headers

Figure 29 Modified Ti Force headers (fitted)

Ti Force with WB-O2 installed

Figure 30 Bike with two Innovate LC-1 Wideband Lambda Sensors and controllers fitted

8.1.3 Setting up of Closed Loop, Closed Loop Learn and Idle Closed Loop on the rear cylinder

Due to the number of points in this region, tuning was carried out by logging data using ECMSpy on a Palm E2 using the standard O2 sensor in it's boss. Data was filtered out from other regions including that with acceleration enrichment using Excel (although this could have been done using Mega Log Viewer):

  1. Data was discarded where the engine temperature was less than 150 deg C as the engine would not be close to its operating temperature. Engine temperature during a 90 minute ride is shown in Figure 31.

  2. Data was discarded where the [ WOT Enrichment ] and [ Open Loop Default Correction ] did not equal 100, i.e. when the engine was operating in Open Loop WOT or Open Loop. This could have been done using the "Engine Byte" in the log.

Engine Temperature Log

Figure 31 Engine temperature during a 90 minute ride

The VE Analysis tool from MegaLogViewer was used with the ECM's correction (GEGO) only (note that the O2 sensor measurement was not used as was already accounted for in the GEGO) to correct the map at each part visited. Logging was repeated a further two times and the map corrected once again.

Each time the analysis was repeated, the differences invoked on the map became smaller.

8.1.4 Setting up of Closed Loop, Closed Loop Learn and Idle Closed Loop on the front cylinder

The above was repeated for the front cylinder using a second heated narrowband sensor mounted in the slave lambda sensor boss welded to the front exhaust.

8.1.5 Setting up of Open Loop Wide Open Throttle and Open Loop at high throttle openings

The Open Loop region was set up on the dyno using the dual LC-1 sensors in the front and rear, supported by the Innovate Log Works software.

The dyno emissions meter was only able to measure the combined output from both cylinders at the exhaust exit, the tube was difficult to push up the exhaust into the rear or front headers and will have suffered from considerable lag compared to the slave sensors.

Runs were made at 255, 175 and 125 TPS 8bit, dyno parameters were recorded with the output from the emissions measurement equipment. In addition, during each run, the LogWorks screen and engine parameters, using the ECMSpy overview page, were monitored.

The 255 line was the hardest as we had to work hard to define the shape of the front and the rear independently, as dictated by the inlet and exhaust interaction. We repeated this about 20 times.

With that done, the values for the 175 line were estimated based on the values derived for WOT, and trimmed over about 4 runs. The same method was used for the 125 line.

Best performance on the 255 (or WOT) line was given by aiming for 13.2:1 AFR for front and rear. As a test, fuelling was increased to give 12.5:1 AFR, but we saw no discernable difference and if anything, a slight reduction in power.

The ignition advance was also increased by 2 degrees but again, we saw no discernable difference.

Power was up to 90 rwhp from low 80s, see Figure 32, as a result of turning the stock fuel map into something that works with the Ti Force. This result is not far off what Ti-Force advertise the system as giving, see Figure 33.

Ti Force Dyno Graph 1

Figure 32 Comparison between WOT dyno runs pre and post tuning

Ti Force Dyno Graph 2

Figure 33 Ti-Force publicity dyno chart

After the dyno time, the resulting new maps gave a huge boost in the last 2000 RPM.

8.1.6 Setting up of Open Loop at closed throttle

Before the mapping exercise was started, the exhaust would pop and bang on the over-run and the engine was sometimes a little slow to reach idle. To correct this, the TPS was determined at closed throttle and all map entries from 2300 RPM upwards were set to a value of 10.

8.1.7 Tidying up of idle

As a result of setting up the Closed Loop areas, the idle mixture setting was complete, however the ignition timing was not optimised. Since the idle region is defined with a closed throttle, ignition advance was not going be knock limited. Timing in the idle region is corrected as a function of temperature , see 5.2.2, however the base map for DDFI and DDFI-2 is set for zero advance.

For optimisation, the base map was increased in steps of 2 degrees until engine speed stopped increasing. At this point, the idle screw was adjusted to bring the idle speed back down to 1050 RPM. The result with the fuelling changes was a more stable idle at steady state and on engine deceleration.

8.2 Tuning of XB12X – Drummer Original Exhaust – Deleted O2 Sensor with Pressure Compensation

This project was carried out with no lambda sensor input to the ECM. A pressure sensor was selected and connected to the ECM and the ECM configured to use it. Pressure compensation is discussed in section 19.

8.2.1 Pressure sensor selection

The pressure sensor used was an MPX4250AP1. Only pins 1 to 3 are used, as shown in Table 10.


Table 10 MPX4250AP pin outs

For this reason, pins 4, 5 and 6 can be cut off at the case, as shown in Figure 34.

MPX4250 Pressure Sensor

Figure 34 MPX4xxxAP case with non-function pins removed

As directed by the pressure sensor data sheet, capacitors were soldered across the sensor terminals. The sensor was powered from the 5V sensor power and sensor ground (pins 1 and 7 respectively of the grey ECM connector).

8.2.2 ECM configuration

AFV was set to 100% and limited by setting [ AFV Maximum Value ] and [ AFV Minimum Value ] to 100%

The O2 sensor operation was turned off by setting [ O2 Sensor Test Minimum RPM ] and [ O2 Sensor Test Minimum TPS ] to 255.

[ Airbox Pressure Configuration ] was set to 196 (11000100)

[ Barometric Pressure Key-On Maximum Value ] and [ Barometric Pressure Key-On Minimum Value ] were set to 100 to fix the baro pressure to 100 (this is used for comparison with airbox pressure). Table 11 shows the MPX4250 output as taken from the component datasheet.


Table 11 MPX4250 - output according to datasheet

[ Airbox Pressure Sensor Data ] was set up as shown in Table 12 for the ADC count/kPA table for the MPX4250.

ADC countkPa

Table 12 [ Airbox Pressure Sensor Data ]

[ Baro Correction ] was set up set up as shown in Table 13 for the baro pressure/baro corr% table. For the position of the sensor, under the seat, this table needs to be set up like this so the fixed value of barometric pressure does not apply a correction.

Baro PressureCorrection (%)

Table 13 [ Baro Correction ]

[ Airbox Pressure Correction ] was set up as shown in Table 14 to set up the (airbox pressure % of baro)/(corr air box pressure %) table, which in this implementation can be simplified to Baro kPA/correction%. The values assume a 3% reduction in fuel per 5 kPa.

ABP/Baro (%)Correction (%)
68(sensor failure) 100
107(sensor failure) 100

Table 14 [ Airbox Pressure Correction ]

The ECM operation can be seen by logging data, the applied correction is logged on unknown61 and the sensor output ADC is logged on unknown63.

8.2.3 Tuning method

Two bosses were welded onto the exhaust, just upstream of the collector. A Tech Edge wideband sensor was used in one boss at a time for logging, as shown in Figure 35 and Figure 36.

Wideband O2 Sensor Fitted Side View

Figure 35 Single Wideband Lambda Sensor fitted (1)

Wideband O2 Sensor Fitted Top View

Figure 36 Single Wideband Lambda Sensor fitted (2)

The Tech Edge output was routed to the ECM O2 input and logged.2

The engine was operated at fixed throttle conditions for each of the lines in the fuel table and Mega Log Viewer was used to create a new fuel table to the targets shown in Figure 37.

VE Analysis Setup

Figure 37 AFR targets used for project.

9. References

  1. Gasoline Engine Management, Robert Bosch GmbH, 2nd edition, 2004
  2. Bosch Automotive Handbook, Robert Bosch GmbH, 6th edition, 2004
  3. Four Stroke Performance Tuning, A Graham Bell, 1993

Appenix A – The Data Link connector

A.1 Location

For connecting your PC, or other tuning system, to the ECM, the Data Link Connector can be found:

  • XB R – under LH side lower fairing spar
  • XB S/SS/SX/STT – under seat to right of the ECM
  • XB X/XT – LH opening of the seat subframe (no need to remove the seat - although it is easier to do so)
  • X1/S3 – RH side of the headstock up to MY 2000. Under the seat, LH subframe rail on MY 2001

A.2 Plug type

The Buell Data Link socket is a 4 pin Deutsch, part number DT04-4P.

To interface with the Data Link socket, the following parts are required:

No offDeutsch part numberDescription
1DT06-4S4 Pin Plug for female contacts
1W4SSecondary Lock
40460-202-16141Solid Pin - 16-18 AWG

A.3 Pin outs

The Buell ECM communicates through the Data Link socket by TTL level RS232. This means 0 to 5V rather than the RS232 level of 0 to 12V. Connecting an RS232 device to the ECM is most likely to damage the ECM and hence should be avoided.

To step down the level, there are two options, firstly to buy an integrated lead, the second is to use a circuit using a Texas Instruments MAX232 chip.

Palm E2 and Tx both use TTL level RS232 and hence require no auxiliary circuit.

The following pin numbers are applicable to the Buell Data Link socket:

Buell socket pin numberPurpose
1ECM receive (TTL level)
3ECM transmit (TTL level)
4+ 12V

Note that ECM receive connects to device (Palm / PC etc.) transmit and vice versa.

Appendix B – How To ...

B.1 How to perform a TPS reset

(This chapter applies for models with DDFI-2 injections only. Models from 2008 and later are usually equipped with DDFI-3 and do not require a TPS reset done by a computer any more.)

On the front left of the engine, between the airscoop and the engine, is the idle adjust screw, which simply adjusts the butterfly in the injector to allow air through for tickover.

  1. Connect the bike with the computer
  2. Turn ignition on and set kill switch to the run position
  3. Turn out this screw until the throttle voltage doesn't decrease any more
  4. Keep winding the screw two additional turns
  5. Close the throttle with light clockwise pressure on the throttle grip. The butterfly is fully closed if it sticks inside the manifold. It's essential, that this is done whith care, as the TPS reset needs to be done with the butterfly fully closed!
  6. Click the "Reset TPS ..." button to perform TPS calibration
  7. Turn idle adjustment cable clockwise until TPS degrees read 5.2 - 5.6 degrees. This setting is just to make the engine start and needs to be adjusted to correct idle speed with a warm engine afterwards.
  8. Run vehicle until engine temperature is at least 140 °C or 285 °F
  9. Set idle speed to 1050-1150 min -1


  1. Turn ignition on and set kill switch to the run position
  2. For three cycles: Pause one second on each throttle stop (fully open, completely closed)

B.2 How to check static timing

(This chapter applies for models with DDFI-2 injections only. Models from 2008 and later are usually equipped with DDFI-3 and do not allow to check for static timing any more.)

This is done by slowly rotating the engine, whilst watching the Cam Position Sensor on the Diagnostics page.

  1. Raise the back wheel off the floor
  2. Remove timing inspection plug
  3. Put bike into 5th gear to ease fine turning of the engine
  4. Raise side stand
  5. Select Diagnostics page in ECMSpy or similar and connect to the ECM.
  6. Turn back wheel forward slowly, until the timing mark appears at the left of the inspection hole
  7. The CPS value should be 0 or 5, depending on which cylinder is due to fire next. If it is on 0, go to next step, if on 5, rotate engine one more full revolution, then follow the next step.
  8. Rotate the wheel very slowly until the CPS value in ECMSpy or similar increases to 5 and the fuel pump starts running. This is the exact point of firing.

Now check the timing mark inside the inspection hole. If it is exactly central all is good, if to the left, then the timing is advanced, if to the right of the hole, it is retarded. If the timing is not correct, follow the instructions in your service manual to correct.

Appendix C – The use of MegaLogViewer

C.1 Introduction

MegaLogViewer is some excellent software written by Phil Tobin to help analyse logfiles from MegaSquirt fuel injection and to assist in creating optimized fuel maps.

MegaLogViewer is a perfect tool for applying the EGO factor to fuel maps by using logged data and the fuel maps used by the ECM during the logging. It also allows logs to be scrutinised, as shown in

MegalogViewer Screenshot

Figure 38 MegaLogViewer screenshot

MegaLogViewer allows corrections to be made to the map from the lambda sensor voltage and/or the EGO correction. Correcting the map by both methods is double accounting as the ECM has already used the lambda sensor voltage to create the EGO correction. Using both has been shown to result in maps that do not converge, i.e. repeating the map correction process with subsequent logs results in notable changes to the maps. Using the EGO shows a reduction of changes the more logs and operations are carried out.

C.2 Log pre-requisites

The important parameters needed in the log to work with MegaLogViewer are:

  • Time
  • RPM
  • TPS 8Bit - the throttle position from 0 to 255 (WOT)
  • CLT - Cylinder heat temp
  • EGO correction

When the data has been logged, it is a good idea to sort through it in a tool such as Excel to ensure that it does not have the odd corrupt parameter. Logging using the Palm E2 has been shown to result in some corruption, possibly due to the transmission of data at TTL level.

If you do have Excel, open the file, highlight the row with all the titles, RPM, O2 etc. then do Data->Filter->Auto Filter, then for each of the important columns click on the down arrow, and then select the numbers which look wrong and then delete.

TPS should go from 0 to 255, RPM 0 to 8000, EGO 70 to 130 etc...

After checking, if you save the data, be sure to save it as 'tab delimited' rather than an Excel workbook.

C.3 Properties file

To ensure that MLV picks up the important parameters from your log, you need to check the following are in the .properties file:

  • TP = TPS 8Bit
  • egoCorrection = Gego
  • RPM = RPM
  • Time = Time
  • coolantTemp = CLT

Where a wideband sensor is used and it is logged on the same timebase as the ECM data, you can set:

  • O2volts = O2

and configure the AFR calc from the menus in MegaLogViewer.

C.4 Running the analysis

Load the logfile

  • To load the fuel map, use the button [ Open MSQ ].

When opened, you can select which table will be modified by the VE Analyzer by pressing the top right rectangle to the right of the four buttons between the tables. veBins1 is the front fuel map, veBins2 is the rear, afrBins1 is the target AFR table.

Before pressing [ VE Analyzer ], we have to make sure MLV is set up to read our maps correctly.

  • Select [ TPS 8Bit ] from Options->Y Axis.

When you click [ VE Analyzer ], your fuel map will appear in a window to the left, and a target AFR map to the right, as shown in Figure 39.

VE Analysis Window

Figure 39 VE Analysis Window

If you cannot see two tables, click on the [ Advanced Settings ] button at the bottom left. Also at the bottom in the left half is the button to select the target AFR map, click on it and select afrBins1. The table will be displayed to the right.

Note that if you have set the msq file up successfully, the whole table will be set to 14.7. Is this what you want? After all, max power is made with about 10% more fuel than that ... Note that you can only tune to a value other than 14.7 if you have a WB sensor.

On the subject of sensors, select if you have a NB or WB (if you have a NB and you cannot select it, you can be sure you have erroneous numbers in your O2 column in your logfile - anything over 2V and MLV thinks it is WB). If you have a WB, you will need to select the type in Calculated Fields->Wideband O2-AFR. As the Buell cannot read in much more than 1 Volt from the lambda sensor, we will probably have to select [ Custom Linear ] and define the points on the line.

When we are ready to correct the fuel table to give the AFR we have selected, press [ Run Analysis ].

MLV will work through the logged data and correct the fuel table based on:

  • For NB - The correction calculated by the ECM (EGO)
  • For WB - The ratio of the target AFR to the measured AFR

MLV is clever in the way it applies the correction, there is a good explanation on the MLV website.

When the analysis is finished, a window will pop up giving the stats of the analysis, as shown in Figure 40, the maximum change in the fuel table is the one you are interested in, if it is very large, like more than 30 you need to know why.

VE Analysis Summary

Figure 40 VE Analysis Summary Window

Clear that window and have a look at your data; the sections of your fuel table which have changed will be displayed in red, if you hover the mouse pointer over each number you will see the original value and how many logged data points have been used to calculate the new value.

Appendix D – Air Fuel Ratio and Lambda

The mixture strength is commonly referred to as AFR or Lambda:

Lambda Formula


the mass of air being inducted into the cylinder every cycle
the mass of fuel being delivered to the cylinder
AFR Formula


the actual AFR in the cylinder
the theoretical AFR where complete combustion occurs

Appendix E – Narrow Band and Wide Band Lambda sensors

E.1 Narrow band sensors

Narrow band lambda sensors are used as a "switch" to ensure the correct mixture is metered for maximum catalytic converter efficiency. The sensor measures the residual oxygen after fully reacting the exhaust gas, i.e. if the mixture is unburned, the sensor will do it's best to "burn" it and then measure the residual oxygen.

Regardless of what you are told, the operation of the sensor does not lend itself to measurement of any AFR other than stoichiometric.

NB O2 Sensor Voltage

Figure 41 Voltage output as a function of AFR with change in temperature (Nernst equation theory)

With this in mind, a narrow band sensor can only be used to tune to a lambda of 1 (14.7:1 for gasoline fuelled engines).

This is the type of sensor the ECM uses for Closed Loop and Closed Loop Learn operation, as well as the calculation of the AFV and any corrections needed for Open Loop Learn.

E.2 Wide band sensors

Wide band sensors are more expensive than narrow band sensors and work in a similar manner, however instead of just measuring the residual oxygen, they operate a "pump" to either add or remove oxygen from the measuring cell to measure a stoichiometric mixture. In doing this, the sensor knows how much oxygen is being added or removed by the current drawn by the "pump".

WB O2 Sensor Voltage

Figure 42 Pump current as a function of AFR

As a final note, evidence shows that the ECM reads the O2 sensor at 90° after TDC in the expansion stroke and then the variable isn't touched for 2 crankshaft revolutions, but logs will show the current O2 sensor voltage.

Appendix F – Air Fuel Ratio Targets

The amount of fuel required is dependent on the mass of air available in the combustion chamber and the operating regime of the engine.

For max power, you generally need an AFR3 10% richer than stoichiometric

For max efficiency, you generally need an AFR stoichiometric or leaner

Efficiency and Power

Figure 43 Power and Efficiency as a function of AFR

Basically, a mixture of lambda 0.9 can use all the air (but with some fuel left over) and a mixture of lambda 1.1 can burn all the fuel (but with some air left over).

MPG or efficiency decreases as lambda increases past 1.1 as the potential for misfire (cycle by cycle variation) increases.

Catalytic converters like to operate at Lambda 1.0. For further reading, see reference 9.

For the Buell DDFI and DDFI-2, there is one lambda sensor in the rear cylinder. When the engine runs in closed loop, the mixture is controlled to lambda 1.0, which is a compromise for both fuel consumption and power. The closed loop area is at part throttle, so you are not interested in power, however you are interested in smoothness (no or very few misfires) and you may also be interested in fuel consumption if you stay at a constant throttle opening for long periods, such as motorway operation. Since the rear will always be controlled to lambda 1.0, the front can be made to run richer to reduce misfire, or leaner to reduce fuel consumption.

Appendix G – How were the maps set up at the factory?

We can all guess, and here is my guess, but first let me present my evidence:

There exist two open loop corrections, one for open loop and one for WOT, if you look at what these values are, you will see 105% and 110% respectively.

Since we have discussed that max power is made approximately 10% richer than stoichiometric, this suggests that the whole map is set to stoichiometric4.

So an educated guess is that a front narrowband lambda sensor was used in conjunction with the rear, the [ Open Loop Default Correction ] and [ WOT Enrichment ] corrections were set to 100% and the mixture was adjusted to give stoichiometric throughout the maps for front and rear.

Appendix H – Engine Speed Limiting in Response to Engine Temp

[ Temperature Soft Limit Minimum Load ]
TP above which soft temp limit enabled, typical value 80
[ Temperature Soft Limit Minimum RPM ]
RPM above which soft temp limit enabled, typical value 3500 RPM
[ Temperature Hard Limit Minimum Load ]
TP above which hard temp limit enabled, typical value 255
[ Temperature Hard Limit Minimum RPM ]
RPM above which hard temp limit enabled, typical value 4500 RPM
[ Temperature Soft Limit Trigger ]
Soft temp limit, high, °C, typical value 280
[ Temperature Soft Limit Recharge ]
Soft temp limit, low, °C, typical value 275
[ Temperature Hard Limit Trigger ]
Hard temp limit, high, °C, typical value 290
[ Temperature Hard Limit Recharge ]
Hard temp limit, low, °C, typical value 285
[ Ignore Minimum RPM Trigger ]
Temp, high, where soft TP/ RPM limits ignored, typical value 305
[ Ignore Minimum RPM Recharge ]
Temp, low, where soft TP/ RPM limits ignored, typical value 304
[ Temperature Kill Limit Trigger ]
Kill temp limit, high, °C, typical value 305
[ Temperature Kill Limit Recharge ]
Kill temp limit, low, °C, typical value 304
[ Temperature Limit Engine Lamp On Value ]
Start flashing CEL, °C, typical value 280
[ Temperature Limit Engine Lamp Off Value ]
Stop flashing CEL, °C, typical value 275

Appendix I – Calculation of EGO Correction

Given the assumption, that O2 is fluctuating somehow between a high and a low voltage. First condition is, if the low and the high value are both higher/lower than the target voltage (no transition occurs) or not (transition occurs).

If no transition occurs, the current EGO correction is decreased/increased by 0.3 or 0.5 (this is the I-value), depending on the state (high load, low load, idle).

If a transition occurs, the current EGO correction is decreased/increased by 1.0 (this is the P-Value).

Aside from the transition/no transition constraint, the change in EGO correction seems completely independent from the actual EGO voltage, so it doesn't make any difference, if O2 voltage is floating between 420 and 480 mV or 0 and 480 mV, EGO correction will be increased by 0.3 in every cycle.

Appendix J – Pressure measurement and compensation

The Buell ECM includes a function for the correction of fuelling for changes in pressure.

The function is configurable in that it can be used to apply a correction for atmospheric pressure only or for airbox pressure, i.e. correction for intake ram. As the XBs do not use this function, there is no pressure measurement device installed at the factory.

Figure 44 Front cylinder fuel metering with pressure compensation
(Click image for an unscaled view)

Figure 45 Rear cylinder fuel metering with pressure compensation
(Click image for an unscaled view)

The logic behind fuel metering with pressure compensation is shown in Figure 44 and Figure 45.

The function is configured using byte [ Airbox Pressure Configuration ], see section 18.

Airbox Pressure Configuration Bitvalues

Figure 46 Airbox Pressure Configuration

When the engine is turned on at the key, and following a delay, [ Baro Pressure Sensor Delay ], the ECM reads the barometric pressure and, if between the max and min allowable values, [ Barometric Pressure Key-On Maximum Value ] and [ Barometric Pressure Key-On Minimum Value ], stores this in its memory. An overall fuel map correction is determined from the [ Baro Correction ] look up table.

Baro PressureCorrection (%)

Table 15 [ Baro Correction ] look up table

The ECM compares the barometric pressure (assumed not to change for this engine run) to the real-time Air Box Pressure reading. The Air Box Pressure reading is triggered by the rising and falling edges of the Cam Position Sensor and therefore the measurements are always made at the same cam (and crank) position.

The ratio Airbox Pressure / Barometric Pressure is used to determine a correction from the [ Airbox Pressure Compensation ] look up table. Whereas the correction for barometric pressure can be calculated from simple physics, the values in the [ Airbox Pressure Compensation ] look up table will be heavily dependant on the flow field around the sensor and hence the sensor position in the airbox.

ABP/Baro (%)Correction (%)
68(sensor failure) 100
107(sensor failure) 100

Table 16 [ Airbox Pressure Compensation ] look up table

[ Airbox Pressure Sensor Data ] calibrates the hardware, i.e. Voltage as a function of pressure

ADC countkPa

Table 17 [ Airbox Pressure Sensor Data ] look up table

The ECM operation can be seen by logging data, on the BUEIB310, the applied correction is logged on offset 61 and the sensor output ADC is logged on offset 63.

J.1 Hardware required

As the XB was never built with pressure measurement sensor, if you want to use this function, one needs to be added to the system.

J.1.1 Connection to ECM

ECM pinouts for pressure sensing are shown in Table 18, these are only active when bit 7 of the [ Airbox Pressure Configuration ] byte is enabled.

ECM ConnectorECM PinDescription as stockDescription with ABP enabled
Grey 1 5v Sensor Power 5v Sensor Power
Black 9 Active Muffler Feedback Pressure Sensor Output Signal
N/A N/A Ground Ground

Table 18 ECM pinouts for pressure sensing

J.1.2 Automotive sensors

Many automotive sensors are available, however it is important to have the calibration also. Many of these automotive sensors are based on the MPX4115 and MPX4250 series of sensors.

The 1125R and CR use a Bosch sensor, part number 0 261 230 061 (PN P0091.1AM). This is very expensive when bought through Buell and does not appear in Bosch catalogues (possibly as it is a part sold to Rotax). This sensor part number is also used in some Aprilias (PN AP0274055), which, although expensive new, makes sourcing a secondhand part somewhat easier. A sensor from the same series is used on some small Peugeots and Citroens, Bosch part number 0 261 230 043. These are assumed to be the same as part number 0 261 230 052 shown in the Bosch catalogue, with calibration data, which operates between 10kPa and 115kPa (as MPX4115).

1125 Pressure Sensor Pinout

Figure 47 1125R/CR type pressure sensor dimensions and pinouts (Bosch 0 261 230 052)

Pressure Sensor Voltage

Figure 48 1125R/CR type pressure sensor response for 5V input (Bosch 0 261 230 052)
where P1 is 10kPa and P2 is 115kPa

The required connector parts required are shown in Table 19.

QuantityDescriptionBOSCH part number
1Plug housing1 928 403 966
3Contact pin1 928 498 060
3Gasket1 928 300 599

Table 19 Connector for Bosch 0 261 230 061 / 52 / 43 pressure sensor (Bosch PN)


QuantityDescriptionBUELL part number

Table 20 Connector for Bosch 0 261 230 061 / 52 / 43 pressure sensor (Buell PN)

The sensor family above is suitable for a normally aspirated engine for barometric pressure or (ram) forced induction corrections. For a turbo application, 115kPa will not allow sufficient range. A sensor such as the Bosch 0 261 230 042, which has an integral temperature sensor which can be connected to the IAT input, will be more applicable with a range up to 250kPa, allowing nearly 20psi of boost.

J.1.3 MPX series

The MPX series of sensors, made by Freescale, can be used directly and are supported by comprehensive data sheets.

Figure 49 shows the parts used for implementation of a pressure measurement system using an MPX series sensor. As this was to be connected to the 3 pin Deutsch connector under the seat, which on a stock 12 would be used for the AMC, a 7805 voltage regulator is used to power the device from a 12V input. A neater installation would be to use the 5V sensor power from the ECM, however this was not directly available at the Deutsch connector. Capacitors are used as directed by the data sheets for each component.

Not all the pins on the MPX4xxxAP are used, the redundant pins can be cut off as shown in Figure 50.

Pressure Sensor Parts

Figure 49 Parts needed for MPX4xxx pressure measurement

Pressure Sensor

Figure 50 MPX4xxxAP with redundant pins removed

Pressure Sensor Assembly

Figure 51 MPX4xxxAP Pressure measurement system when assembled

When assembled in a box, see Figure 51, the next question is where to put it. One option is to mount it in the airbox as shown in Figure 52.

Pressure Sensor Installation

Figure 52 Pressure measurement system installed in the airbox

Other options are to mount it outside the airbox, either measuring atmospheric (or barometric) pressure or connected by a pipe either upstream or downstream of the air filter.

Regardless of where it is mounted, the system will need some thought when setting up the look-up tables discussed previously.

The MPX4250 will be more useful for a turbo application.

Appendix K – Footnotes

1 An MPX4115AP would give better resolution. The MPX4250AP reads from 20 to 250 kPa and the MPX4115AP reads 15 to 115 kPa as indicated in the part number. The MPX4250AP was used due to availability.

2 Experience with the LC-1 suggests that the output is increased by 0.5V when connected to the ECM O2 sensor channel, possibly due to its high output impedance. The Tech Edge does not appear to have this issue.

3 See section 13

4 I am deliberately forgetting about closed throttle operation, i.e. the Open Loop operation below the closed loop polygon