History of MembersPage/FPhil/OddFireWastedSparkEvilStartUp
Older Newer
2018-02-09 10:20:55 . . . . i16-les01-ntr-212-194-188-15.sfr.lns.abo.bbox.fr [cleaning...]
2012-10-04 17:16:54 . . . . adsl26-58.pool.businesstel.hu [experimental, check wbo2, new 1.2.6 might be needed]
2012-10-04 11:39:00 . . . . pes75-2-78-192-98-74.fbxo.proxad.net [JollyGoodOddFireStartup]
2012-09-19 03:18:30 . . . . adsl6-223.pool.businesstel.hu [maserati reimplemented, needs benchtest]
2012-08-29 03:58:18 . . . . pes75-2-78-192-98-74.fbxo.proxad.net [1.2.5 tests]
2012-08-28 16:06:36 . . . . adsl3-75.pool.businesstel.hu [exact pos of tooth after the long-gap]
2012-08-17 07:48:31 . . . . ARennes-652-1-162-82.w81-53.abo.wanadoo.fr [Suggestions for Marelli ignition before testing]
2012-08-14 09:12:41 . . . . adsl217-182.pool.businesstel.hu [1.2.5 benchtests]
See complete list (16 entries)

Changes by last author:


* Test with distributor (,no wasted spark)


On the first picture the firing given by Vems (4 pi) is not used since the engine is quicklystarted by the Microplex(same as on bench)

On the second picture

- the first fire (f1) is given by Vems after 4pi (and more)

- the next fire is at f1+150+90

- other fires are a kind of mess for a while but everything comes in order after 2 more revolutions

-> the firing @ f1+150 might be missing because it was off the DIS finger. Indeed Vems probably computes the next time to fire from the time interval of the last two prim triggers, since these triggers are 120 deg apart and the acceleration is high, the time to fire may be off the DIS finger.

-> All together the engine truly start up takes 8 pi +


This is when engine is stopped so sectrig is just missed, the first sectrig will come ~1.99 camrot

Unfortunately at least +1/3 camrot is wasted (so final worst-case is ~2.4 instead of 2.1 camrot ) in current implementation because it's internally flagged "out-of-sync" before the campulses come, and the sync only really starts after that (not taking angle-measurements before the 2 sectrig pulses come)


* Test with coil 3x2 and wasted sparks

The first try was done with 7 deg spark advance at 399 rpm during crank and 22deg at 1000deg 1bar .... The engine says "bang"

Next try done after increasing the crank spark advance to 25 deg


I did not got the bang in that case but the trigs and the fires seem out of sync, engine appears to slow down even when the fire is not too badly timed.

The reasons for these failures were that the high Vems delay to fire when cranking adds up to the 30deg delay of the wasted spark during admission and makes ignition to occur on the paired cylinder.

Finally, still increasing the spark advance during cranking (25 deg @ 299 rpm, 35deg @900 rpm )I was able to start the engine


Do you have a *.triggerlog of this (or similar) real startup ?

* We could replay that on bench from .triggerlog format (not from .jpg).

** 2 REF for good start





** 1 triggerlog for bad start


Trying to improve the start, I reach this final config:


(45 deg @ 400rpm!!! see REF2 files) which is obviously non tractable.

Aiming to get a reasonably good ignition control, better than the Marelli Microplex(6803 processor), I think that

** the 720 deg delay before the first fire should be reduced

** Vems delay to fire during the acceleration of the cranking due to the few (3) trigs used for the computation should be corrected

** wasted spark ignition is too much border limit to be used on this odd engine


Some computation to explain the hard startup

A rough computation shows that the current firmware's strategy for this trigger cranking may not allow a clean start (or require ignadv compensation).

I believe that Vems computes the time of the next firing from the time interval (Told) of the last 2 triggers (120 apart).

Let the starter cranks at 300rpm. When started with the Microplex ecu, the engine reaches 800 rpm quite fast say in 600deg (5x120) So the speed increase of 100 rpm each 120deg phase.

Hence after the first fire, speed has increased by 30% (100rpm) at the next 120 deg trig. Which means that this 2nd trigger is 30% or 36 deg sooner than expected (or more in the case of firing with the 30deg spark delay)from Told.

