Hi and welcome to Jonas Andersson's VEMS member page.

To measure is to know.

Current projects:

Audi S2 VEMS Genboard 3 installation

Audi S2 VEMS Round installation

If you edit and comment anything on this page, please state your NAME next to YOUR text. Please!


Latest news:


Made larger hole in engine wall to get cabling for wbo2 through. Luckily some previous owner had already destroyed the AC so I ran the sensor through the same hole. I also noted that the engine runs pretty much lambda 1 all the time and leans out(!!) at high rpms. Crappy chip tuning.


Welded another lambda bung into the downpipe not far from the original one.


VEMS Round electrically connected to ignition. Tested WBO2 sensor and it heats up and shows ~20% oxygene in air.


VEMS Round installation start. Removed the ventilation to cut some holes for the wires.


The extension harness for the 3B box is next to completed.

2 wires missing that wasn't in the AAN wiring I used to build the harness.


Jesper has told me that the Peugeot went to the junkyard after another 20000km running on genboard 2.2. Rest in peace!


Jagenheims old board is alive after replacing the microcontroller.


This is going to be the slowest project in history.

Got the 55pin connectors from Emil and tried them in the car yesterday. A lot of non-vems-related activity on the car, like paint job.


The Peugeot with genboard 2.2 is sold to Jesper Johansson in Gothenburg! Time to start planning my next project car, Audi S2 with 3B engine.


The car started immediately when filled with normal 95octane fuel. I now cold start the car with motor starter gas. As soon as the engine starts to fire, it gets hot enough to run on ethanol. I've also noticed an increased fuel consumption when the air intake temp is too low (below +5?), probably due to bad vapourization of the ethanol.

I did some resistive measurements on the intake air sensor in the Bosch air flow meter: Between terminal F and 9:

+2 deg 76ohm

+22 deg 47ohm

+55 deg 23.5ohm

+85 deg 12.5ohm

Connecting this sensor to the MAT input on a genboard2.2 will be no good. Any suggestions are very welcome. Please add your name to your comment!

2004-11-07: The car has been running all summer on E85 without any serious problems. I haven't spent too much time on this car, all free time has been focused on Mickes Audi. Now when the temp is below +5 (sometimes below 0) I have cold start problems. I decreased my aggressive ignition (not genboard controlled, just a turned distributor) but it still won't start. Tomorrow I'll fill the tank with ~20 litre of normal unleaded fuel instead of the ethanol to be able to tune the cold start values a bit better.


I got my Peugeot 309 gti '87 up and running on msavr genboard2.2 at 20.00, 2004-03-07.

Started at first crank. Well, at least when all problems were fixed!

I replaced the stock TPS (idle and WOT switch) with a potentiometer TPS from an opel and reused the wiring. Made an adapter from genboard db37 to Bosch AMP 25 pin connector by stripping a Bosch ecotronic box.

When I replaced the exhaust pipe, I mounted a lambda bung

even though my engine's original ECU does not have a lambda sensor.

I hang around the #avrboard irc channel as "kakmnstr". If you have any questions, just ask me there.

Comments on setup:

Trigging on Coil-.

No PWM, high impedance stock injectors.

Problems and solutions so far in MSAVR'ing the Peugeot with genboard 2.2:

Problem #1.

No power to the ECU without engine running. There is a "tachymetric relay" on the peugeot that does not power the ECU+fuel pump if the engine is not rotating. I don't know if it works fine to let the genboard get powered up when the engine starts turning but for diagnostics (running genboard without engine running) I steal some power from the cigarette lighter for now. Yes, I never tend to do permanent installations! :/

Note that this differs from what people refer to as "cranking power problem" which means that you don't have any ECU power while cranking. I don't have any power until engine is rotating but as soon as it starts to turn (driven by the starter) I get power to the ECU. If the engine starts I will keep power but if it never fires I will loose ECU power when I stop the cranking. Get it?

Problem #2.

Stock TPS sensor is just a switch. Thanks to whoever pointed that out. (please edit this page and accept credit!)

Solution: Mounted a sensor from an opel.

Problem #3.

A bad soldering ruined the IRZF34 INJ1. Solution: Check your solderings. Try driving a brake lightbulb or similar on bench before firing real injectors. When my FET got damaged it could still drive a 470 ohms resistor, but not a load of 5 ohms.

When I connected the brake lightbulb to my bench setup I found the problem.

Lesson learned: Test on bench with real load if you don't have your own (heated) garage! (winters are cold in sweden and I'm a thin guy without any heating body fat!)

Problem #4.

I had no idea what size my stock injectors were so I tried to calc a reqfuel value from some info on the net. Bad idea, I guessed wrong with a factor 3! The engine just got flooded.

