Dealer CAN adjust A.F.R. – LEAN

Viewing 9 posts - 1 through 9 (of 9 total)
  • Author
  • #3461

    So, as you know, these bikes come pretty dang lean from the factory. Red-hot headers, Backfires, not the best idle. I actually like the farts and sputters it makes on engine breaking, but it is just waaaaay to lean. And I’m about to make it quite a bit Leaner.

    I just spoke with my dealer and he told me that the Husqy service tool (tablet looking thing) they use for services CAN ADJUST AFR. Even to accommodate exhaust and air mods. (prob not supposed to do the latter)

    Granted, not doing this wont hurt your bike if you did change exhaust BUT  you’ll get some more power and def a better running engine. This may not be news to you, but I really wanted to share because I figured they would say that they couldn’t do it.  Obviously the thing to do is get a coober or the like but that’s the one mod that im afraid of warranty-wise.   Assuming that this works out, This is worth doing even if you are 100% OEM.

    Anyone do this yet? I’m going in next week and I’ll let you know how it goes.


    Update: i just called another husqy dealer to verify that what mine told me is correct.

    He wasnt quite as optimistic, said there is some adjustment there but wasnt sure it’d be substantial or even worth it. Ill let you know soon.


    What are you asking them to do to adjust AFRs? An ECU flash? Is it a new map or are you talking about something else?


    @ Qwandree im asking them to boost fuel or cut airflow in the ecu to provide a realistic air-to-fuel ratio. I suppose that isnt quite a flash but rather a design parameter change. A setpoint to makenit simple. Made within the husqy service tool. Thanks to the EPA we all have machines running wildly lean. Like stupidly lean. Pop pop bang bang goes my vitpilen lol fuel really shouldnt reach the exhaust and then detonate. (Backfire) As much as the sound pleases me, its wrong.

    If this doesent work, ill be riding to aomc here in wv (forum owners shop) and picking up a coober.  Aomc has been the best resource in the state for parts. .



    • This reply was modified 2 years, 7 months ago by WvblackgunWvblackgun.

    I am definitely a fan of the coober ecu, but bike still runs lean with one installed. At least mine does, though I do also have a link pipe installed.


    Very interested in what you learn about what the dealer tool can do for this (I am skeptical honestly). Keep us posted!


    And say say hi to the aomc folks for me. They seem like good dudes.



    sorry to interrupt, but I gained some experience with ECU, O2-Sensor and airbox modifications in the last years on a Duke 390, Duke 690 and now on my new Vitpilen 701.

    So firstly I would like to explain, how engine management in these bikes works:

    The engines run in 2 modes: open loop and closed loop. Open loop is like it was in the past (before EURO3 regulations). The necessary amount of fuel was tested on a bench and stored in maps in the ECU. These maps contain the opening times for the fuel injectors which is proportional to the amount of fuel and to the AFR. The maps are multidimensional, depending on rpm, throttle position sensor (TPS), temperature, pressure, map switch, etc. So when you change anything on the amount of air (airbox and exhaust modifications, but also mechanical changes inside the engine like camshaft, size of valves etc.), you have to adjust the fuel map accordingly to get the right AFR.
    As far as I know, the dealers can program new maps onto the ECU, i.e. there are maps for Akrapovic exhaust available directly from KTM.
    As said, that is relevant in open loop mode, which is in the Duke690 and Vitpilen 701 only above 7000rpm or approximately 60% throttle or in the first 20sec after cold start, when the O2 sensor is not yet in his working temperature range. In all other cases (at most street bikes 95% of their life time !) the engines run in closed loop mode.
    Closed loop means, that the ECU adjusts the amount of fuel and so the AFR based on the O2 sensor signal. The goal is, to keep the lambda value as near as possible to 1, which is AFR 14.7. This is slightly on the lean side for the engine, but not dangerously lean. Lambda 1 is mandatory, because the cat only works effectively at lambda 1, above and below emissions increases. Unfortunately best power you get at lambda 0.85 (= AFR 12.5, rich), so for performance 0.85 is the goal and for emission it’s 1. Dangerously lean for normal engines begins at lambda 1.2 (AFR 17).

    Most EURO3 and EURO4 engines (and the Vitpilen is EURO4) have standard narrowband O2 sensors. A narrowband O2 sensor delivers a voltage of approx. 0.1V when above lambda 1 (lean) and 0.9V when below 1 (rich). The threshold between lean and rich is very sharp (narrow), so when the ECU is regulating lambda 1, the O2 signal always jumps between 0.1V and 0.9V. And exactly this is the closed loop regulation, when O2 drops to 0.1V (lean), then the ECU increases slightly the amount of fuel, until the O2 sensor switches to 0.9V (rich) an vice versa. This happens very fast, my Duke 690 cycles the lambda in 20 – 50ms and the deviation in lambda is very small (only +/-0,02 lambda). At the Duke 690 you definitely could not feel anything of the
    regulation cycles, but at the 390 you sometimes could feel a constant little jerking, when riding slowly.
    So with a standard narrowband O2 sensor it is not possible to change the AFR in closed loop mode. All available maps, piggyboxes (like powercommander, coober, powertronics) only affetcs open loop mode.
    The only possibility is to disable the O2 sensor completely with an O2 eliminator, but the ECU then detects a failure and goes into engine emergency mode, which is not so bad, but there you cannot control anything.

    I found a solution to manipulate the AFR also in closed loop mode, but that is a different story with an additional broadband O2 sensor and electronics and a lot of testing and tweaking.
    Sorry for the long story, but it is all not so simple…………..


    @George – Impressive! I’m an instrumentation, Process control technician and familiar with program & code so your speaking my language. But, not gonna lie, that’s a touch over my head for a quick read. but I get the jist of what your saying.

    I AM curious as to how you know the Analog signal type and scale for the 02 sensor? not doubting you at all, just wondering where all this technical info lives. Bc I’m in search of similar knowledge on a different electronic point of control on the bike. I kind of doubt that the service manual is that in-depth.

    I figured this was a pipe dream, and I’m probably going to rename the post. Was thinking of taking it down when I realized that this isn’t going to happen, but your write-up is so informative I feel others will benefit from it as I did.

    Thanks for the info!


    it’s no rocket science, so I try to explain a bit, what I did:

    I use an Innovate MTX-L unit with a Bosch LSU4.9 broadband O2 sensor. Unfortunately the original narrowband sensor of the 690 has a  much smaller diameter, so I couldn’t change it, as I did at the 390. So I welded an additional bung adapter to the header and now have both sensors installed.
    The LSU4.9 O2 sensor is connected to MTX-L, which displays the lambda or AFR value. Aditionally it has 2 programmable analog outputs. I programmed one as analog broadband signal and the other as narrowband simulation signal for the ECU.
    The broadband signal is a simple linear transformation of the lambda value into a voltage, where lambda 0.5 = 0.5V and lambda 1.5 = 4.5V, lambda 1 = 2.5V.
    The narrowband output is programmed with a narrow edge at lambda = 1, means 0.1V from lambda 0.5 to 0.999, switch to 0.9V between lambda 0.999 to 1.001 and stay at 0.9V above 1.001. This signal is connected to the ECU O2 sensor input via a switch at the handlebar. So I switch while riding between the original narrowband signal and the simulation signal from the MTX-L. When the MTX-L is programmed to lambda 1, the behaviour and fuelling of the engine is identical. There is only a difference in the reaction time of the sensors, because the original is much faster (a few ms reaction time) compared to the MTX-L (80ms sampling and update rate). You can see it in the signals, but can’t feel it while riding.
    The real trick for all the efforts is, that I can now program the narrowband simulation signal threshold to any lambda value in closed loop mode. With the 690 I found lambda 0.92 as the optimum for smooth riding at low rpm with best throttle response. At the 390 lambda 0.9 was the optimum. Theoretically you can also adjust the engine to a fuel saving lean mode (lambda 1.1) at low power or a high power rich mode by manipulating the threshold. I have plans for the future to read the broadband signal with an Arduino and to generate maps for the lambda threshold. Then I can choose any closed loop target value for different riding situation.

    The next part of my system is the datalogging. I started with a 4-channel datalogger from Innovate. But this was not fast enough (80ms sampling rate) and could not read all signals I want to see. So I built and programmed my own datalogger based on a Teensy3.6 board. It has a 180MHz 32bit Cortex M4 controller with built in microSD card slot. Programmable it is via the Arduino programming interface with a C-like programming language. I also designed and built an interface board to transfer the vehicle signals to the 3V3 world of the Teensy (Ignition signals reaches up 100V, so be carefully !). With that datalogger I now have 10 analog inputs and 7 digital inputs plus a mode switch and status LED. The mode switch and status LED is also mounted to the handlebar and can be activate/monitored while riding. The sampling rate is now 2ms, which is really fast (1 ignition cycle at 9000rpm last 13.3ms). All data are stored to a microSD card in csv format and can be analysed with Excel or a special graphical tool called Analog flavor BSWWave. For the Vitpilen I plan to aquire following signals:
    digital signals:
    – engine rpm
    – ECU fuel injector duty cycle (on time per cycle = amount of fuel)
    – Piggyback box fuel injector duty cycle (on time per cycle = amount of fuel)
    – ignition timing spark 1
    – ignition timing spark 2
    – front ABS wheel speed sensor
    – rear ABS wheel speed sensor
    analog signals:
    – KL30 battery voltage
    – TPS1 (throttle position sensor) handlebar (driver request)
    – TPS2 (throttle position sensor) throttle body (what the driver really gets, ride by wire !)
    – O2 broadband signal
    – O2 narrowband signal (feedback of ECU input)
    – cooling liquid temperature sensor
    – map sensor (manifold pressure sensor)
    – Quickshifter sensor input
    – 2 spare inputs

    Aditionally there is also one analog output for O2 manipulation as described above. Especially the aquisition of the digital signals was really demanding, because I had to implement a full crank timing aquistion algorithm as it is used in all ECU’s. But that is a different, long and very interesting story.

    The 3rd part in my system is a piggybox. I still use my powertronic piggybox, which I bought originally for the 390. It is fully programmable and similar to Powercommander, Kastl, etc…
    I adjusted the maps to the 690 based on my data from the datalogger. I.e., when I opened the airbox (more air), I make a test run with my datalogger and there I can see in the O2 sensor reading, how much leaner the engine is at certain TPS and rpm points. Then I correct the fuelling in the piggybox map, until I get my desired lambda value at each operating point of the engine. At 0.85 you get most power.
    With my high resolution datalogger, I am also able to make relative dyno runs on the road based on acceleration comparison based on my wheel speed information. You don’t get any absolute hp or nm values, but it is very useful to make differences visible.
    So, that all for today, when I do have some curves from the Vitpilen, I will show them to you…….


    Hello George. I have a Duke 690 and I would like to improve my ride. I read that the optimal value for lambda is 0.92. It is right? And a value closer to 0.85 would be even better? Thank you

Viewing 9 posts - 1 through 9 (of 9 total)
  • You must be logged in to reply to this topic.