So at best the startup is messed up, at worse, with wasted spark, the paired cylinder is ignited at 60 deg on admission (30+36 - 7 advance)...

* That was one of the reasons better patterns like 36-1 came to wide use

** even if measured period is off by 30% during cranking, that is only 3 crankdegrees to compensate for. And only 2 crankdeg with 60-2

** note that measured timeperiod (=reciprocal of RPM) changes most significantly from 45 BTDC to 15 BTDC because of compression: (very apparent with 12 or 12-1 crankwheel) time measured 120 crankdeg is actually more even than 75-45 and 45-15 (in many 12-1 installs "missing tooth advanced filtering" is needed to avoid false missing tooth detection when the 45-15 BTDC time is (say) 1.57 times higher than previous tooth time (crank slows that much while traveling only 30 deg: that is 1 tooth).

* issue may occur for other coil-type trigger set up with too few triggers on the crank and too high TDC-delay.

** This could be the case for all Marelli ignition for which each firing is commanded by one specific trig on the crank and a timer.

Thanks for the detailed triggerlogs.

We implemented "trigonLONGgap" in 1.2.5 firmware, effecting the "short-gap-trigger". see 1.2.5 on GenBoard/UnderDevelopment/FirmwareChanges

* change primary_trigger=BB (instead of AB) in a freshly saved vemscfg and upload it (will be soon selectable in VemsTune primtrig-dialog after ini-update, or in new versions)

* per-cyl sparkdelay: 0,30 is better than 3,33 which was necessary earlier, so use 0,30,0,30,0,30 (instead of 30,0,30,0,30,0... because of the rotation ?) but if one is no good try the other

* "TDC after trigger"

** of course, ign_tdcdelay=FE need to be changed from 127 crankdeg to 40 degrees, possibly ign outputs rotated to adjust.

* even if compensation will still be necessary to make up for the RPM-changes during cranking, please check that this helps to achieve predictable ign at the desired BTDC-angle during Maserati startup ?

** is the assumption good that the pulse after the (30 crankdegree) short-gap is the actual "10 crankdeg BTDC cranking ignadv" position (for every 2nd event) ?

Times from MUCH closer (less than half) compared to earlier.

[Some bench-tests with config included]


proposed mazerati z012 configlet: (Trigger settings for Maserati Oddfire 90+150 engine)












h[1]=00 05 04 03 02 01 00 00




h[3]=78 00 78 00 78 00 78 00


August 17 2012

Thanks for the return and the new compile.

"please check that this helps to achieve predictable ign at the desired BTDC-angle during Maserati startup ?"

I will do it next week

"is the assumption good that the pulse after the (30 crankdegree) short-gap is the actual "10 crankdeg BTDC cranking ignadv" position (for every 2nd event) ?"

Yes each crank trigger occurs 10deg before relevant TDC

"[Some bench-tests with config included]"

humm... Anyway to bench test, better to set ignition advance = constant 10deg

pre_sync func (suggestion)

I do not know how the firmware is designed, but it should be possible to write some specific pre_sync func whenever the oem trigger sync is too much exotic. Its purpose would be to output a Vems standard sync.

In the case of Marelli ignition, this quite simple func would be (to complete):

INPUT: prim_trig_event, sec_trig_event

OUTPUT: sync_event

IF sec_trig_event START COUNT prim_trig_event

IF n_prim_trig_event = 2 AND new_sec_trig_event

RETURN sync_event

Fast startup algorithm (suggestion)

When the first fire is done, engine is in order and the following fires occur mostly at the same phase/times.

Hence an alternative to speed computation which leads to delays when there are too less trig events, could be (to complete) :

* the operator enters a first guess of the times/phases of firing during the cranking period

* these values are adapted (automatically)subsequently from the triggerlogs


August 28 2012

fw upload trick

I messed up when uploading 1.2.5. Communications went dead after reboot. Hopefully the Vems suppor gives me the way to go.

- Switch-on Genboard with pin 2 an 3 of the rs232 link connected this tells the bootloader whitch is RS232 capable, that someone is speaking with him (that's himself). So you stay in Bootloader mode

- Remove Pin2-Pin3 connection, start VT and there VT is clever: it recognize genboard to be in bootloader mode and offer you to proceed fw upload.

Testing 1.2.5 on bench

To recall, we look for the first of the following trigger picture


There Ignition Advance = 10.

One sees that

- Prim trigger (90,30,90,30, ...) is for each cylinder and occurs 10deg before TDC.

- Sparks are 150,90,150,.. and with 10 Advance comes on time with the triggers.

**To resume spark sync: spark occurs on first primTrig after first secTric (of the short gap) and next spark came 150 after.

1) Hereafter the result I get with 1.2.5


for this config




TDCafterTrigger? = 40deg



As done before, I used to increase the level of the trig signals do see the delay for the first ignition.

2) If the first spark gap above was 90 instead of 150 things should be better. So I took


