Latest S12 Firmware

Syvecs Staff - Caretaker
Posts: 536
Joined: Fri May 30, 2008 4:05 pm

Re: Latest S12 Firmware

Post by Ryan.g »

This Link - CLICK HERE is for version 1.693 of the S12 firmware.


Changes Since 1.678

Follow the firmware update guide here -

(in 677)
* increase launch switch service rate slightly
* make launch switch validation time mappable
* prevent (with warning) entering output test mode if any base states on
= rs232 can echo loses rolling counter bits in second byte
= rs232 can echo sends up to 40 frames at fixed 10hz (rate limit map gone)
= s7 only : rs232 can echo option to send syvecs fixed can stream instead

(in 678)
* orfc menu help note list includes tpsClosed help notes
* 'log continually' option to avoid 'log from zero' awkward settings
* limit dbw duty in manual target override mode
* warning on non-zero preliminary injection programmed in DI mode
* lr gps can rx option for new AGN device - AG50 without GPS (ie accel/gyro only)
* new cm map use: coil charge time multiplier (<1)
* new cm map use: wgMapLimitMlt (pre-stability drop)
* new item logOnLoadKiloCycles = logbook header on load cycle count, divided, plus offset and clip
* logOnLoadKiloCycles available as cm axis
* gps speed frame receipt failure sets gpsSpeedFault flag (basic, syvecs)
* gps rx sets gpsSpeedFault unless number of satellites >= x
* alternate vehicle speed selection option if gps selected and gpsSpeedFault
= fuel comp update disable at high load (return line starvation) plus re-enable timer
= s7 : disable s7 can datastream transmit unless slave link up (active)
= s7 : send s7 init can frame at 100hz when slave link down (not active)
= s7 : 662h frame add Vbat, pitSwitch, pitLimitActive

(in 680)
* new cm map use: vvtIn/ExBaseDutyMlt (in particular for ect- or eot-based adjustment)
* H/L U16 monitoring items for total logbook distance to can stream to dash
* H/L U16 monitoring items for total logbook run time to can stream to dash
* H/L U16 monitoring items for total logbook on load time to can stream to dash
* VVT disable run time a function of ect
* option to mark VVT as failed (causing limp mode) while disabled by run time or lack of 720 sync
* wgp-based strategy map drop for prp/turbo fail now has 'never' option
* new cm map use: compute only (raw value; map marked as in use but not connected to any strategy)
* all cm map outputs directly available as cm map axis choices
* wgp adder cm map use range doubled to allow forcing wgp target to 0% regardless of pid action
* new cm map use: fuel cut severity (always computed but only effective in run mode)
* filtered final pedal position delta, ppsFinalDT
* ppsFinalDT available as cm axis
* new cm map use: n2oDutyMlt
* n2oFinal available as cm axis

(in 682)
* option to run lambda heater whenever engineEnable OK (default off)
* clip incoming slave voltages to prevent 5.005V causing trouble
* s7 : ign 11 and ign 12 plus slaving to fuel outputs for sync di pump

(in 687)
* idle speed enable max rpm error cell raised from 1000 to 10000
* monitoring items wgMapMaxMltAct1/2 for existing act correction to map max targets
* option to clip direct injection by time as well as fraction of rev (with popup warning) (di+port mode only)
* option to trip fp only when runtime>=x (with popup warning should only be non-zero for mechanical fuel pumps)
* ability to select bus used for master/slave links 1 and 2 (cannot yet combine with eachother or other comms)
* syvecs slave 1 extended timeouts on s8/s12 as well as s7
* syvecs slave 1 additional fixed transmit stream on s8/s12 as well as s7
* syvecs fixed can stream serial echo optional on s8/s12 as well as s7
* engTrqEstDmdFraction Monitoring item
* new cm map - DBW Multiplier
* rs232 25hz transmit option
* trip enable run time for Fuel pressure trip

(in 688)
- fixed display name typo in clPwm01Targ and clPwm01Err
- make atDstGear a monitoring item
- auto trans option to trigger gear blip request from start through power state
- gear blip strategy now active (for trigger from syvecs can or auto trans) if auto trans enabled
- syvecs can rx does not drive blip request if autotrans active and controlling blip requests
- auto trans separate N>D and N>R safety thresholds
- auto trans shift start/end/ramp duties f(configurable item) (full off/on still single point)
- new cm map use : auto trans lock pressure duty multiplier
- auto trans lock duty always updated (except during shift)

(in 690)
* ten more configurable maps cm211..215 and cm311..315
* auto trans option to retain lockup clutch through downshift
* auto trans gear blip request start state calibration
* set rpmFromVS to rpmAvg if vehicle speed fault
* clip rpmFromVS to minMlt..maxMlt x rpmAvg
* option in paddle down shift to protect by rpmFromVS rather than rpmAvg