However, I brought an oscilloscope to a parking house with power

and took this nice (and now smaller) picture:


X Scale is 2ms/div, Y Scale is 20V/div.

Sorry for the trigging, you see two pulses on top of each other.

The purpose of the pic was to see overshot on injector release, a spike up to ~65V, but it is hard to see on the picture.

(Ouch, I'd consider a faster diode to protect the FETs, maybe BY399 or a transient protection like the 1k5... whatever on v3 supply, see GenBoard/PowerSwitcher and FlyBack )

Whoever did this comment: The picture is from the stock ECU, not from the genboard2 driving the injectors. This shows the pretty high voltage flyback (if any?) used on the stock ECU. See next paragraph:

Note the "PWM", the stock ECU (a bosch L-jetronic box without any kind of CPU) releases the injectors to ~5V from 0V after a millisecond of opening current.

Simply after entering reqfuel from the scope pic (I know, it is close to cheating!) it started at first attempt.

Problem #5.

Does not show "accel" or "decel" in megatune.

Solution: It turned out that the "calibrate TPS" function in megaview2.20 did not send the data to the genboard software,

it was just a function for the graphical gauge in megatune. After setting the parameters tps_low and tps_high in the config.txt it made a lot more sense.

Problem #6

Drowns on accel.

Solution: Decrease accel enrichment from Mik's setting "2.0" to "0.1".

Problem #7

False rpm trigg at above 4500rpm. (we saw something similar when we trigged from the wrong edge of the coil signal. The RPMjump did not appear on LCD, but the dot in megatune showed it, and the engine also).

Solution: this false triggering is very common when you use signal from a coil primary, and you choose the falling edge instead of the rising edge. (there are 2 falling edges in a period: a small 12V falling edge and a big, appr. 200V one ! There is only one rising edge, appr. 212V so triggering on that will work)

Problem #8

No stock lambda.

Solution: The whole exhaust pipe did not survive the winter

very well. 3 holes (how does it sound?). I bought a new pipe including mounting kit at Mekonomen and a lambda bung. Drilled a hole and MIG welded the bung. Narrow band lambda sensor for now. Thanks to Fredde for all welding and exhaust pipe mounting help!

The car now runs on 100% E85, which is a swedish ethanol biofuel made by SEKAB.

Next step is to control ignition from genboard and move trigger from coil- to hall.

No further plans. The car is not in too good condition (some parking damages and rust) but has served me well for more than 60000km now. A perfect test bench for engine management hobby!

Pictures, config files and tables:

Notes from the IRC:

VE learning (autotune)

19:16 < mik> ve-learn: well... erhmmm... ohhh... :)

19:17 < mik> I will recommend _not_ to use the 2x2 mode

19:21 < mik> because the 2x2 mode changes ve-entries which might not need to be changed

19:22 < mik> when not using 2x2 mode, only the nearest ve-entry is changed

19:24 < mik> in 2x2 mode it will never stabilize. Changing one ve-entry in the correct direction might result in three other

entries to be adjusted in the wrong direction

19:26 < mik> the scale-parameters sets how much the rpm/kpa/ego are allowed to change in a sampling period.

19:26 < mik> if they change much, then only small VE-changes are performed

19:27 < mik> higher scale value ==> rpm/kpa/ego must be more stable in order to do any changes

19:29 < mik> it is some time since I used the ve-learn, but the values in my config can be used as a starting point (I hope!)

19:46 < mik> if (distance(current VE entry - nearest VE entry) < distance) { then do some adjustments }, ve_min_weight sets

the distance

  1. ve learn is being tested at the moment...
ve_learn_coolant=D8 # 80 degress





ve_learn_speed=E0 #80

ve_learn_limit=ff #30




11:40 < mcell> you can bypass the BD244 with 0..22 Ohm resistor (to protect the FETs more: actually there is a 47 Ohm bypass already, but that is a bit high ohmage and low wattage for real protection if the PNP circuit fails for some reason) and bypass the 1N4004 with a faster diode if you see flyback pulses >50V measured with scope on the injector signal.

Note the R=0 is also valid in DR low voltage FlyBack, but you will need to make smaller injopen setting in that case (cause injector closing will take longer)

Alien ign logging

11:47 < mik_> emil_, code must be compiled without LOG_ADVANCE_CHEAT in my_make, but with SEND_DWELL_NOT_IAC defined!

11:48 < mik_> then configure secondary_trigger edge, enable & filtering

11:49 < mik_> finally you can log the advance with megatun*. Dwell/advance are sent in the megatun* 'A' command (see comm.c)