Repository navigation
Releases
jayecu v0.3.34
Firmware 0.4.24 (build 2446873)
- A battery dip is no longer a key-off. One reading at or under 7 V, or one frame the battery could
not be read, turned the key off on the spot: on a running engine that dropped sync, stopped firing and
reset every module. A loose battery terminal on a bump is not the ignition going off. The supply now
has to stay low for 100 ms, and a dip it rode through is written to the log with how low it went. - An ECU restart on the move no longer leaves a dead throttle. With power back while the car was
still rolling, the trigger had not synced yet, so the throttle took the engine for stopped: it swept
the plate at road speed, cut fuel and spark for half a second, then gave up and stayed dead until the
engine stopped. The plate is never swept while trigger teeth are arriving. Once the engine runs, the
passive check (both tracks agree, inside the stored cal) gives it the throttle, and the sweep runs at
the next stop. - Knock sensor missing, Traction Control's missing speed inputs, H-bridge inputs and Lambda's no-sensor
code now need the input gone for 100 ms, like the other "signal missing" codes. One expired frame set
them. - GM LS1 24x (and any Sequence crank with a cam) now reaches full sequential sync. It stayed on wasted
spark and batch fire for good, with no fault. - A trigger set up with only Width streams is now refused with P1652. It could never sync, but the ECU
reported it as able to run sequential. - Cam advance no longer carries a reading from before a sync loss or a trigger change; it waits for a
fresh cam edge. - After a trigger fault at speed, later key-offs and stops no longer report the trigger as missing
(P0338) on a healthy wire. - Trigger Last Error Kind now reads by name (Tooth Window, Missed Tooth, Phase Lost ...) and its range covers
all seven kinds. It was declared 0 to 2, so Missed Tooth, Noise Edge, Signal Absent and Phase Lost fell outside
it.
Studio
No studio changes of its own. It bundles the 0.4.24 kits, and the manual now covers the 100 ms key-off hold and the throttle after a restart on the move.
Firmware kits for jaytek_v1 and proteus_f7.
jayecu v0.3.33
Studio 0.3.33
No studio changes; this release carries firmware 0.4.23.
Firmware 0.4.23 (build 5b02af5)
- A sensor check's Delay now means what it says while it has a Precondition. The delay is how long a
reading must be out of range, continuously, while the precondition holds. The timer kept running while
the precondition was false, so the first moment it came true the code set at once, with no delay. Found
on a car: an oil-pressure check (Reading Low with an rpm/pressure precondition) set P0524, protection
level 3, on a single sample as the idle sagged at a stop. The oil pressure was fine. - The cam is no longer rejected as rpm comes back up through the phase-sync band. Below the band the
cam is ignored, and the place it is next due is carried forward one cycle at a time. The carry landed
half a tooth before the cam's own edge, so if rpm crossed into the band in that half tooth the real cam
pulse looked like the wrong revolution and was thrown away as noise (P0339). If it crossed just after
the edge, the next pulse could be refused too, and that cost phase. About 1 crossing in 150 on a car.
A cam pulse a whole number of cycles after the last one is now accepted; one half a cycle out is still
rejected. - No false missed tooth when the engine gains full sync. The switch to full (cam) sync re-armed the
"next crank tooth due by" timer without holding off the crank interrupt. A tooth landing in that moment
left the timer set from the tooth before, so it ran out half a tooth after a tooth that came on time:
a missed tooth (P0336), sync cut and re-acquired (P0335). Seen on a cold start, the moment the flare
took the engine past the phase-sync rpm. - "Signal missing" codes wait 100 ms, and stand down while a 5 V sensor reference is down. The
module codes for a required input that has gone (P1700-P1704 fuel, P1710 boost, P1720 transient
throttle, P1730 stepper, knock's throttle gate) used to set on a single bad frame. At key-off the sensor
references go a few milliseconds before the battery reading falls below the key-off threshold, so the
throttle read missing for a frame with the key still on: P1720 and a CEL flash at shutdown. They now
need the input missing for 100 ms (as the supply codes do), and say nothing while a reference is down,
because P0641 / P0651 report that. An input that is not assigned at all is still reported at once.
Firmware kits for jaytek_v1 and proteus_f7.
jayecu v0.3.32
Studio 0.3.32
- A modified tune is asked about, not saved silently. When the studio closes (including when it restarts to install an update) and the tune in memory differs from its file, it asks: Save, Don't save, or Cancel to stay open. "Remember my choice" sets Preferences > Editor > On exit with a modified tune (Ask / Always save / Always discard). Before, the tune was written over its file without a word.
- After a firmware update, the reconnect asks which tune you want. If your open tune is not the same as the ECU's, it now stays your active tune, and the reconnect shows the differences and asks whether to keep the ECU's tune or send yours. Before, the update made a fresh copy of the ECU's tune the active one, so the reconnect found nothing different and your changes were left behind with only a line in the update message. The ECU's tune is still saved to its own file either way.
Firmware 0.4.22 (build 96fc6ed)
Unchanged from v0.3.31.
Firmware kits for jaytek_v1 and proteus_f7.
jayecu v0.3.31
Firmware 0.4.22 (build 96fc6ed)
- Fuel asked for while an injector is open is now added, and the dead time is paid once per opening.
When an async transient squirt landed while an injector was in its normal pulse, the injector closed at
the squirt's earlier close and the rest of the normal pulse was lost: on the bench, a 1 ms squirt cut an
8 ms pulse to 3 ms. That cylinder ran lean for the cycle, on exactly the tip-ins the squirt was meant to
help. The same happened with the cold-start prime.- The scheduler now pays the opening price (dead time) only when it actually opens an injector. A
request that lands while the injector is open adds its spray time: 1 ms into a 5 ms pulse, 3 ms more
leaves 7 ms to run. Once an injector has closed, the next request opens it again and pays again. - Async squirts are asked for as spray time (the scheduler adds each injector's dead time).
- Before cam sync, events that fold onto the same angle (a rotary's faces, a two-event batch) are still
one pulse, not two added together.
- The scheduler now pays the opening price (dead time) only when it actually opens an injector. A
- A lift no longer throws away the tip-in enrichment. With disenrichment off, the enrichment was set
to zero the moment the throttle started to close, while MAP (which lags the throttle) was still at its
peak. A quick stab and lift went briefly lean: λ 0.99 to 1.34, about 20 AFR on the 14.7 scale. The lift
still ends the event, so it cannot grow or re-peak, but what it added now bleeds off at the Enrich Decay
rate.
Studio 0.3.31
- Manual: the transient fuel chapter describes how a lift ends a tip-in (the enrichment bleeds off rather than vanishing) and how an async squirt adds to a pulse already running.
Firmware kits for jaytek_v1 and proteus_f7. No settings layout change from 0.4.21, so a tune comes across as it is.
jayecu v0.3.30
Firmware 0.4.21 (build ac9f7bf)
- Key-on is a power-on. With USB holding the ECU up, key-off used to leave every module and sensor as
it was, and the next key-on carried on from there. Now key-off puts every module back to its power-on
state and key-on re-reads every sensor from scratch. Only what survives a real power loss carries over:
the tune, learned trims, knock learning and stored fault codes.- Found on a car: the battery terminal let go under the starter mid-crank. At key-on the start switch
still read "pressed" for its first few samples, the start sequence took that for a press, and the
engine cranked with nobody on the key.
- Found on a car: the battery terminal let go under the starter mid-crank. At key-on the start switch
- A start press has to be seen. The start button must read released with the key on before any press
counts, with Engine Start on or off. A button already pressed at key-on (held, stuck, or stale) never
starts a crank: let it go and press again.
Studio 0.3.30
- Manual: the start sequence chapter explains that a start press has to be seen (the button must read released with the key on first).
Firmware kits for jaytek_v1 and proteus_f7. No settings layout change from 0.4.20, so a tune comes across as it is.
jayecu v0.3.29
Studio 0.3.29
- Open ECU opens the tune that is on the ECU, instead of asking you to choose from every tune it has. The old list put the ECU's tune among older ones whose files had been saved more recently, so the newest-looking entry could be a stale one. To open a different tune, use File ▸ Open Tune, where the ECU's tune is now marked "(on the ECU)".
- The studio records which tune is on the ECU each time a connection settles, whether you keep the ECU's tune, restore yours, or they already match. Before, only a firmware update recorded it.
Firmware 0.4.20
Unchanged from v0.3.28.
Firmware kits for jaytek_v1 and proteus_f7.
jayecu v0.3.28
Firmware 0.4.20 (build 26e7bc4)
- Trigger inputs use only the edges selected in Edge. A pulse-width cam (the 2JZ / 1JZ front or rear cam, and every
"+ cam" wheel) used to capture both edges whatever Edge said, and timed itself from the pulse's closing edge.
On a VR input that edge is where the signal crosses a threshold re-armed from the last pulse, so it moves with
every change of speed and comes late after a weaker pulse. A quick stab through the cam's phase-sync rpm read
that as a cam that hadn't arrived: phase lost (P0341), a moment on wasted spark, then a re-sync. Now:- With Edge on Rising or Falling, only that edge is captured, and each one is the cam's reference. On a VR
input that's the zero crossing, which sits on the tooth. WIDTH min/max don't apply. - With Edge on Both, the width is measured and picks out the reference, which is timed from the rising edge.
The VVT angle is measured at the same edge.
- With Edge on Rising or Falling, only that edge is captured, and each one is the cam's reference. On a VR
- VVT cam angles (VVT Cam 1-4 Advance) are published in degrees. They were in tenths of a degree, so a cam 4.3°
from nominal read 43°, and cam control would have closed its loop on a value ten times too large.
Studio 0.3.28
- The trigger Edge setting and the WIDTH min/max help explain that only the selected edges are captured, and that a Width cam on Rising or Falling takes every selected edge as its reference.
- Manual: the trigger chapter describes the Edge rule and why a VR cam must be on Rising.
Firmware kits for jaytek_v1 and proteus_f7.
jayecu v0.3.27
Firmware 0.4.19 (build f778d73)
- Engine Start has its own switch, Start Sequence Enabled, like every other feature: at the top of its page and
on the Configuration and Engine Functions switchboards, and the page shows in the tree only while it is on.
It is off by default; off, Crank Request is the start button itself, so a starter output reading it cranks
as before. If you set up Engine Start on 0.4.18, switch it on again after updating. Its fuel settings grey
out while Prime Before Crank is off.
Studio 0.3.27
- Engine Start is on the Configuration and Engine Functions switchboards with its own switch, and its page and tree entry follow it like every other feature.
Firmware kits for jaytek_v1 and proteus_f7.
jayecu v0.3.26
Firmware 0.4.18 (build b32e6af)
- New start sequence (Configuration ▸ Engine Functions ▸ Engine Start). A press of the start button is held
until the engine is fit to crank: every electronic throttle has passed its key-on check, and the fuel pump
has brought the rail up — to 250 kPa when a rail pressure sensor is reading (at once if it is still up;
cranking anyway after 3 s), or for 1 s when there is none. A rail that bled down after the key-on prime
used to meet the first crank, and the prime pulse, empty. The starter output now cranks on Crank Request
(crank_req) and the fuel pump also runs on Start Pump (start_pump): run the output wizard on the
Starter Motor and Fuel Pump outputs to take the new conditions (an output set up before keeps reading the
button). A tap is enough; holding the button still gives another crank after the rest. New channels
Start Sequence, Crank Request and Start Pump are in the default logs. A start that had to crank on a low
rail raises P0087 (level 1, cleared by the next start that reaches pressure) and the console says what
pressure it got to; a press dropped after the wait says what it was still waiting on.
Studio 0.3.26
- New page: Configuration ▸ Engine Functions ▸ Engine Start, with the start sequence settings and a live readout of what a start press is waiting on.
- The Starter Motor and Fuel Pump output templates use the start sequence (re-run the output wizard on those outputs to take it).
Firmware kits for jaytek_v1 and proteus_f7.
jayecu v0.3.25
Firmware 0.4.17 (build 4c7dc38)
- The engine can no longer start on an electronic throttle that hasn't passed its key-on check. Fuel and spark stay off while it cranks, whatever is turning it; a check cut short by cranking runs again as soon as the engine stops, and every key-off starts the check from scratch. Before, cranking during the check left the throttle dead for that key cycle (high idle on its rest opening, no pedal, no fault code). An engine that is already running is never cut by this. Gate the starter output on the throttle being ready as well (
etb_state_1 == 2) so the starter waits for the check instead of cranking against it. - Lifting off the throttle no longer adds fuel. With disenrichment off, the tip-in's enrichment carried on through a lift and, when the throttle settled closed, came back at full strength: a rich stumble after every lift. A lift now ends the tip-in.
- Each new push of the throttle gets its own tip-in fuel, judged from where that push started. A small throttle movement on boost was enriched as if it were a stab from idle, because the enrichment remembered where an earlier stab began: far too much fuel and a rich stumble.
- The closed-loop fuel trim now holds still during throttle transients and wall-film corrections, instead of chasing the brief rich or lean reading they cause and leaving the mixture off afterwards.
- The closed-loop fuel trim starts from zero after the engine stops, so a restart doesn't begin on the last run's correction.
- Log files on the SD card now carry the ECU clock's date and time (the clock Studio sets on connect) instead of all reading 1 January 2026.
Studio 0.3.25
- The Auto Tune grid is drawn like the table it tunes, on that table's own axes, and its right-click 2D Grid, 3D Surface and Slice views work. Each cell has a bar showing how much evidence it has, and the outlined cell is where the last reading landed.
- The 3D view on the Auto Tune tab turns only while the mouse button is held.
- Auto Tune opens on Change % (the proposals) when you apply by hand, so a run no longer looks like an empty grid, and it remembers Resistance and the Show choice.
- Hovering the words beside a control now shows its help, as the control does. On most settings pages they were silent, because the fields sit inside a panel.
- Every control on the Auto Tune tab has a tooltip.
- Importing logs from the SD card never overwrites an earlier log with the same name; a second one gets -2, -3 and so on.
- Settings that hold an expression (such as Launch Control's Arm When) can be set through the automation bus.
- A closed page window no longer answers right-clicks meant for the page that replaced it.
Firmware kits for jaytek_v1 and proteus_f7.