(in 693)
* VVT closed-loop failure action - choice of disabled or open-loop (defaults to disabled)
* VVT option to retry closed-loop after failure if engine restarted (required power cycle previously)
* VVT open loop switchover default values now 25000rpm

In the past the code defaulted to open-loop operation if closed-loop operation failed. This was rarely well calibrated and rarely appropriate. We have therefore allowed VVT to be completely disabled in this circumstance (and typically a limp mode will be used). The previous behaviour is available if truly desired.

* the high engine coolant pressure trip threshold is now calibratable against ectMax
* there is a new monitoring item for this threshold, ecpTripHigh

* orfc fuel cuts f(rpm) (default 100%)
* orfc ign rtd f(rpm) (default 0)

Overrun fuel cutoff can now be mapped less aggressively and against engine speed, and may include ignition retard.
Syvecs Staff - Caretaker
Posts: 536
Joined: Fri May 30, 2008 4:05 pm

Re: Latest S12 Firmware

Post by Ryan.g »

This Link - CLICK HERE is for version 1.699 of the S12 firmware.


Changes Since 1.693

Follow the firmware update guide here -

(in 694)
* Improved overrun fuel cutoff help notes
* fuelMltOrfcEnd now 1.000 during orfc (matters since 100% fuel cut made possible in 693)
* idle target CM range increases from +1000 to +2500
* gps fault invoked by mappable quality < x
* added vehicle speed fault limp cause (new vehSpdLimp monitoring item)
* limp mode on failed vehicle speed is optional
* optional vehicle speed forced fail when gps reverts to wheel speeds

(in 696)
* limp mode on failed vehicle speed now defaults to NO (on upgrade from <694) to avoid limp when no wheel speeds configured
* new monitoring item dbwTargMax - higher of dbw1Targ and dbw2Targ
* dbwTargMax available as cm axis
* removed torque control driver demand blend out
* new cm map use: torque control driver demand adder
* option to disable torque control driver demand limit when closed loop idle active (defaults to NO)
* renamed torque control Driver Demand Torque Limit to Maximum Driver Demand Torque to avoid confusion between map and function
* torque control driver demand torque limit now disabled during gear blip trail
* new dbw limit item dbwLimitTrq; is beaten by blip (cf dbwLimitPit)
* torque control dbwLimitTrq integrator f(engTrqEstDmdMargin,dbwTargMax) max 100% min dbwTargIdle

