Be notified of new releases
Create your free GitHub account today to subscribe to this repository for new releases and build software alongside 40 million developers.Sign up
On top of the recently release new wiki and new websites, here's the first new firmware for 2020! Like the websites, there's been a LOT happening in the background on the firmware front, including the introduction of a proper, hardware based CI/CD unit testing framework. Without getting too technical, this now means the every code commit is now automatically run through a growing number of tests, on a physical board, and the results reported immediately, allowing for much faster identification of new issues.
Primarily this is intended as a maintenance release with a huge list of bug fixes and minor tweaks here and there, but there some nice new features including the WUE analyse live ('auto tuning'), new info dialogs and a much more solid tooth/composite logger.
One thing to note is that this firmware requires the newly released TunerStudio v3.1. This contains a heap of things that are specific to Speeduino, including proper serial connection testing, automatic downloading of ini files and the delimitation of the squirts/cylinders that had frustrated a lot of users.
As usual, here's the full list of changes this month:
- Add options to enable the WUE 'auto' tuning in TunerStudio
- Allow total correction adjustment up to 511% (Was 255% previously)
- Add board definitions for Pazi's BMW PNPs
- Multiple fixes to improve the tooth and composite loggers (In particular fix an issue where the logger would not activate if it the logger was started before the engine was cranking/started)
- Add new dialogs in TunerStudio for:
- Showing a summary of all IO configurations
- Customising the warning and high warning limits for different gauges
- Fix a rare issue where the dual wheel decoder could fail to sync during cranking and then set an invalid filter time, which prevented it syncing again until after a restart
- Fix an issue where the 36-2-2-2 decoder would not transition from cranking to running correctly/smoothly
- Fix an issue with timing on 3 cylinder engines
- Fix for a potential spike in MAP values when cranking and using cycle and event average sampling
- Fix an issue where some ignition pulses could be skipped at high RPM and high dwell times (When time between a pulse ending and the next dwell starting was <1ms)
- Remove the limitations in TunerStudio around different squirt and cylinder combinations (Requires TunerStudio 3.1+)
A BIG thanks to those who have submitted contributions and pull requests for this release, I think there's been more contributors to this release than any other! In particular big thanks go out to @brunob45, @iLeeeZi, @VitorBoss and @Autohome2
As usual, the new firmware can be installed through SpeedyLoader or compiled from source directly from Github.
Another few months down and they've been some of the busiest ever for things happening in Speeduino-land!
Firstly I want to pass on a big thanks to @iLeeeZi who has contributed multiple pull requests this month for new features! Thanks also to @brunob45 and @pazi88 for their contributions as well, it's terrific to see other people starting to make some regular pull requests and things :)
This release has a HEAP of small bug fixes as well as some nice new feature additions. A huge number of issues/requests have been both submitted and resolved this month and this release is one of the most thoroughly tested ever.
The full list of of impacting changes is below:
- Add a manual baro correction curve
- Add idle advance control
- Add a new MAP sampling mode ('Event average') that averages MAP readings over a single ignition event (Eg every 180 degrees for a 4 cylinder, ever 90 degrees for a V8 etc). This is intended to provide the benefits of averaging values with the higher update speed of the instantaneous mode
- Split the idle stepper homing and max steps into 2 different variables
- Tweaks to the closed loop algorithm to prevent 'rubber banding' with the integral value
- Add an option to select whether the injector voltage correction applies only to the dead time or to the entire pulse width
- Fix a possible incorrect injector pulse at very low RPM when sequential fuel is enabled
- Fix a potential underflow issue when DFCO was used in conjunction with staged injection
- Fix a bug where a missing tooth decoder could potentially sync on the wrong phase under certain sequential conditions
- Fix an issue where the default nitrous pins would be disabled even if nitrous was not enabled
- The 2D table lookup has been rewritten to improve performance as well as correctly handle 16-bit and negative values
- Some significant performance and RAM optimisations
Been a few months since the last firmware release, longer than I normally take with them I know. In part I had been hoping that the new version of TunerStudio was going to drop sometime soon as it has some great new Speeduino specific features such as automatic ini file downloading, serial port scanning etc. If anyone wants to try those out today though, just grab the beta version of TunerStudio
As far as what DID make it in this month though, the big new feature is the completion of the dual table work. There's now the options to use the second table either in a blended mode (Multiply/Add etc), a condition based switch (Eg when MAP goes over 100kPa) or switched with an external input.
There's also the initial work on closed loop VVT. This should be considered very much for testing only at the moment as the PID routine needs some further work. Currently it only runs on the Miata 01+ pattern, but will be expanded once thePID is working to a satisfactory level.
Worth also mentioning is that there's now an option added to use the legacy MAP reading method. In the 201905 firmware, there was a change to make the MAP readings more accurate, which is a good thing (!), but had the affect that it offset a few people's existing MAP based tunes. This option let's anyone upgrading to this fw use the old method and avoid need to rescale their MAP axis.
Otherwise, there's been a HEAP of small little changes and fixes, so here's the full list of things going in this release:
- 2nd fuel map switching now available. Switch can be based on either an external input or certain conditions being met (Eg MAP going over 100kpa etc)
- Add the ability to do a compensation for battery voltage readings
- Add an option to use the legacy MAP reading method (For pre-201903 updates)
- Pin mappings added for multiple new boards (CORE4, Miata 01-05, Miata 96-97)
- Prevent the flat shift limiter from activating if launch control is already active
- Initial work on closed loop VVT. Currently only available for the Miata VVT pattern and should be considered for testing only
- Cleanup of the TunerStudio interface and log file variables.
- Fix an issue where there MAP windowing (Cycle minimum and Cycle average only) would only be performed on 1 of the 2 revolutions of a 4 cylinder engine.
- Fix the hardware test mode which was broken in the May '19 release
- Fix a bug where negative values on the coolant based advance table would cause an overflow
- Fix a bug that could cause occasional tacho pulse misses
- Fixed a bug when using WastedCOP mode on a 4 cylinder where the overdwell protection may not work on channels 3 and 4
- Revert the use of On/Off fields in the log which caused problems with MegaLogViewer Lite
It's been 2 months since the last release rather than the typical 1, which means I've either been super busy or super slack. Thankfully it's the former!
There's some big new features in this months release, including some that I had been resisting implementing for one reason or another. It appears the peer pressure got to me though and this update brings things like MAP based acceleration enrichment, which I think I must've been asked about 100 times.
The big one though that I've been working on (At least in part I have to admit for use on my own car) is the addition of a secondary fuel table. In its current form, this allows for blending of 2 fuel tables (Either by multiplying or adding them) that use different load axis (Eg one with TPS and one with MAP). This is particularly useful on ITB setups where having only single load source can be limiting.
I intend to add switchable tables (Either via an input or by setting changeover RPMs/Loads) over the next month, but I simply ran out of time to get it finished off now.
As always ,there's a bunch of smaller stuff, so the full list of changes is below:
- Addition of a 2nd fuel map that can be blended (Multiplied or added) to the primary map
- MAP based acceleration enrichment. Currently it's only TPS OR MAP, you can have a % blend of both, but I might look at adding this later
- Coolant based priming pulse. Previously the priming pulse was a fixed value, this allow it to be set based on the coolant temp
- Coolant based After Start Enrichment (ASE). Similar to the above, ASE was previously a single adder amount that was added for a set period of time. Both the amount and the duration of the ASE can now be varied with coolant temp
- (BIG thanks to pazi88 for his work on those last 2 items)
- Miata 9905 pattern can now use the new ignition mode
- Fix a bug that would cause issue if trying to do 3 or 5 injections per cycle
- Closed loop idle target, RPM delta from target and an idle control indicator have been added to the log
- Prevent O2 readings and closed loop from being performed if the user hasn't set the sensor type
Primarily a 'maintenance' release, the March 2019 firmware addresses a number of issues that had been reported, but also adds a couple of the more requested features. Given the number of general, as well as configuration specific, changes, I highly recommend this update for all users.
As always, there's a lot going on under the hit in this update, but the major highlights are:
- Tacho pulse duration is now configurable, preventing an issues at high RPMs on higher cylinder count engines
- Add ability to prime fuel pump based on the ignition turning on, even if USB was previously connected (This works on v0.3/4 boards)
- Ignition modes for FD RX7 and RX8 coils
- MUCH faster initial connection times to Tuner Studio
- Improved idle stepper motor cool downs (Thanks to Metcalfe)
- Improvements to the GM 7X decoder
- Fix a bug that could cause an erroneous ignition pulse on startup
- Fix an overflow bug on the missing tooth decoder that could cause short dwell times in some rare situations
- Fix an issue where the dwell value reported in TS (and logs) could potentially overflow above 25.5ms
- Improved compatibility with Real Dash (Thanks to brunob45)
- TONS of work on the stm32 abstractions
As those who have been watching the Speeduino project develop over the last few years may have noticed, January tends to be the time that I make some big structural changes to the codebase, and this year was no different.
As there has been continued interest in using Speeduino across multiple different microprocessor architectures, I've gone through and made this a much, much more modular and simpler process. Whilst multi-architecture support had been there for some time, the board specific sections were mixed in amongst the code in a way that made if difficult to add new MCUs. This has now all been pulled out and all of the code specific to each board is now contained within a single .h and .ino file pair. this makes it considerably easier to add and maintain many different microprocessors all within the same codebase and was a huge piece of work over the last month or so. It means though that working on different architectures in the future will be much simpler.
In terms of actual changes to the firmware though, there were a lot of general fixes, both large and small that I've worked through over the last couple of months. And so as usual, here's the list of them:
- A large number of improvements to the composite and trigger loggers. There were some bugs here they meant that no data was sometimes returned, or that the data returned was invalid, particularly at low RPM and with low res triggers. These should now all be resolved.
- Always update the Fuel Load value, even when the RPM is 0. This had caused some confusion as previously the Fuel Load value was always 0 if the engine was off.
- Remove the injector opening time from the staging fuel split calculation
- Add the option of having the fan control work even when the engine is turned off. Thanks to cmjdev for contributing this
- Add an option to invert the idle stepper motor control direction (Saves reversing the wiring on some stock setups). Thanks to ric355 for this
- Fix a rare edge case where if sequential ignition was combined with multiple squirts per cycle (>2) then some squirts would not trigger correctly.
- Fix a bug where the idle load value sent to Tuner Studio would not update during cranking (Though the output was correct)
- Add a check to prevent the 'Include AFR' option from engaging prior to the O2 sensor warmup time
- Add the missing Idle Up value setting to the relevant dialog
- Fix a warning in TunerStudio when TPS was used as the fuel load source
Some of you may also have seen the release of SpeedyLoader. This will be the new recommended method for installing the Speeduino firmware as, for most users, it will be considerably simpler and faster. No more compiling the firmware yourself, just connect your arduino, fire up SpeedyLoader and select the firmware version you want to install. Links to download SpeedyLoader can be found on the wiki: https://speeduino.com/wiki/index.php/Compiling_and_Installing_Firmware#Installation_-_Easy_Method
OK, so this has been a long, long while coming (In fact, at 2.5 months, it's the longest there has ever been between Speeduino firmware releases), but there are a few tasty little additions that make it worth the wait!
The biggest one straight off the bat is the addition of composite logging! This has been one of the most requested features for a long, long time and is a tremendous help in diagnosing issues with trigger issues. For those not familiar with the composite logging function in Tuner Studio, this presents a scope like view of the crank and cam inputs, eg:
Screen Shot 2018-10-15 at 2.29.22 pm.png
Screen Shot 2018-10-15 at 2.29.22 pm.png (243.53 KiB) Viewed 516 times
In terms of other large changes, the other one this time around is the addition of customisable analog filter values. A few people have commented in the past that the filter on the TPS input was on the strong side, slowing down the reaction speed. Allowing the filter values to be set through Tuner Studio means that on setups with noise-free sensors, the filters can be turned down in order to give faster response times. If you are seeing noise though, the filter can be turned up to eliminate this. The dialog can be found under the Tools menu.
Screen Shot 2018-11-29 at 11.03.36 pm.png
Screen Shot 2018-11-29 at 11.03.36 pm.png (385.24 KiB) Viewed 516 times
I would strongly recommend double checking the values after upgrading to ensure they match the above, at least as a starting point.
So the full list of changes this time around are:
- Composite logging now available
- Customisable filters for all the analog inputs
- A bunch of changes and tweaks on the Subaru 6/7 decoder
- LEADING/TRAILING edge on the triggers have been renamed to RISING and FALLING. PLEASE CHECK YOU TRIGGER SETTINGS AFTER UPDATING TO ENSURE THIS IS CORRECT. Every effort has been made to ensure the update retains the correct setting, but please double check this after updating.
- Bosch 3 bar MAP sensor calibration added
- Fix to prevent Teensy setups from freezing if PWM idle is enabled
- Fix a bug where the fuel pump priming would run indefinitely if the priming time was set to 0
- Add a bunch of safety checks to help prevent pin clashes between 2 functions
It's been one of those times when 1 month just wasn't enough for everything I wanted to get done in this month!
The biggest change by far this month are the huge modifications to the ignition timing and scheduling system. At a high level, this has extended the older per tooth timing mode and brings a significant increase in timing accuracy. I'll be doing a full write-up to run over the details of this and there is some work still in progress to give further improvements, but its a very solid step forward. Currently it's limited to only some of the decoders as I go through and write support into the rest and is turned off by default just incase there are any bugs (See the option in the Spark Settings). I strongly recommend giving it a shot though.
In the background, I've also kicked off the work to add interfacing with a knock controller. This remains a WIP at the moment, but should make it to a working state before too long. Further details coming soon ;)
In terms of other bits and pieces, it's a pretty long list this month! Lots a bug fixes and little things that have been added here and there, all of which add up to a pretty solid set of improvements:
- Sequential decoding on the 4g63 pattern
- Add a Lost Sync counter
- Change the rolling cut method to be more aggressive (Now performs a full cut on all cylinders, but not every revolution)
- Comms change to better support connections with msDroid
- Fix a regression that meant the ignition table would not be shown in Mega Log Viewer
- Fix a bug that would lead to inaccurate timing on the Basic Distributor, Miata9905 and Subaru 67 patterns
- Multiple fixes to the stepper idle control (Homing not completing in some cases and the cranking step value being incorrect)
- Fix a bug preventing sequential ignition working on 2 cylinder engines