This is what I get


with the following config


here IgnitionAdvance? = 35deg

* I cannot explain this result.

3) In any case if the first spark is delayed of 30deg then to put it back on the primtrig, TDCAfterTrigger? should be = 10. Doing the test I got strange results having 12 ignitions per cycle!!. Anyhow it is know that te fw could not work with this short delay.


I put there the comments I got today for this page.

CCCC ++++++++++++++++++++++++++++++++++++++++++++++++++++++++

What is the angle of the primtrig tooth after the long-gap ?

* Marcell thought 40 crankdeg: because Phil said the tooth after the short-gap is 10 crankdeg (=130, considering the even times compensating with the ...0,30,0,30... per-cyl-sparkdelay rotated as necessary)

* From earlier (slightly reformatted):

** short-gap is the actual "10 crankdeg BTDC cranking ignadv" position (for every 2nd event)": Yes each crank trigger occurs 10deg before relevant TDC

AA ++++++++++++++++++++++++++++++++++++++++++++++++++++++++

I do not understand what is long gap or short gap, neither ""10 crank deg BTDC cranking ignadv" "

Indeed crank trigger occurs 10deg before relevant TDC.

Do you need the delay between sectri and primTrig?

CCC ++++++++++++++++++++++++++++++++++++++++++++++++++++++++

* in any case, if "not good", you MUST try with the per-cyl-sparkdelay rotated (eg. 0,30,0,30.... becomes 30,0,30,0... ) as needed because I still suspect trigger before TDC should be good at 40 degrees with the 1.2.5 primary_trigger=BB setting (and not good at 10 degrees for several reasons).


See above, with spark delay = 30,0,30,0,30,0, to get the sync one needs TDCAfterTrigger?=10deg


2012-09-18 After the maserati was found to be good at normal running, but disgraceful at high RPM-variations during cranking, the maserati code was reimplemented in 1.2.6 for very quick sync at startup and using 10BTDC teeth during cranking (config also changed, see GenBoard/UnderDevelopment/FirmwareChanges and MembersPage/OddFireSixCyl ).



Hourrah!, I finally got the good configuration to successfully test fw1.2.6 ignition on the car (through DIS. It is based on MembersPage/OddFireSixCyl config, the last trick being to swap the 2 coil lines bankA/bankB.

See hereafter the 2 beautiful triggerlog. Note that underb crankingthreshold=499rpm the spark advance is always set to 10deg, hence by theory the sparks should occurs at the time of the corresponding crank trigger. Spark advance is 20deg @1000deg and it is interpolated when running between 499 and 1000rpm



One could object that on the second log, the 6th spark event is misplaced. This might be because the cross from cranking to running mode. Hence rpm slow down somewhat and cranking mode probably returns. The Vems team is aware of that.

In any case this is very successful. Even more since I guess there is not too many ECU which handle the Weber Marelli odd-fire timing from the actual OEM triggers. Hope this paves the way to many more good start oddfire engines.

Now I can mount the 3 coils (2x1 bosch-mercedes coil ) I have kept ready for the car secured in their home made cradle... (one can also see there my previous 3x2Bosch cradle)




Last, I should change the title of this page for: FromEvilToJollyGoodOddFireStartup? and thank the VEMS team for their fw support...