(in 699)
* external torque conversion output maps, used to keep OEM TCM's happy by keeping torque values within OEM Limits but allows internal torque calculations to be uneffected.
*new monitoring items engTrqEstFrictionExt, engTrqEstOutputExt, engTrqEstOutputPotExt, engTrqDmdPpsExt (these are the outputs of the Torque S Curve, recommend to be sent in datastreams - Custom Can Transmit for OEM setups
*lambda heater pwm frequency adjustable
Syvecs Staff - Caretaker
Posts: 536
Joined: Fri May 30, 2008 4:05 pm

Re: Latest S12 Firmware

Post by Ryan.g »

This Link - CLICK HERE is for version 1.711 of the S12 firmware. RIGHT CLICK AND COPY LINK IF DOESN'T AUTOMATICALLY DOWNLOAD


Changes Since 1.699

Follow the firmware update guide here -


* trqFuelSev available as cm axis choice
* trqIgnSev available as cm axis choice
* rev limit DBW limit now beats gear blip DBW jacking
* activation engine speed error threshold for rev limit DBW limit (so can defer activation until rev limit reached)
* add check for revCutActive to lean lambda service
* changed detection of engine stopped for clutch protection of paddle shifts in pit from runMode!=run to rpm==0
* initial help notes on direct injection pump control operation
* remove Syvecs hard-coded RS232 stream
* replaced RS232 can echo with RS232 Generic Transmit (up to 20 frames; mappable content)


* change launchInStage to launchState in fixed syvecs CAN stream
* calculate map1/ipp1 and map2/ipp2 as new items mapIppRatio1 and mapIppRatio2
* high load timer decay rate and maximum value


* option to disable fuel pump when engine enable switch off
* new item launchStateX (extended/combined launchState and launchInStage)
* change launchState to launchStateX in fixed syvecs CAN stream
launchState should read identically to before. launchStateX should read the same as the old except in stage, where it has a different value (please log both to compare):
launchState : 0=OFF 1=ON 2=CLEARING 100=DISABLED
launchStateX : 0=OFF 1=ON 2=CLEARING 50=STAGE 100=DISABLED


* prevent fpoSwitch turning on while engine is running
* cancel fpoSwitch if pump out cancelled
* remove detent switch vehicle speed protection (caused some confusion and downshift from N protection better anyway)
* disable up/down shift inputs for 250ms after device turn on (in case of runt pulses from other hardware powering up)
* auto trans solenoid outputs full off duty modifier (as existing full on duty modifier)

We then have


* wheel speed linearisation speed=f(speed) for tyre growth (different front/rear curves)
* raw (nominal) wheel speed monitoring items
* use raw (non-latched / cancelled) override switch states for pedal learning validation


* closed loop idle disable by drive ratio error
* closed loop idle base duty learning


* help on value of 7 in manual cam checklists
* add cal offset to logOnLoadTime / logOnLoadTimeL / logOnLoadTimeH
* add cal offset to logRunTime / logRunTimeL / logRunTimeH
* new monitoring item ppsClosed (works from ppsFinal)
* preblip no longer forces orfc but works through gear blip torque reduction
* significant overrun fuel cutoff changes
- option to enable by ppsClosed rather than by tpsClosed
- disabled by gear blip even if pps used for activation
- new monitoring item orfcPct; ramps in and out when orfc engaged / disengaged
- orfc ignition retard applied according to orfcPct; fuel cuts applied when orfcPct is 100%
* update ECU with new list of output statuses from 2-20-x PDUX firmware
* changed yaw to second transmission of rpm in default Syvecs rs232 stream content
Syvecs Staff - Caretaker
Posts: 536
Joined: Fri May 30, 2008 4:05 pm

Re: Latest S12 Firmware

Post by Ryan.g »

This Link - CLICK HERE is for version 1.752 of the S12 firmware.

Help Video on 1.752 here -


Changes Since 1.711

Follow the firmware update guide here -

* VVT base duties a function of two configurable axes, default f(eot,eop)

We couldn't make it import the old settings perfectly no matter what, so for once this means MANUALLY COPYING ACROSS THE VALUES WHEN UPGRADING CALIBRATIONS.

* New item rpmAvgDT, which is rpmAvg rate of change per 1/100s
* rpmAvgDT available as cm axis choice
* Rev limit drive-by-wire gain, min, and max, become f(rpmAvgErr,rpmAvgDT)

This is to allow some derivative calibration on the rev limit drive-by-wire. Note that when the engine speeds drops below the lowest breakpoint, it use to ramp out according to the left-most gain cell value. There is now a whole left-most column (due to the addition of the rpmAvgDT axis) so it uses the TOP-LEFT cell (ie the one that would apply with the most-negative error and the most-negative derivative). This is commented in the F1 help notes.

* Engine coolant pressure trip thresholds are now mappable against engine speed as well as coolant temperature

* Preblip fuel cut severity, ignition cut severity, ignition retard configurable (single points)

This allows the engine-braking severity of the simple pre-blip to be adjusted in a similar (albeit less complex and configurable) way to the overrun fuel cutoff. Default numbers should match previous behaviour.

* Scaled tacho output becomes x rpm for y ms on calSelect change for driver indication (optional)

This allows the tacho drive to indicate cal switch position changes on a rev counter.

* Aircon PWM output

The existing on/off output stays the same but a second PWM output f(rpm,configurable) has been added. You can run the strategy with either one or both outputs configured.

* Idle speed target adder f(idleActiveTime,vehspd)
* Idle duty adder f(idleActiveTime,vehspd)

* Two user-configurable timers

These can be configured to time up to five minutes of a particular condition (two configurable items with configurable thresholds for each timer). The timers can then be used on the axes of configurable maps.

* Three sensor zeroing groups for user-defined sensors (Uxx sensors only - NOT Rxx sensors)
* User-defined sensor zeroing groups via action codes

You can assign which (if any) Uxx sensors are zeroed by which of the three new zeroing groups. This is for things like zeroing of user-defined ride-height sensors. Note that the zeroing does not know about the engineering-unit transformation (scaling and offset) defined for the sensor, so it zeroes to the raw zero value, not the engineering-unit zero value. If the user-definition offset has been set to zero (which it typically is) this makes no difference, but it's worth being aware of.

751 Update - * renamed mapMaxN to mapNMax
* removed mapxN default logging rates

* changed S7 CAN frame {dbw1Duty,dbw1Targ,egt1,egt2} to 100Hz

* pre-throttle-pressure sensors ptp1/2 including ptp1/2DT derivatives
* ptp1/2 available as cm axis choice
* ptp1/2DT available as cm axis choice
* option for key-on bap from ptp1/2
* calculate map1/ptp1 and map2/ptp2 as new items mapPtpRatio1/2
* add ptp1/2 faults to action codes

* option to target wastegate control manifold pressure against ptp1/2 instead of map1/2
* option to target wastegate control dbw limiting against ptp1/2 instead of map1/2

750 -

Option to select normalised manifold pressure as the primary load

There is a built in compensation table that computes multipliers based on act1/act2 from -30C to +140C. These multipliers can be seen in map1NMlt/map2NMlt. The normalised map1/map2 are then computed as map1N/map2N. They will be between 0.75x and 1.25x the un-normalised values. There are also map1NDT/map2NDT (mirroring map1DT/map2DT) and map1NFault/map2NFault, and also a mapMaxN. If you select the new primary load option for normalised manifold pressure (instead of manifold pressure) a whole bunch of things that are currently mapped against map1/map2/mapMax become mapped against map1N/map2N/mapMaxN. These should all be labelled properly in SCal and include main fuelling and ignition and things like fuel angle and blend maps, lambda targets, torque estimation tables and so on. If you do not set the fuelMltAct/ignAddAct tables to 1.000/0.000 you will get a warning (but it won't actually stop you). There are lots of things that may come after this. Ways to target boost pressure from normalised values (consistent torque delivery) but with absolute pressure limitations still (for rules compliance and to protect pipes etc) for example.

The one big thing to note (apart from that we need to carefully test in both the new and original modes) is that you need to set breakpoints and calibrate your fuel and ignition maps to go beyond what you might usually expect, because map1N/map2N can be up to 25% greater than map1/map2 if it gets really cold, and you don't want to go lean or have too much ignition timing. Calibrators need to understand this properly, and NOT use the feature if they are unsure about it.

3) Alternate full-bridge drive mode option

For S8 and S12 the Full bridge drive Frequency will be changed to a lower range to help with motor winding disturbance from engine harmonics

4) Optional thirds-based gear linearisation hysteresis

Until now we linearised gearV (actually gearVF) to gear based on the mid-points of the in-gear voltages. This could generate a lot of changes of value very quickly if the barrel wobbled about between gears, which was especially inappropriate in some situations. For a special project, we switched to changing "gear" only when 2/3 of the way to the new voltage, giving both hysteresis and stability when in a deliberate false neutral. This is likely good for almost any project, so I have defaulted this to ON after a calibration upgrade.

5) Option to disable calibration override uses budgeting

This allows you to use time budgeting only.

6) Drive-by-wire can be limited by overrun fuel cut - see the new tables and "dbwLimitOrfc"

Also this limit, or torque reductions from overrun fuel cut (ONLY) do not disable cruise control, but do prevent enabling it

7) Gear cut/blip configurable maps

CM for gear cut dog kick time multiplier
CM for gear cut closed loop main max time multiplier
CM for gear cut closed loop retry max time multiplier
CM for gear blip dog prep time multiplier

8) Configurable number of closed loop gear cut dog kicks (main kick retry kick retry kick...)

9) Dummy input 'pin' for use for gear-voltage-from-CAN overriding (used with Megaline CAN)

10) Fuel pressure trip now looks at fpp as well as other pressures (default threshold -1000)

11) Sensor zeroing for clutch position via ethernet comms and action codes

12) Sensor zeroing for clutch paddle positions via ethernet comms and action codes

13) Enable/disable sensor zeroing by group in the calibration

This allows competitors in a series to be locked out from anything they shouldn't be zeroing - eg wastegate position, even if their user ID allows zeroing "in principle".

14) Datastream scaled values for ppsFinal and tpsMax

15) Option for low oil pressure light on off thresholds to become margins above eop1Trip

16) On load/off load overrev markers in datalogging

Whenever the logbook count changes, a text marker is dropped if logging is active.

17) Tacho In function now usable to measure clutch slip (for example)

The function is now renamable, called Engine Speed Input and defaults to [Tacho]. There is a new tacho_rpmIn item. You can define teeth per reading separately from teeth per rev. If enabled at the same time as engine control (which used to be an error) it does not set rpm (but still does if engine control is disabled).

18) In-range switch thresholds include their endpoints

19) The code knows the new PDUXB output states for proper naming in datalogging.

20) New choices for configurable map axes

cruiseVehSpeedTarget available as cm axis
cruiseVehSpeedError available as cm axis
cruiseRpmTarg available as cm axis
cruiseRpmError available as cm axis
cruisePps available as cm axis
cruisePpsBase available as cm axis
tbvDuty available as cm axis
fuelPump1Duty available as cm map axis
tacho_rpmIn available as cm axis

21) Fixed Syvecs datastream changes as requested

Change S7 frame {rpm,ppsFinal,tpsMax,adip1Duty} to {rpm,dsPpsFinal,dsTpsMax,adip1Duty}
Change S7 frame {carCode05,carCode06,atSelect,spare} to 20Hz
Added S7 frame 1Hz 625h {IIE_logDistance1H_U,IIE_logDistance1L_U,IIE_logRunTimeH_U,IIE_logRunTimeL_U}
Post Reply