automated md lint fixes

This commit is contained in:
mi-hol 2023-01-02 20:22:23 +01:00
parent b7a57b8d05
commit 948fad34c0
347 changed files with 2150 additions and 2516 deletions

View File

@ -13,8 +13,6 @@
![x](OEM-Docs/Mitsubishi/1995-3000gt-starting-without-theft.png)
# Starting with Theft
![x](OEM-Docs/Mitsubishi/1995-3000gt-starting-with-theft.png)

View File

@ -5,4 +5,3 @@ M104 wasted spark
![x](OEM-Docs/Mercedes/1997-e320-2.png)
![x](OEM-Docs/Mercedes/1997-e320-3.png)

View File

@ -1,48 +1,40 @@
![x](OEM-Docs/Mercedes/mercedes_170.png)
[Mercedes-Benz M112 Engine - Wikipedia]](https://en.wikipedia.org/wiki/Mercedes-Benz_M112_engine)
[Mercedes-Benz M112 Engine - Wikipedia]](<https://en.wikipedia.org/wiki/Mercedes-Benz_M112_engine>)
# 99 E320
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| A3 | BRN | KL31(GND) Ground Ignition earth |
| A7 | BRN | Ground |
| A8 | BRN | Ground |
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| B1 | | |
| B2 | | |
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| C8 | | |
| C8 | | |
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| D8 | | |
| D8 | | |
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| E1 | GRY\RED | INJECTOR NUMBER 2 |
| E2 | GRY\YEL | INJECTOR NUMBER 5 |
| E13 | GRY\GRN | INJECTOR NUMBER 3 |
| E1 | GRY\RED | INJECTOR NUMBER 2 |
| E2 | GRY\YEL | INJECTOR NUMBER 5 |
| E13 | GRY\GRN | INJECTOR NUMBER 3 |
| E14 | GRY\VLO | INJECTOR NUMBER 6 |
| E25 | GRY\BLK | INJECTOR NUMBER 1 |
| E26 | GRY\BLU | INJECTOR NUMBER 4 |
| E25 | GRY\BLK | INJECTOR NUMBER 1 |
| E26 | GRY\BLU | INJECTOR NUMBER 4 |
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| F4 | VLO | COIL5.1 |
| F5 | VLO\WHT | COIL5.3 |
@ -57,12 +49,6 @@
| F20 | BLK\WHT | COIL1.3 |
| F21 | BLK | COIL1.1 |
![x](OEM-Docs/Mercedes/99_e320_1.png)
![x](OEM-Docs/Mercedes/99_e320_2.png)

View File

@ -1,6 +1,6 @@
![x](OEM-Docs/Mercedes/mercedes_170.png)
[Mercedes-Benz M113 Engine - Wikipedia]](https://en.wikipedia.org/wiki/Mercedes-Benz_M113_engine)
[Mercedes-Benz M113 Engine - Wikipedia]](<https://en.wikipedia.org/wiki/Mercedes-Benz_M113_engine>)
# 99 E430

View File

@ -1,21 +1,19 @@
![x](OEM-Docs/Mercedes/mercedes_170.png)
[Mercedes-Benz M113 Engine - Wikipedia]](https://en.wikipedia.org/wiki/Mercedes-Benz_M113_engine)
[Mercedes-Benz M113 Engine - Wikipedia]](<https://en.wikipedia.org/wiki/Mercedes-Benz_M113_engine>)
# 2000 S430
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| E1 | GRY/VIO | INJECTOR NUMBER 6 |
| E2 | GRY/GRN | INJECTOR NUMBER 3 |
| E3 | GRY/PNK | INJECTOR NUMBER 7 |
| E4 | | INJECTOR NUMBER 8 |
| E13 | | INJECTOR NUMBER 4 |
| E14 | | INJECTOR NUMBER 2 |
| E25 | | INJECTOR NUMBER 1 |
| E25 | | INJECTOR NUMBER 5 |
| E1 | GRY/VIO | INJECTOR NUMBER 6 |
| E2 | GRY/GRN | INJECTOR NUMBER 3 |
| E3 | GRY/PNK | INJECTOR NUMBER 7 |
| E4 | | INJECTOR NUMBER 8 |
| E13 | | INJECTOR NUMBER 4 |
| E14 | | INJECTOR NUMBER 2 |
| E25 | | INJECTOR NUMBER 1 |
| E25 | | INJECTOR NUMBER 5 |
![x](OEM-Docs/Mercedes/2000_s430_page_1.png)
@ -23,7 +21,6 @@
![x](OEM-Docs/Mercedes/2000_s430_page_3.png)
# 2000 S500
![x](OEM-Docs/Mercedes/2000_s500_page_1.png)

View File

@ -2,4 +2,4 @@
![x](OEM-Docs/VAG/2002-allroad-2.7-2.png)
![x](OEM-Docs/VAG/2002-allroad-2.7-3.png)
![x](OEM-Docs/VAG/2002-allroad-2.7-3.png)

View File

@ -33,9 +33,6 @@
| 118 | ? | H-bridge | ETB |
| 121 | ? | 12v | +12v from main relay |
![page1](OEM-Docs/VAG/2002_Passat/2002_passat_part1.png)
![page2](OEM-Docs/VAG/2002_Passat/2002_passat_part2.png)
![page3](OEM-Docs/VAG/2002_Passat/2002_passat_part3.png)

View File

@ -1,5 +1,4 @@
[page-1](OEM-Docs/VAG/2004-cayenne-3.2-1.pdf)
[page-2](OEM-Docs/VAG/2004-cayenne-3.2-2.pdf)
@ -7,4 +6,3 @@
[page-3](OEM-Docs/VAG/2004-cayenne-3.2-3.pdf)
[page-4](OEM-Docs/VAG/2004-cayenne-3.2-4.pdf)

View File

@ -2,7 +2,6 @@
[Pinout Spreadsheet](https://docs.google.com/spreadsheets/d/1ZlcC5cdCwjYoV-z49MNaa9zpLiu_ZYBIx5H-j0F6QpI)
# 1994
DOHC Non-turbo California: 1994 to 1997
@ -12,38 +11,47 @@ DOHC Non-turbo Federal: 1996 to 1997
DOHC Turbo: 1994 to 1997
### 94-1
![x](OEM-Docs/Mitsubishi/3000gt/ecu94-1.gif)
### 94-2
![x](OEM-Docs/Mitsubishi/3000gt/ecu94-2.gif)
### 94-3
![x](OEM-Docs/Mitsubishi/3000gt/ecu94-3.gif)
### 94-4
![x](OEM-Docs/Mitsubishi/3000gt/ecu94-4.gif)
### 94-5
![x](OEM-Docs/Mitsubishi/3000gt/ecu94-5.gif)
### 94-6
![x](OEM-Docs/Mitsubishi/3000gt/ecu94-6.gif)
![x](OEM-Docs/Mitsubishi/3000gt/ecu94-6.gif)
# 1996-1997
### 96-1
![x](OEM-Docs/Mitsubishi/3000gt/ecu_96-97_1.gif)
### 96-2
![x](OEM-Docs/Mitsubishi/3000gt/ecu_96-97_2.gif)
### 96-3
![x](OEM-Docs/Mitsubishi/3000gt/ecu_96-97_3.gif)
### 96-4
![x](OEM-Docs/Mitsubishi/3000gt/ecu_96-97_4.gif)
### 96-5
![x](OEM-Docs/Mitsubishi/3000gt/ecu_96-97_5.gif)
![x](OEM-Docs/Mitsubishi/3000gt/ecu_96-97_5.gif)

View File

@ -1,7 +1,6 @@
Overview of state of integration between rusEFI and all kinds of ASICs.
# Low side+
### Mostly implemented
@ -40,5 +39,3 @@ Overview of state of integration between rusEFI and all kinds of ASICs.
| MAX31855 | EGT | Not used by anyone |
| [MC33972](https://www.nxp.com/docs/en/data-sheet/MC33972.pdf) | Multiple switch detection interface | EG33 board |
| | | | | |

View File

@ -2,27 +2,27 @@
See also [Fuel Overview](Fuel-Overview)
Acceleration Compensation is required in an EFI system to modify the fuel injection to compensate for the deviation in AFR caused by the change of conditions in the inlet manifold.
When an engine changes load the depression in the inlet manifold changes; during an increase of load the depression increases and this causes fuel to drop out of suspension and collect on the walls of the intake manifold. Because of this fuel drop out, instead of being drawn into the cylinders, the fuel momentarily remains on the walls of the inlet manifold. The result of this is the lean AFR spike you can often see on poorly tuned vehicles when giving a sudden increase of throttle.
Acceleration Compensation is required in an EFI system to modify the fuel injection to compensate for the deviation in AFR caused by the change of conditions in the inlet manifold.
When an engine changes load the depression in the inlet manifold changes; during an increase of load the depression increases and this causes fuel to drop out of suspension and collect on the walls of the intake manifold. Because of this fuel drop out, instead of being drawn into the cylinders, the fuel momentarily remains on the walls of the inlet manifold. The result of this is the lean AFR spike you can often see on poorly tuned vehicles when giving a sudden increase of throttle.
rusEFI has implemented several strategies that attempt to compensate for this physical phenomenon. These are detailed in their own specific pages, but a brief overview is shown below.
It is important to note that the Acceleration Compensation is not intended to increase the amount of fuel in order to increase power during acceleration - that is the purpose of the AFR table or VE table, whereas this compensation is purely intended to correct for the fuel dropping out of suspension.
N.B. This is also why I refer to it as "Acceleration Compensation" rather than "Acceleration Enrichment", as the second term implies the wrong purpose.
N.B. This is also why I refer to it as "Acceleration Compensation" rather than "Acceleration Enrichment", as the second term implies the wrong purpose.
# TPS based
# TPS based
The simplest method, this uses the change in TPS position over time to decide on an additional quantity of fuel to inject.
It is most similar to a carburetors accelerator pump in operation.
It is most similar to a carburetors accelerator pump in operation.
# Wall Wetting
# Wall Wetting
This is a more sophisticated method that was developed in the 1980s by the Ford Motor Company. It uses a simple model to estimate the amount of fuel that is dropping out of suspension and the time it takes to re-evaporate.
This is a more accurate method but requires a little more knowledge to tune.
This is a more accurate method but requires a little more knowledge to tune.
# Engine Load based
# Engine Load based
[//]: # "To do by someone with more understanding of this implementation"
[//]: # "OrchardPerformance"
[//]: # "OrchardPerformance"

View File

@ -1,11 +1,11 @@
# Acura RSX
# 2003
[2003-acura-rsx-type-R.pdf](https://github.com/rusefi/rusefi_documentation/raw/master/OEM-Docs/Honda/2003-acura-rsx-type-R.pdf)
# 2005
![x](OEM-Docs/Honda/2005-rsx-s-1.png)
![x](OEM-Docs/Honda/2005-rsx-s-2.png)
@ -17,5 +17,3 @@
![x](OEM-Docs/Honda/2005-rsx-s-5.png)
![x](OEM-Docs/Honda/2005-rsx-s-6.png)

View File

@ -9,4 +9,3 @@
![x](OEM-Docs/Honda/2005-tsx-3.png)
![x](OEM-Docs/Honda/2005-tsx-4.png)

View File

@ -3,27 +3,25 @@
[ArsTechnica: DSC Sports active shocks in action](https://arstechnica.com/cars/2015/07/the-future-of-car-suspension-is-here-dsc-sports-active-shocks-in-action/)
"Normally, a car's weight transfers from front to back as it brakes and accelerates, and from side to side as it corners. As the force on each corner changes, so does the grip available to that wheel; less weight equals less grip. Active shocks control this by varying the degree to which each spring's compresses and extends (as the springs are passive, these systems are sometimes known as semi-active)."
[Active Suspension - Wikipedia]](http://en.wikipedia.org/wiki/Active_suspension)
[Active Suspension - Wikipedia]](<http://en.wikipedia.org/wiki/Active_suspension>)
[Active Suspension banned](http://www.f1fanatic.co.uk/2007/05/17/banned-active-suspension/)
[Northstar Engine Series - Wikipedia]](http://en.wikipedia.org/wiki/Northstar_engine_series)
[Northstar Engine Series - Wikipedia]](<http://en.wikipedia.org/wiki/Northstar_engine_series>)
Road Sensing Suspension
RSS
CV-RSS continuously-variable CV-RSS
[Magneride Applications - Wikipedia]](https://en.wikipedia.org/wiki/MagneRide#Applications)
[Magneride Applications - Wikipedia]](<https://en.wikipedia.org/wiki/MagneRide#Applications>)
[Toyota Active Control Suspension - Wikipedia]](https://en.wikipedia.org/wiki/Toyota_Active_Control_Suspension)
[Toyota Active Control Suspension - Wikipedia]](<https://en.wikipedia.org/wiki/Toyota_Active_Control_Suspension>)
"yaw velocity sensors, vertical G sensors, height sensors, wheel speed sensors, longitudinal and lateral G sensors) that detected cornering, acceleration and braking forces"
Mercedes-Benz hydraulic fully active suspension: [Active Body Control - Wikipedia]](https://en.wikipedia.org/wiki/Active_Body_Control)
Mercedes-Benz hydraulic fully active suspension: [Active Body Control - Wikipedia]](<https://en.wikipedia.org/wiki/Active_Body_Control>)
W220: "Prior to September 2002, only higher end models" S600 2003 "ABC system which combined an hydraulic system and springs"
Furthermore, at highway speeds the suspension computer automatically engages sport mode (Airmatic - Sport mode 1 or 2 depending on the current speed), thus aiding safety by significantly reducing body roll in sharp turns.
[broken link](http://www.drifting.com/forums/tech-discussion-forum/6741-suspension-101-stiffer-is-better-text-by-tanabe-u-s-a.html)
[Article tells how CVRSS works](http://www.cadillacforums.com/forums/suspension-brakes-tires/175670-article-tells-how-cvrss-works.html)
@ -41,7 +39,7 @@ Used hardware:
[Fe1 suspension system,soft ride soft ride susp](http://www.cadillacforums.com/forums/cadillac-seville-cadillac-eldorado-forum/212531-fe1-suspension-system-soft-ride-soft.html)
"2000 Seville STS - 98 to 2004 F45 is CVRSS"
gm 22784742
gm 22784742
"it has rotory sensors on the frame that connect to each lower suspension a arm. these give the rate of bump and rebound, and Rate of travel"
@ -53,7 +51,6 @@ yaw sensor
[How Magnets Make The Camaro ZL1 Dance Around A Race Track - Jalopnik](http://jalopnik.com/5932764/how-magnets-make-the-camaro-zl1-dance-around-a-race-track)
[Car that can 'jump' potholes - Video](https://www.youtube.com/watch?v=DS9LjHSTofw)
shock connector adapter GM 19180262 [https://www.cadillacforums.com/forums/cadillac-escalade-ext-esv-forum-2007/1067118-how-delete-z95-front-rear-mrc.html](https://www.cadillacforums.com/forums/cadillac-escalade-ext-esv-forum-2007/1067118-how-delete-z95-front-rear-mrc.html)

View File

@ -1,26 +1,25 @@
# AlphaN fueling
AlphaN is a method of fueling that uses the angle of the TPS (Alpha) and the RPM of the engine (N) to determine how much fuel should be injected.
AlphaN is a method of fueling that uses the angle of the TPS (Alpha) and the RPM of the engine (N) to determine how much fuel should be injected.
It is a very simple method that simply uses the Alpha as the Y axis and N as the X axis of the fuel table.
It is a very simple method that simply uses the Alpha as the Y axis and N as the X axis of the fuel table.
This method is most commonly used on pure race cars that are willing to sacrifice an amount of drivability for simplicity, or on installations where there is a great difficulty reading for a MAP or MAF sensor.
An example of this would be ITBs.
This method is most commonly used on pure race cars that are willing to sacrifice an amount of drivability for simplicity, or on installations where there is a great difficulty reading for a MAP or MAF sensor.
An example of this would be ITBs.
It is not suggested that this method is used with rusEFI as we have implemented very good windowing and smoothing of MAP sensor signals, which allows for the speed density method to be used reliably on systems where it would not traditionally function well.
However we are aware that there are many users that would still prefer to use this method so it has been provided.
However we are aware that there are many users that would still prefer to use this method so it has been provided.
# The detail
# The detail
fuel_squirt_duration = injector_lag_curve_lookup(V_BATT) + warm_up_curve_lookup(COOLANT_TEMPERATURE) * intake_air_correction_curve_lookup(INTAKE_AIR_TEMP) * fuel_table_lookup(RPM, TPS)
fuel_squirt_duration = injector_lag_curve_lookup(V_BATT) + warm_up_curve_lookup(COOLANT_TEMPERATURE) *intake_air_correction_curve_lookup(INTAKE_AIR_TEMP)* fuel_table_lookup(RPM, TPS)
Where TPS is the reading at the start of engine cycle
# How to tune
# How to tune
The AlphaN system in rusEFI can be tuned in the same way as all other standalone ECUs, it is simply a case of inputting the required fuel values in the main fuel table.
The AlphaN system in rusEFI can be tuned in the same way as all other standalone ECUs, it is simply a case of inputting the required fuel values in the main fuel table.
It is planned that a future update will modify this table to be a VE table in a similar way to several other aftermarket systems. This will be done for simplicity of use.
It is planned that a future update will modify this table to be a VE table in a similar way to several other aftermarket systems. This will be done for simplicity of use.
[//]: # "OrchardPerformance"
[//]: # "OrchardPerformance"

View File

@ -4,12 +4,10 @@
[Snapshot firmware bundle](https://rusefi.com/build_server/rusefi_bundle_alphax-2chan.zip)
[Pinout](https://rusefi.com/docs/pinouts/hellen/alphax-2chan/)
[iBom rev C](https://rusefi.com/docs/ibom/alphax_2ch-c-ibom.html)
[iBom rev B](https://rusefi.com/docs/ibom/alphax_2ch-b-ibom.html)
[Issue tracker & hardware files](https://github.com/rusefi/alphax-2chan)
@ -22,33 +20,36 @@ On-board MPXH6400A
[See also AlphaX-4chan](AlphaX-4chan)
## Q: how many injectors per channel?
A: VND14NV04TR-E 93mJ 18A. In terms of current and switching energy those could handle _many_ injectors per channel, maybe a dozen?
## Changelog
rev E:
December 2022
- migrated to Hellen MegaModule 0.1
- migrated to Hellen MegaModule 0.1
rev D:
September 2022
- crank/cam test pads https://github.com/rusefi/alphax-2chan/issues/63
- TSOP-10 TLS115 https://github.com/rusefi/alphax-2chan/issues/64
- crank/cam test pads <https://github.com/rusefi/alphax-2chan/issues/63>
- TSOP-10 TLS115 <https://github.com/rusefi/alphax-2chan/issues/64>
rev C:
- pull-down fixed https://github.com/rusefi/alphax-2chan/issues/40
- affected by BOM issue p-channel mosfet https://github.com/rusefi/alphax-2chan/issues/53
- pull-down fixed <https://github.com/rusefi/alphax-2chan/issues/40>
- affected by BOM issue p-channel mosfet <https://github.com/rusefi/alphax-2chan/issues/53>
rev B:
- affected by BOM issue p-channel mosfet https://github.com/rusefi/alphax-2chan/issues/53
* BT fixed
- affected by BOM issue p-channel mosfet <https://github.com/rusefi/alphax-2chan/issues/53>
- BT fixed
``
bluetooth_jdy 115200 alphax 1234
``
rev A:
- affected by BOM issue p-channel mosfet https://github.com/rusefi/alphax-2chan/issues/53
- affected by BOM issue p-channel mosfet <https://github.com/rusefi/alphax-2chan/issues/53>

View File

@ -10,12 +10,12 @@
[iBom rev D](https://rusefi.com/docs/ibom/alphax_4ch-d-ibom.html)
[iBom rev C](https://rusefi.com/docs/ibom/alphax_4ch-c-ibom.html)
[iBom rev B](https://rusefi.com/docs/ibom/alphax_4ch-b-ibom.html)
[iBom rev A](https://rusefi.com/docs/ibom/alphax_4ch-a-ibom.html)
[iBom rev A](https://rusefi.com/docs/ibom/alphax_4ch-a-ibom.html)
[Issue tracker & hardware files](https://github.com/rusefi/alphax-4chan)
* 4 injector channels
* 4 logic level coil control
* 4 logic level coil control
* 5 auxiliary low side outputs up to 5A
* 2 VR inputs
* 3 Hall inputs
@ -24,25 +24,27 @@
* one channel knock input
* Bluetooth
![x](https://rusefi.com/forum/download/file.php?id=9345)
## Changelog
rev D:
- SD card added
* SD card added
rev C:
- improved PCB shape
- better thermal and overall simpler to solder
- https://github.com/rusefi/alphax-4chan/issues?q=is%3Aissue+label%3AREV-C
* improved PCB shape
* better thermal and overall simpler to solder
* <https://github.com/rusefi/alphax-4chan/issues?q=is%3Aissue+label%3AREV-C>
rev B:
- one channel knock input added
- gerber defect under C461 https://github.com/rusefi/alphax-4chan/issues/20
- BOM issue p-channel mosfet https://github.com/rusefi/alphax-4chan/issues/19
* one channel knock input added
* gerber defect under C461 <https://github.com/rusefi/alphax-4chan/issues/20>
* BOM issue p-channel mosfet <https://github.com/rusefi/alphax-4chan/issues/19>
rev A:
- it works! https://youtu.be/egtDQsMDQqs
- BOM issue p-channel mosfet https://github.com/rusefi/alphax-4chan/issues/19
* it works! <https://youtu.be/egtDQsMDQqs>
* BOM issue p-channel mosfet <https://github.com/rusefi/alphax-4chan/issues/19>

View File

@ -2,9 +2,6 @@
[Issue tracker & hardware files](https://github.com/rusefi/alphax-8chan)
* 8 HighZ injector channels
* 8 logic level coil control
* 4 H-bridges
@ -14,14 +11,11 @@
* Dual on-board WBO controller
* Bluetooth
## Parts
| | TE |
|---|---|
|A Wire | [4-1437290-0](https://www.te.com/usa-en/product-4-1437290-0.html) |
|B Wire | [3-1437290-7](https://www.te.com/usa-en/product-3-1437290-7.html) |
|C Wire |[4-1437290-1](https://www.te.com/usa-en/product-4-1437290-1.html) |
|D Wire | [3-1437290-8](https://www.te.com/usa-en/product-3-1437290-8.html) |
|A Wire | [4-1437290-0](https://www.te.com/usa-en/product-4-1437290-0.html) |
|B Wire | [3-1437290-7](https://www.te.com/usa-en/product-3-1437290-7.html) |
|C Wire |[4-1437290-1](https://www.te.com/usa-en/product-4-1437290-1.html) |
|D Wire | [3-1437290-8](https://www.te.com/usa-en/product-3-1437290-8.html) |

View File

@ -1,4 +1,4 @@
Based on
Based on
nb2-happy-warmup-idle.csv
@ -6,4 +6,4 @@ nb2-idle-without-injector-2.csv
nb2-suspected-bad-sparkplug-1.csv
nb2-sparkplug-1-completely-removed-zero-compression-in-1.csv
nb2-sparkplug-1-completely-removed-zero-compression-in-1.csv

View File

@ -1 +1 @@
Hello [https://github.com/mck1117/atlas](https://github.com/mck1117/atlas)
Hello [https://github.com/mck1117/atlas](https://github.com/mck1117/atlas)

View File

@ -22,42 +22,42 @@ MOTOR_7 = 0x588
fakeTorque = 0
function xorChecksum(data, targetIndex)
local index = 1
local result = 0
while data[index] ~= nil do
if index ~= targetIndex then
result = result ~ data[index]
end
index = index + 1
end
data[targetIndex] = result
return result
local index = 1
local result = 0
while data[index] ~= nil do
if index ~= targetIndex then
result = result ~ data[index]
end
index = index + 1
end
data[targetIndex] = result
return result
end
function setBitRange(data, totalBitIndex, bitWidth, value)
local byteIndex = totalBitIndex >> 3
local bitInByteIndex = totalBitIndex - byteIndex * 8
if (bitInByteIndex + bitWidth > 8) then
bitsToHandleNow = 8 - bitInByteIndex
setBitRange(data, totalBitIndex + bitsToHandleNow, bitWidth - bitsToHandleNow, value >> bitsToHandleNow)
bitWidth = bitsToHandleNow
end
mask = (1 << bitWidth) - 1
data[1 + byteIndex] = data[1 + byteIndex] & (~(mask << bitInByteIndex))
maskedValue = value & mask
shiftedValue = maskedValue << bitInByteIndex
data[1 + byteIndex] = data[1 + byteIndex] | shiftedValue
local byteIndex = totalBitIndex >> 3
local bitInByteIndex = totalBitIndex - byteIndex * 8
if (bitInByteIndex + bitWidth > 8) then
bitsToHandleNow = 8 - bitInByteIndex
setBitRange(data, totalBitIndex + bitsToHandleNow, bitWidth - bitsToHandleNow, value >> bitsToHandleNow)
bitWidth = bitsToHandleNow
end
mask = (1 << bitWidth) - 1
data[1 + byteIndex] = data[1 + byteIndex] & (~(mask << bitInByteIndex))
maskedValue = value & mask
shiftedValue = maskedValue << bitInByteIndex
data[1 + byteIndex] = data[1 + byteIndex] | shiftedValue
end
function getBitRange(data, bitIndex, bitWidth)
byteIndex = bitIndex >> 3
shift = bitIndex - byteIndex * 8
value = data[1 + byteIndex]
if (shift + bitWidth > 8) then
value = value + data[2 + byteIndex] * 256
end
mask = (1 << bitWidth) - 1
return (value >> shift) & mask
byteIndex = bitIndex >> 3
shift = bitIndex - byteIndex * 8
value = data[1 + byteIndex]
if (shift + bitWidth > 8) then
value = value + data[2 + byteIndex] * 256
end
mask = (1 << bitWidth) - 1
return (value >> shift) & mask
end
-- sometimes we want to cut a CAN bus and install rusEFI into that cut
@ -71,35 +71,35 @@ ECU_BUS = 1
TCU_BUS = 2
function setTwoBytes(data, offset, value)
value = math.floor(value)
data[offset + 2] = value >> 8
data[offset + 1] = value & 0xff
value = math.floor(value)
data[offset + 2] = value >> 8
data[offset + 1] = value & 0xff
end
hexstr = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F" }
function toHexString(num)
if num == 0 then
return '0'
end
if num == 0 then
return '0'
end
local result = ""
while num > 0 do
local n = num % 16
result = hexstr[n + 1] ..result
num = math.floor(num / 16)
end
return result
local result = ""
while num > 0 do
local n = num % 16
result = hexstr[n + 1] ..result
num = math.floor(num / 16)
end
return result
end
function arrayToString(arr)
local str = ""
local index = 1
while arr[index] ~= nil do
str = str.." "..toHexString(arr[index])
index = index + 1
end
return str
local str = ""
local index = 1
while arr[index] ~= nil do
str = str.." "..toHexString(arr[index])
index = index + 1
end
return str
end
totalEcuMessages = 0
@ -119,50 +119,50 @@ motor7Data = { 0x1A, 0x66, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00 }
function onMotor1(bus, id, dlc, data)
totalEcuMessages = totalEcuMessages + 1
rpm = getBitRange(data, 16, 16) * 0.25
tps = getBitRange(data, 40, 8) * 0.4
rpm = getBitRange(data, 16, 16) * 0.25
tps = getBitRange(data, 40, 8) * 0.4
fakeTorque = interpolate(0, 6, 100, 60, tps)
fakeTorque = interpolate(0, 6, 100, 60, tps)
-- engineTorque = getBitRange(data, 8, 8) * 0.39
-- innerTorqWithoutExt = getBitRange(data, 32, 8) * 0.4
-- torqueLoss = getBitRange(data, 48, 8) * 0.39
-- requestedTorque = getBitRange(data, 56, 8) * 0.39
-- engineTorque = getBitRange(data, 8, 8) * 0.39
-- innerTorqWithoutExt = getBitRange(data, 32, 8) * 0.4
-- torqueLoss = getBitRange(data, 48, 8) * 0.39
-- requestedTorque = getBitRange(data, 56, 8) * 0.39
engineTorque = fakeTorque * 0.9
innerTorqWithoutExt = fakeTorque
torqueLoss = 20
requestedTorque = fakeTorque
engineTorque = fakeTorque * 0.9
innerTorqWithoutExt = fakeTorque
torqueLoss = 20
requestedTorque = fakeTorque
motor1Data[2] = engineTorque / 0.39
setTwoBytes(motor1Data, 2, rpm / 0.25)
motor1Data[5] = innerTorqWithoutExt / 0.4
motor1Data[6] = tps / 0.4
motor1Data[7] = torqueLoss / 0.39
motor1Data[8] = requestedTorque / 0.39
motor1Data[2] = engineTorque / 0.39
setTwoBytes(motor1Data, 2, rpm / 0.25)
motor1Data[5] = innerTorqWithoutExt / 0.4
motor1Data[6] = tps / 0.4
motor1Data[7] = torqueLoss / 0.39
motor1Data[8] = requestedTorque / 0.39
-- print ('MOTOR_1 fakeTorque ' ..fakeTorque)
-- print ('MOTOR_1 engineTorque ' ..engineTorque ..' RPM ' ..rpm)
-- print ('MOTOR_1 innerTorqWithoutExt ' ..innerTorqWithoutExt ..' tps ' ..tps)
-- print ('MOTOR_1 fakeTorque ' ..fakeTorque)
-- print ('MOTOR_1 engineTorque ' ..engineTorque ..' RPM ' ..rpm)
-- print ('MOTOR_1 innerTorqWithoutExt ' ..innerTorqWithoutExt ..' tps ' ..tps)
-- print ('MOTOR_1 torqueLoss ' ..torqueLoss ..' requestedTorque ' ..requestedTorque)
-- print ('MOTOR_1 torqueLoss ' ..torqueLoss ..' requestedTorque ' ..requestedTorque)
txCan(TCU_BUS, id, 0, motor1Data)
txCan(TCU_BUS, id, 0, motor1Data)
end
motorBreCounter = 0
function onMotorBre(bus, id, dlc, data)
motorBreCounter = (motorBreCounter + 1) % 16
motorBreCounter = (motorBreCounter + 1) % 16
setBitRange(motorBreData, 8, 4, motorBreCounter)
xorChecksum(motorBreData, 1)
txCan(TCU_BUS, id, 0, motorBreData)
txCan(TCU_BUS, id, 0, motorBreData)
end
motor2counter = 0
function onMotor2(bus, id, dlc, data)
motor2counter = (motor2counter + 1) % 16
motor2counter = (motor2counter + 1) % 16
minTorque = fakeTorque / 2
motor2Data[7] = math.floor(minTorque / 0.39)
@ -175,86 +175,86 @@ function onMotor2(bus, id, dlc, data)
index = math.floor(motor2counter / 4)
motor2Data[1] = motor2mux[1 + index]
-- txCan(TCU_BUS, id, 0, data)
txCan(TCU_BUS, id, 0, motor2Data)
-- txCan(TCU_BUS, id, 0, data)
txCan(TCU_BUS, id, 0, motor2Data)
end
function onMotor3(bus, id, dlc, data)
totalEcuMessages = totalEcuMessages + 1
iat = getBitRange(data, 8, 8) * 0.75 - 48
pps = getBitRange(data, 16, 8) * 0.40
tps = getBitRange(data, 56, 8) * 0.40
-- print ('MOTOR_1 pps ' ..pps ..' tps ' ..tps ..' iat ' ..iat)
iat = getBitRange(data, 8, 8) * 0.75 - 48
pps = getBitRange(data, 16, 8) * 0.40
tps = getBitRange(data, 56, 8) * 0.40
-- print ('MOTOR_1 pps ' ..pps ..' tps ' ..tps ..' iat ' ..iat)
desired_wheel_torque = fakeTorque
canMotor3[2] = (iat + 48) / 0.75
canMotor3[3] = tps / 0.4
canMotor3[5] = 0x20
setBitRange(canMotor3, 24, 12, math.floor(desired_wheel_torque / 0.39))
canMotor3[8] = tps / 0.4
txCan(TCU_BUS, id, 0, canMotor3)
desired_wheel_torque = fakeTorque
canMotor3[2] = (iat + 48) / 0.75
canMotor3[3] = tps / 0.4
canMotor3[5] = 0x20
setBitRange(canMotor3, 24, 12, math.floor(desired_wheel_torque / 0.39))
canMotor3[8] = tps / 0.4
txCan(TCU_BUS, id, 0, canMotor3)
end
motor5FuelCounter = 0
function onMotor5(bus, id, dlc, data)
setBitRange(motor5Data, 5, 9, motor5FuelCounter)
xorChecksum(motor5Data, 8)
txCan(TCU_BUS, id, 0, motor5Data)
setBitRange(motor5Data, 5, 9, motor5FuelCounter)
xorChecksum(motor5Data, 8)
txCan(TCU_BUS, id, 0, motor5Data)
end
counter16 = 0
function onMotor6(bus, id, dlc, data)
counter16 = (counter16 + 1) % 16
counter16 = (counter16 + 1) % 16
-- engineTorque = getBitRange(data, 8, 8) * 0.39
-- actualTorque = getBitRange(data, 16, 8) * 0.39
-- feedbackGearbox = getBitRange(data, 40, 8) * 0.39
engineTorque = fakeTorque * 0.9
actualTorque = fakeTorque
feedbackGearbox = 255
-- engineTorque = getBitRange(data, 8, 8) * 0.39
-- actualTorque = getBitRange(data, 16, 8) * 0.39
-- feedbackGearbox = getBitRange(data, 40, 8) * 0.39
engineTorque = fakeTorque * 0.9
actualTorque = fakeTorque
feedbackGearbox = 255
motor6Data[2] = math.floor(engineTorque / 0.39)
motor6Data[3] = math.floor(actualTorque / 0.39)
motor6Data[6] = math.floor(feedbackGearbox / 0.39)
setBitRange(motor6Data, 60, 4, counter16)
motor6Data[2] = math.floor(engineTorque / 0.39)
motor6Data[3] = math.floor(actualTorque / 0.39)
motor6Data[6] = math.floor(feedbackGearbox / 0.39)
setBitRange(motor6Data, 60, 4, counter16)
xorChecksum(motor6Data, 1)
txCan(TCU_BUS, id, 0, motor6Data)
xorChecksum(motor6Data, 1)
txCan(TCU_BUS, id, 0, motor6Data)
end
accGraCounter = 0
function onAccGra(bus, id, dlc, data)
accGraCounter = (accGraCounter + 1) % 16
setBitRange(accGraData, 60, 4, accGraCounter)
accGraCounter = (accGraCounter + 1) % 16
setBitRange(accGraData, 60, 4, accGraCounter)
xorChecksum(accGraData, 1)
txCan(TCU_BUS, id, 0, accGraData)
-- txCan(TCU_BUS, id, 0, data)
txCan(TCU_BUS, id, 0, accGraData)
-- txCan(TCU_BUS, id, 0, data)
end
canMotorInfoCounter = 0
function onMotorInfo(bus, id, dlc, data)
canMotorInfoCounter = (canMotorInfoCounter + 1) % 16
canMotorInfo[1] = 0x80 + (canMotorInfoCounter)
canMotorInfo1[1] = 0x80 + (canMotorInfoCounter)
canMotorInfo3[1] = 0x80 + (canMotorInfoCounter)
mod4 = canMotorInfoCounter % 4
if (mod4 == 0 or mod4 == 2) then
-- txCan(1, MOTOR_INFO, 0, canMotorInfo)
txCan(TCU_BUS, id, 0, data)
elseif (mod4 == 1) then
txCan(1, MOTOR_INFO, 0, canMotorInfo1)
else
txCan(1, MOTOR_INFO, 0, canMotorInfo3)
canMotorInfoCounter = (canMotorInfoCounter + 1) % 16
canMotorInfo[1] = 0x80 + (canMotorInfoCounter)
canMotorInfo1[1] = 0x80 + (canMotorInfoCounter)
canMotorInfo3[1] = 0x80 + (canMotorInfoCounter)
mod4 = canMotorInfoCounter % 4
if (mod4 == 0 or mod4 == 2) then
-- txCan(1, MOTOR_INFO, 0, canMotorInfo)
txCan(TCU_BUS, id, 0, data)
elseif (mod4 == 1) then
txCan(1, MOTOR_INFO, 0, canMotorInfo1)
else
txCan(1, MOTOR_INFO, 0, canMotorInfo3)
end
end
function onMotor7(bus, id, dlc, data)
txCan(TCU_BUS, id, 0, motor7Data)
-- txCan(TCU_BUS, id, 0, data)
txCan(TCU_BUS, id, 0, motor7Data)
-- txCan(TCU_BUS, id, 0, data)
end
canRxAdd(ECU_BUS, MOTOR_1, onMotor1)
@ -275,15 +275,15 @@ mafCalibrationIndex = findCurveIndex("mafcurve")
function onTick()
freqValue = getSensor("AuxSpeed1") or 0
mafValue = curve(mafCalibrationIndex, 5)
-- print(freqValue .. " mafValue=" .. mafValue)
mafSensor : set(mafValue)
mafValue = curve(mafCalibrationIndex, 5)
-- print(freqValue .. " mafValue=" .. mafValue)
mafSensor : set(mafValue)
if everySecondTimer : getElapsedSeconds() > 1 then
everySecondTimer : reset()
print("Total from ECU " ..totalEcuMessages)
motor5FuelCounter = motor5FuelCounter + 20
end
if everySecondTimer : getElapsedSeconds() > 1 then
everySecondTimer : reset()
print("Total from ECU " ..totalEcuMessages)
motor5FuelCounter = motor5FuelCounter + 20
end
end

View File

@ -26,7 +26,7 @@ x2 HDEV fuel injection module 7506280 [121 pin connector](OEM-connectors#121)
![p](OEM-Docs/Bmw/2003_7_Series_e65/2003_N73_engine_10.png)
![connector](OEM-Docs/TE/Connector_121_pinout.jpg)
# HDEV
# HDEV
Injector #1 + #118
@ -37,11 +37,11 @@ These pins are pulled-up to +12v - low-side driven control.
GND #1 #2
Power +12v: #4 #51
Power +12v: #4 #51
The larger chip inside 7506280 says 30429, obviously google knows nothing about this 30429. But it's probably CJ830.
SAK-C505
SAK-C505
[wikipedia](https://en.wikipedia.org/wiki/BMW_7_Series_(E65))
@ -50,19 +50,19 @@ R=2.1OHm
Ignition COP 12138657273 is shared with a lot of other BMW and Mini models.
CAS 61326943828 51210030982
CAS 61356972681
CAS 61356972681
CAS 61326922329
Programming keywords:
ISTA ICON
# Starting
![x](OEM-Docs/Bmw/2003_7_Series_e65/2004-760-starting.png)
# Data Lines
![x](OEM-Docs/Bmw/2003_7_Series_e65/2004-760-obd.png)
![x](OEM-Docs/Bmw/2003_7_Series_e65/2004-760-data-buses-1.png)
@ -70,7 +70,7 @@ ISTA ICON
![x](OEM-Docs/Bmw/2003_7_Series_e65/2004-760-data-buses-3.png)
# Anti Theft
![x](OEM-Docs/Bmw/2003_7_Series_e65/2004-760-anti-theft-1.png)
![x](OEM-Docs/Bmw/2003_7_Series_e65/2004-760-anti-theft-1.png)
![x](OEM-Docs/Bmw/2003_7_Series_e65/2004-760-anti-theft-1.png)
![x](OEM-Docs/Bmw/2003_7_Series_e65/2004-760-anti-theft-1.png)
![x](OEM-Docs/Bmw/2003_7_Series_e65/2004-760-anti-theft-1.png)
![x](OEM-Docs/Bmw/2003_7_Series_e65/2004-760-anti-theft-1.png)

View File

@ -1,15 +1,19 @@
# BMW-S1000RR
## Intro
The [BMW S1000RR Motorcycle](https://en.wikipedia.org/wiki/BMW_S1000RR#:~:text=BMW%20S1000RR%20is%20a%20race,engine%20redlined%20at%2014%2C200%20rpm.) was originally released in 2009. It is a 999cc four cylinder engine making 180-200hp depending on the model year. There have been a few changes over the years, but the general architecture remains the same.
## Overview
Model years vary in their engine configuration somewhat:
* 2009-2014 models used virtually the same engine, sensors, etc.
* 2015-2018 had some minor engine updates, put out a little more power.
* 2019 had entirely new engine that is more compact and has dual camshaft profiles that can be switched (similar to Honda VTEC).
2009-2018 Engine Configuration
* 999cc four cylinder engine with 4 valves per cylinder
* 4x individual smart coil on plug ignition
* 8x injectors with one set at the ports, one set in the airbox firing into the trumpets
@ -28,4 +32,3 @@ Model years vary in their engine configuration somewhat:
### Ignition Coils
### Quickshift Sensor

View File

@ -1,4 +1,4 @@
#94 525
# 94 525
![x](OEM-Docs/Bmw/1994_e34/94_525_1.png)
@ -17,5 +17,3 @@
![x](OEM-Docs/Bmw/1994_e34/94_540_late_2.png)
![x](OEM-Docs/Bmw/1994_e34/94_540_late_3.png)

View File

@ -1,5 +1,5 @@
#94 325
# 94 325
![x](OEM-Docs/Bmw/1994_e36/94_325_1.png)
![x](OEM-Docs/Bmw/1994_e36/94_325_2.png)
![x](OEM-Docs/Bmw/1994_e36/94_325_2.png)

View File

@ -8,5 +8,3 @@
![x](OEM-Docs/Bmw/1996_750_e38/1996_bmw_750_page4.png)
![x](OEM-Docs/Bmw/1996_750_e38/1996_bmw_750_page5.png)

View File

@ -27,13 +27,12 @@ ECU#5
![ecu5](OEM-Docs/Bmw/1998_750_e38/1998_bmw_750_ecu_page5.png)
# EML
![x](OEM-Docs/Bmw/1998_750_e38/1998_bmw_750_etb_page1.png)
![x](OEM-Docs/Bmw/1998_750_e38/1998_bmw_750_etb_page1.png)
![x](OEM-Docs/Bmw/1998_750_e38/1998_bmw_750_etb_page2.png)
# TCU
# TCU
![x](OEM-Docs/Bmw/7_Series_e38/1998-750-tcu-1.png)
@ -45,13 +44,10 @@ Shift Interlock
Charging
![x](OEM-Docs/Bmw/1998_750_e38/bmw_e38_charging.png)
Starter
![x](OEM-Docs/Bmw/1998_750_e38/bmw_e38_starter_wiring.png)
Washer
![x](OEM-Docs/Bmw/1998_750_e38/bmw_e38_wiper_washer.png)
[Vin Registry](http://www.e38registry.org/e38-production-numbers/)

View File

@ -3,5 +3,3 @@
* 61.35-8 378 631 "General Body Control"
* 1 095 326 Acceleration Sensor Module: interesting, is this analog output or CAN?!
* 0130002830 little cooling blower: only three wires? Is this engine control unit cooling system?!

View File

@ -1,4 +1,4 @@
[BMW 7 Series (E38) - Wikipedia]](https://en.wikipedia.org/wiki/BMW_7_Series_(E38))
[BMW 7 Series (E38) - Wikipedia]](<https://en.wikipedia.org/wiki/BMW_7_Series_(E38>))
# 2000 740
@ -8,18 +8,16 @@
![x](OEM-Docs/Bmw/7_Series_e38/2000_bmw_740_3.png)
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| 4 | BRN | GND Ground |
| 5 | BRN | GND Ground |
| 6 | BRN | GND Ground |
| 7 | RED | +12v Hot all times |
| 8 | RED/BLU | +12v Hot all times |
| 7 | RED | +12v Hot all times |
| 8 | RED/BLU | +12v Hot all times |
| | | |
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| 1 | BRN/YEL | |
| 2 | BRN/GRN | |

View File

@ -1,6 +1,5 @@
[BMW 5 Series (E39) - Wikipedia]](https://en.wikipedia.org/wiki/BMW_5_Series_(E39))
[BMW 5 Series (E39) - Wikipedia]](<https://en.wikipedia.org/wiki/BMW_5_Series_(E39>))
# 1999 528
@ -10,30 +9,26 @@
![x](OEM-Docs/Bmw/e39/1999_bmw_528_3.png)
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| 1 | GRN | Relay |
| 4 | BRN | GND Ground |
| 5 | BRN | GND Ground |
| 6 | BRN | GND Ground |
| 7 | RED | +12v Hot all times |
| 8 | RED/BLU | +12v Hot all times |
| 7 | RED | +12v Hot all times |
| 8 | RED/BLU | +12v Hot all times |
| | | |
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| 1 | YEL | |
| 2 | YEL | |
| | | |
| | | |
# 2001 540
[BMW M62 - Wikipedia]](https://en.wikipedia.org/wiki/BMW_M62)
[BMW M62 - Wikipedia]](<https://en.wikipedia.org/wiki/BMW_M62>)
![x](OEM-Docs/Bmw/e39/2001_540_1.png)
@ -43,19 +38,16 @@
![x](OEM-Docs/Bmw/e39/2001_540_4.png)
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| 4 | BRN | GND Ground |
| 5 | BRN | GND Ground |
| 6 | BRN | GND Ground |
| 7 | RED | +12v Hot all times |
| 8 | RED/BLU | +12v Hot all times |
| 7 | RED | +12v Hot all times |
| 8 | RED/BLU | +12v Hot all times |
| | | |
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| 5 | BRN | GND Ground |
| | | |

View File

@ -11,6 +11,7 @@
![x](OEM-Docs/Bmw/3_Series_e46/2002_bmw_325_3.png)
# M3
## 2002 M3
![x](OEM-Docs/Bmw/3_Series_e46/2002_bmw_m3_ecu.png)
@ -37,16 +38,13 @@
![x](OEM-Docs/Bmw/3_Series_e46/2004_330ci-ecu-3.png)
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| 5 | BRN | GND Ground |
| 6 | BRN | GND Ground |
| 7 | RED | +12v Hot all times |
| 7 | RED | +12v Hot all times |
| | | |
# Trunk
![x](OEM-Docs/Bmw/2000_3_Series_e46/e46_trunk.png)
@ -56,4 +54,3 @@
![PCB front](OEM-Docs/Bmw/2000_3_Series_e46/2000_e46_oem_ecu_pcb_top.jpg)
![PCB back](OEM-Docs/Bmw/2000_3_Series_e46/2000_e46_oem_ecu_pcb_back.jpg)

View File

@ -10,7 +10,6 @@
![x](OEM-Docs/Bmw/e53/2001_x5_3.0_4.png)
# 2001 x5 4.4
![x](OEM-Docs/Bmw/e53/2001_x5_4.4_1.png)
@ -20,4 +19,3 @@
![x](OEM-Docs/Bmw/e53/2001_x5_4.4_3.png)
![x](OEM-Docs/Bmw/e53/2001_x5_4.4_4.png)

View File

@ -12,18 +12,16 @@ Production 2001 2008
![p](OEM-Docs/Bmw/7_Series_e65/2006_bmw_750_5.png)
![p](OEM-Docs/Bmw/7_Series_e65/2006_bmw_750_6.png)
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| 3 | GRY | TCU |
| 4 | BRN | GND Ground |
| 6 | BRN | GND Ground |
| 7 | RED | +12v Hot all times |
| 8 | ORG | +12v Hot all times |
| 7 | RED | +12v Hot all times |
| 8 | ORG | +12v Hot all times |
| | | |
| Connector/ Pin Number | OEM Color | Name / Function |
| Connector/ Pin Number | OEM Color | Name / Function |
| --------------------- |------- |---------------- |
| 2 | YEL | |
| 3 | YEL/RED | |
@ -31,6 +29,7 @@ Production 2001 2008
| | | |
| | | |
| | | |
# 760 12 cylinders
See [BMW-N73](BMW-N73)
@ -39,7 +38,7 @@ See [BMW-N73](BMW-N73)
[Console removal](https://www.youtube.com/watch?v=pGAeodWa_i4)
SRS module controls fuel pump
SRS module controls fuel pump
[broken link](https://lacarpro.com/blogs/dal-works/2002-1-2-bmw-745i-no-start)
[RHD instrument cluster removal](https://www.youtube.com/watch?v=GyVhkNa3010)
@ -52,11 +51,8 @@ SRS module controls fuel pump
[User Manual](OEM-Docs/Bmw/2003_7_Series_e65/2004_Manual_7_Series.pdf)
# Transmission
[6 Speed Transmission mechatronic sleeve replacement](OEM-Docs/Bmw/2003_7_Series_e65/6_speed_sleeve_replacement.pdf)
[ZF6HP26 / 6R60 / 09E Remove Mechatronic Case Connector Sleeve Valve Body](https://www.youtube.com/watch?v=b0vvqtso14k)

View File

@ -1,3 +1,3 @@
"Does this come with a base map?"
We are of the opinion that basemaps are only useful to help you load your project on a trailer in order to get to your tuning shop. In this regard more or less any map would get your project vehicle on the trailer :)
We are of the opinion that basemaps are only useful to help you load your project on a trailer in order to get to your tuning shop. In this regard more or less any map would get your project vehicle on the trailer :)

View File

@ -4,4 +4,4 @@ We use Fused deposition modeling with ABS 4% glass fiber plastic.
Need a box we do not have in stock? Please let me know.
Need a breakout we do not have in stock? Please let me know.
Need a breakout we do not have in stock? Please let me know.

View File

@ -5,47 +5,50 @@ This page is a general guide and general outline of how to use the breakout modu
![Breakout](Images/breakout.png)
## Move a engine control to rusEFI
Uses breakout module noted [here](http://rusefi.com/forum/viewtopic.php?f=4&t=454) This is an example of how you might move the wires, it may not work for you exactly this way, but this at least lays out the general process. For example, some setups connect all fuel channels to one ECU fuel channel. So you might need to do thing differently when trying to move one fuel channel as noted below. Items like that can vary.
Uses breakout module noted [here](http://rusefi.com/forum/viewtopic.php?f=4&t=454) This is an example of how you might move the wires, it may not work for you exactly this way, but this at least lays out the general process. For example, some setups connect all fuel channels to one ECU fuel channel. So you might need to do thing differently when trying to move one fuel channel as noted below. Items like that can vary.
### Capture RPM signal
* Cut OEM harness for the crank angle wire(s), put the leads to the breakout module, use the fuse to simple pass the signal through the breakout module, and verify that the OEM engine is operational.
* Cut OEM harness for the crank angle wire(s), put the leads to the breakout module, use the fuse to simple pass the signal through the breakout module, and verify that the OEM engine is operational.
* Connect rusEFI cam and/or crank to breakout module.
* Install 2nd fuse to connect both OEM control unit and rusEFI. Take note that VR signals may be loaded and may be problematic at low RPM with this approach. Or it may simply work. Give it a try and see what happens. If it doesn't start with both connected, try starting the engine with rusEFI jumper removed, then after started install rusEFI jumper.
* Install 2nd fuse to connect both OEM control unit and rusEFI. Take note that VR signals may be loaded and may be problematic at low RPM with this approach. Or it may simply work. Give it a try and see what happens. If it doesn't start with both connected, try starting the engine with rusEFI jumper removed, then after started install rusEFI jumper.
* Capture crank signals via [dev console](Console.md).
* Either configure rusEFI to use the proper crank decoder, or get a decoder developed from the dev console logs, then configure rusEFI to use the proper decoder.
* Either configure rusEFI to use the proper crank decoder, or get a decoder developed from the dev console logs, then configure rusEFI to use the proper decoder.
* See reliable RPM values displayed on the gauge, and noise free crank signals.
![Harness and Analyzer](Images/Harness_and_analyzer.jpg)
### Capture MAP or MAF signal
* Cut OEM harness for the MAP or MAF wire(s), or install a MAP sensor, then put the leads to the breakout module, use the fuse to simple pass the signal through the breakout module, and verify that the OEM engine is operational.
* Cut OEM harness for the MAP or MAF wire(s), or install a MAP sensor, then put the leads to the breakout module, use the fuse to simple pass the signal through the breakout module, and verify that the OEM engine is operational.
* Connect rusEFI analog signal to breakout module.
* Install 2nd fuse to connect both OEM control unit and rusEFI. Take note that the signal may be loaded and may be problematic with this appraoch. Or it may simply work. Give it a try and see what happens.
* Install 2nd fuse to connect both OEM control unit and rusEFI. Take note that the signal may be loaded and may be problematic with this appraoch. Or it may simply work. Give it a try and see what happens.
* Capture MAF or MAP signals via dev console.
* See reliable MAF or MAP values displayed on the gauge, and noise free signals.
### Move one fuel channel
* Cut OEM harness for one fuel channel and connect it to the breakout module. With OEM connections, verify the breakout module operates as expected on the OEM setup.
* Cut OEM harness for one fuel channel and connect it to the breakout module. With OEM connections, verify the breakout module operates as expected on the OEM setup.
* Connect rusEFI fuel channel to breakout module.
* Remove fuse for OEM fuel channel and put it on rusEFI fuel channel. This can be done with running engine, but keep in mind no fuel means no power on that cyl, it will run a bit rough.
* Connect via tuner studio, and tune your fuel channel until the engine runs smoothly. (You may be able to connect the rusEFI analog signals to the fuel channels and measure that you are generating the same fuel pulse.)
* Continue until you have fuel control for one channel that matches perfectly for the entire RPM, loads, ect.
* Connect via tuner studio, and tune your fuel channel until the engine runs smoothly. (You may be able to connect the rusEFI analog signals to the fuel channels and measure that you are generating the same fuel pulse.)
* Continue until you have fuel control for one channel that matches perfectly for the entire RPM, loads, ect.
### Move one ignition channel
* Cut OEM harness for one ignition channel and connect it to the breakout module. With OEM connections, verify the breakout module operates as expected on the OEM setup. Beware, ignition signals on the primary side of the coil can get in excess of 500V, you need to capture signal level signals, not the primary side of the coil. The coil primary will destroy the discovery. The discovery board needs an igntor to drive the primary side of the coil.
* Cut OEM harness for one ignition channel and connect it to the breakout module. With OEM connections, verify the breakout module operates as expected on the OEM setup. Beware, ignition signals on the primary side of the coil can get in excess of 500V, you need to capture signal level signals, not the primary side of the coil. The coil primary will destroy the discovery. The discovery board needs an igntor to drive the primary side of the coil.
* Connect rusEFI ignition channel to breakout module.
* Remove fuse for OEM fuel channel and put it on rusEFI fuel channel. This should be done when the engine is off. Moving this wire when operational will likely damage the ignition system.
* Connect via tuner studio, and tune your ignition channel until the engine runs smoothly. (You may be able to connect the rusEFI analog signals to the channels and measure that you are generating the same fuel pulse.)
* Continue until you have fuel control for one channel that matches perfectly for the entire RPM, loads, ect.
* Connect via tuner studio, and tune your ignition channel until the engine runs smoothly. (You may be able to connect the rusEFI analog signals to the channels and measure that you are generating the same fuel pulse.)
* Continue until you have fuel control for one channel that matches perfectly for the entire RPM, loads, ect.
### Move all fuel and ignition
* Cut and move fuel channels one at a time moving them to rusEFI via break out module.
* Cut and move ignition channels one at at time moving them to rusEFI via breakout module.
* Remove MAP and crank signals from OEM controller.
* Cut and move ignition channels one at at time moving them to rusEFI via breakout module.
* Remove MAP and crank signals from OEM controller.
### Have a rusEFI party
* Party time as you now have rusEFI, save this OEM tune and feel free to share the tune for other developers and other project to reference.
* Party time as you now have rusEFI, save this OEM tune and feel free to share the tune for other developers and other project to reference.

View File

@ -19,7 +19,7 @@ We have tried to keep Jenkins working in case we need to revert to it.
## Jenkins setup
### Jobs:
### Jobs
1) unit_tests
2) integration_and_primary_bundle
@ -28,46 +28,56 @@ We have tried to keep Jenkins working in case we need to revert to it.
5) git2svn_sync
### Install Cygwin
[Download Cygwin](https://cygwin.com/install.html)
Cygwin packages that need to be installed:
- make
- gcc-core
- mingw64-i686-gcc-core
- mingw64-i686-gcc-g++
- mingw64-x86_64-gcc-core
- mingw64-x86_64-gcc-g++
- python3
- git
- subversion
- doxygen
- zip
- ncftp
- wget
- ccache
- graphviz
* make
* gcc-core
* mingw64-i686-gcc-core
* mingw64-i686-gcc-g++
* mingw64-x86_64-gcc-core
* mingw64-x86_64-gcc-g++
* python3
* git
* subversion
* doxygen
* zip
* ncftp
* wget
* ccache
* graphviz
### Install Java JDK 8
[Download JDK 8](https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html)
### Install Ant:
### Install Ant
[Download Ant](https://ant.apache.org/)
### Install Jenkins
[Download Jenkins](https://jenkins.io/download/)
### Install Kicad
[Download Kicad](https://www.kicad.org/download/)
for iBom automation
### Install for Hardware Testing
#### ST Link Utility
[STM32 ST-Link Utility](http://www.st.com/st-web-ui/static/active/en/st_prod_software_internet/resource/technical/software/utility/stsw-link004.zip)
#### ST Virtual Serial Driver
[STM32 Virtual COM Port Driver](http://www.st.com/web/en/catalog/tools/PF257938)
### System Environment Variables:
### System Environment Variables
|Variable|Example|
|--|--|
|CCACHE_DIR|C:\ccache |
@ -79,7 +89,8 @@ for iBom automation
|RUSEFI_DOXYGEN_FTP_USER|rusefi_doxygen|
|RUSEFI_DOXYGEN_FTP_PASS|secretpass|
### Add to Path:
### Add to Path
|Tool|Example|
|--|--|
|Java|C:\Program Files (x86)\Common Files\Oracle\Java\javapath|
@ -89,8 +100,10 @@ for iBom automation
|GCC|C:\Program Files (x86)\GNU Arm Embedded Toolchain\9 2020-q2-update\bin|
### Additional Jenkins set-up
#### Additional plugins:
- Pipeline GitHub Notify Step
#### Additional plugins
* Pipeline GitHub Notify Step
[Show current state of Jenkins build on GitHub repo - StackOverflow](https://stackoverflow.com/questions/14274293/show-current-state-of-jenkins-build-on-github-repo)

View File

@ -39,6 +39,7 @@ Hardware is ready!
![CAN hardware attached to Discovery](Images/CAN_hardware2.jpg)
## Step 3: software
1. Download and install [STSW-LINK004 STM32 ST-LINK utility](http://www.st.com/web/en/catalog/tools/PF258168)
2. Firmware: download and unzip [rusefi_can_sniffer.zip](http://rusefi.com/images/forum_posts/CAN/rusefi_can_sniffer.zip)

View File

@ -6,4 +6,4 @@ Ignition key ON, engine OFF. Press pedal all the way down fast, complexly releas
# PPS sweep with TPS disengages
Open hood, unhook TPS sensor plug. Repeat "TPS/PPS sweep"
Open hood, unhook TPS sensor plug. Repeat "TPS/PPS sweep"

5
CAN.md
View File

@ -1,10 +1,9 @@
Overview of CAN usage and IDs used by rusEFI
* rusEFI WBO two way communication 0xEF50000 0x190
* rusEFI WBO bootloader
* rusEFI gauge broadcast 0x200 default base see [DBC](https://github.com/rusefi/rusefi/blob/master/firmware/controllers/can/rusEFI_CAN_verbose.dbc)
* rusEFI vehicle specific communication
* rusEFI vehicle specific communication
* rusEFI ECU bootloader OpenBLT TX 667h, RX 7E1h
* rusEFI CAN GPIO
* rusEFI [TS over CAN](TS-over-CAN) 0x100 0x102
@ -21,4 +20,4 @@ Overview of CAN usage and IDs used by rusEFI
[Korlan instructions](https://rusefi.com/forum/viewtopic.php?p=43654#p43654)
FW images & legacy PCAN driver see https://github.com/rusefi/rusefi_external_utils/tree/master/CAN
FW images & legacy PCAN driver see <https://github.com/rusefi/rusefi_external_utils/tree/master/CAN>

View File

@ -13,4 +13,5 @@ CTS/RTS recommended by support, DCD being required is a surprise.
======================
Product: CL4490 automatically switch to AC4490 on "Read Radio"
======================
Configuration/Test Utility can "open" port without radio attached

View File

@ -4,8 +4,6 @@ We have a bracket GP winner, Matts lucky dog car has not done too badly iirc and
Street and import side, obviously your mr2, beers various mx5s and i believe a genesis has just been done.
We also are starting to make plug and tinker boards for popular tuner chassis, MX5, genesis, e36/46.
# Cold start on a Summer day
v8 LS: [tune](https://rusefi.com/online/view.php?msq=495)
@ -41,8 +39,8 @@ Highway cruising
Excited acceleration driving
# Consecutive engine cranking / engine stop
TODO [https://github.com/rusefi/rusefi_documentation/issues/151](https://github.com/rusefi/rusefi_documentation/issues/151)
# VVT control
@ -63,26 +61,24 @@ todo Matt
[Drift Championship - Video](https://www.youtube.com/watch?v=y4h5dAlh6tE)
# v8
https://www.youtube.com/watch?v=Xu1WibAQU_s
<https://www.youtube.com/watch?v=Xu1WibAQU_s>
# v12
https://www.youtube.com/watch?v=DkhOHbRG_j4
<https://www.youtube.com/watch?v=DkhOHbRG_j4>
# Epic 8 hours ride of 2016
https://youtu.be/a_0XbZutufU
<https://youtu.be/a_0XbZutufU>
# Lua and CAN
https://www.youtube.com/watch?v=3fbXCgkIJoM
<https://www.youtube.com/watch?v=3fbXCgkIJoM>
# Boost Control
https://rusefi.com/online/view.php?msq=969
<https://rusefi.com/online/view.php?msq=969>
# GDI

View File

@ -2,7 +2,6 @@ todo organize these notes better
# Proteus
[Proteus Stock issues - Forum](https://rusefi.com/forum/viewtopic.php?p=41539#p41539)
Highside BTS4175SGA: BSP762/ISP762, ISP752T
@ -14,7 +13,8 @@ MCP6004T-I/ST: MCP6004T-E/ST
## Proteus MCU options
Requirements:
- LQFP144
- LQFP144
- 1MB flash (but 2MB works as well)
- STM32F4: Known working is any F427/F429. 256KB RAM required. 1MB or 2MB acceptable.
- STM32F7: Known working is F767. 1MB or 2MB acceptable.

View File

@ -6,8 +6,8 @@
We make with -std=c++11 see [the Makefile](https://github.com/rusefi/rusefi/blob/master/firmware/Makefile)
## Brackets
Only the simplest, two-line if/for/while should not have the curly brackets. Anything more than two lines should have {}.
```
@ -27,6 +27,7 @@ if (plain_condition) {
```
## Code Formatting
Code formatting matters. The de-facto standard is Eclipse CDT (K&R) with one change: Maximum line width = 120
This standard is far from perfect, but it's good enough for now.

View File

@ -1,5 +1,6 @@
# rusEFI PCB Configurations
When ordering rusEFI the ECU boards may be bought in several different stages of assembly completeness. These stages may range from the bare board with no components attached all the way to fully assembled PCBs already in enclosures. What should be ordered by the end user is up to them, their soldering skills and capabilities, and how much they value their time.
When ordering rusEFI the ECU boards may be bought in several different stages of assembly completeness. These stages may range from the bare board with no components attached all the way to fully assembled PCBs already in enclosures. What should be ordered by the end user is up to them, their soldering skills and capabilities, and how much they value their time.
1. **Bare PCB**: No components soldered. For the end user, soldering would be required for **ALL** components.
![BareMRE](Hardware/Images/BareMRE.png "Bare MRE")
@ -13,9 +14,9 @@ When ordering rusEFI the ECU boards may be bought in several different stages of
4. **Fully Assembled**: All SMT and through hole devices are populated and the board is in a case. The end user does not need to open the case or ever look at the PCB. As far as the end user is concerned the product just needs to be wired in.
![CompleteMRE](Hardware/Images/CompleteMRE.png "Complete MRE")
## Options
## Options:
1. **PnP (plug & play)**: If the board is designed to be plug and play, plugged into the OEM harness and operate properly.
2. **Add Connector**: If the board is sold with the harness side connectors required.
3. **Add Pigtail**: If the board is sold with the harness side connectors required and there are wires in the harness side connectors.
4. **Add Harness**: If the board is sold with a vehicle specific harness so that the ECU needs to be connected to the vehicle with the harness and the engine will start.
1. **PnP (plug & play)**: If the board is designed to be plug and play, plugged into the OEM harness and operate properly.
2. **Add Connector**: If the board is sold with the harness side connectors required.
3. **Add Pigtail**: If the board is sold with the harness side connectors required and there are wires in the harness side connectors.
4. **Add Harness**: If the board is sold with a vehicle specific harness so that the ECU needs to be connected to the vehicle with the harness and the engine will start.

View File

@ -1,4 +1,5 @@
# rusEFI Dev Console - Overview
rusEFI Dev Console is a handy development and debugging tool. The dev console is written in java and it talks to the ECU firmware. The console allows firmware monitoring and configuration. Here are some pictures of what it looks like when it operating correctly.
To get the console working follow the below procedure, which assumes you have loaded the rusEFI firmware.
@ -6,10 +7,11 @@ To get the console working follow the below procedure, which assumes you have lo
* Either power externally, or connect the "programming" USB cable as shown below. This will provide power to the Discovery board.
* Connect the micro USB cable, see "console" cable shown below. When you do this for the first time, on a Windows PC, you will be prompted for drivers. You should download & install the drivers from [here](http://www.st.com/web/en/catalog/tools/PF257938). #: ![Jumper Setup](Images/rusEFI_STM.jpg)
* When the driver is installed & the board is connected via the micro USB cable, you can verify serial connectivity by
* '''Windows''' - opening your Device Manager - we are expecting to see a Virtual COM Port
* '''Windows''' - opening your Device Manager - we are expecting to see a Virtual COM Port
![Device Manager screenshot](http://rusefi.com/images/forum_posts/device_manager.png)
* '''Linux'''
* ''Ubuntu (11.10)'' - plug in the "console" USB cable, then check the message log with this command.
```
$ dmesg
...
@ -17,7 +19,8 @@ To get the console working follow the below procedure, which assumes you have lo
[10572.797239] cdc_acm 5-1:1.0: This device cannot do calls on its own. It is not a modem.
[10572.797285] cdc_acm 5-1:1.0: ttyACM0: USB ACM device
```
* In this case, the newly plugged in USB is register to ttyACM0, which you can find on /dev/ttyACM0
* In this case, the newly plugged in USB is register to ttyACM0, which you can find on /dev/ttyACM0
* If you don't already have the Dev Console, get it [http://rusefi.com/build_server/rusefi_bundle.zip](http://rusefi.com/build_server/rusefi_bundle.zip) (part of the same bundle)
* Note: rusEFI Dev Console requires java 1.8 or later!
* When you launch the Dev Console, it will ask you to select which serial address it should use. However you can specify that when you launch it by specifying a command line parameter as noted below.
@ -34,7 +37,7 @@ To get the console working follow the below procedure, which assumes you have lo
Update: there is also a lazier way to self-stimulate now, you would not need the jumper wires. That's the "enable self_stimulation" command you invoke via the dev console. The downside? Do not forget to undo it at some point with "disable self_stimulation"
At this point, the Dev Console should be up and running. Play around with it and see what you can learn. Also note, it as some functionality as noted below.
At this point, the Dev Console should be up and running. Play around with it and see what you can learn. Also note, it as some functionality as noted below.
* If used together with the build-in position sensor emulator, the console allows some level of testing on the bench, without a real engine or any additional hardware. The most useful feature is the plain signal sniffer - both real inputs and generated signals can go into it and this is actually quite handy. Another useful feature is the text log.
* You can use the console to invoke rusEFI commands and control the internal flow using the 'Messages Central' tab
@ -46,7 +49,7 @@ At this point, the Dev Console should be up and running. Play around with it and
## Analog Chart
You can sniff either trigger angles or MAP values.
You can sniff either trigger angles or MAP values.
Analog chart tab in java console is a very, very plain oscilloscope build into rusEFI firmware.

View File

@ -4,6 +4,6 @@ Any repetitive user support request has to be addresses strategically
* is it a usability which has to be documented?
* is it something to document on wiki once instead of explaining more than once?
* is it something to document on wiki once instead of explaining more than once?
![x](Images/cavemen-wheel-cartoon.png)
![x](Images/cavemen-wheel-cartoon.png)

View File

@ -1,7 +1,6 @@
Using most globally availbale as used on tons of VAG Diesel engines PSG007 - 03L905061G, 03L905061F, 03L905061
![image](https://user-images.githubusercontent.com/48498823/180412514-703e9ef9-b4c5-4b1c-8a31-065eefd77d72.png)
1. Sensor Supply 5v
@ -12,5 +11,4 @@ Harness options: opel 55577669 / opel 2081555 (Opel Astra J 2010-2017
Opel Insignia 2008-2017
Opel Zafira C 2013-2019)
[Forum Thread](https://rusefi.com/forum/viewtopic.php?f=4&t=919)
[Forum Thread](https://rusefi.com/forum/viewtopic.php?f=4&t=919)

View File

@ -1,17 +1,17 @@
# D is for... **DISTRACTION**
One of the major things rusEFI struggles with is the developers and contributors getting sidetracked by interesting shiny things.
When this happens we can loose a Dev for several days while he plays with a quantum capacitor or tries to implement crypto mining on the spare CPU cycles.
One of the major things rusEFI struggles with is the developers and contributors getting sidetracked by interesting shiny things.
When this happens we can loose a Dev for several days while he plays with a quantum capacitor or tries to implement crypto mining on the spare CPU cycles.
While in essence this is not a bad thing, it does mean that progress slows right down. With enough distraction then progress grinds to a halt.
While in essence this is not a bad thing, it does mean that progress slows right down. With enough distraction then progress grinds to a halt.
It is due to these distractions (and the fact that some times out Devs also have lives!) that rusEFI has a lot of features that are partially implemented and require further work to finish them off.
It is due to these distractions (and the fact that some times out Devs also have lives!) that rusEFI has a lot of features that are partially implemented and require further work to finish them off.
What this means is we politely request that people try not to ask easily answered questions to the Devs and keep feature requests to a minimum for now.
What this means is we politely request that people try not to ask easily answered questions to the Devs and keep feature requests to a minimum for now.
There are details of our plans for fuel strategy improvements [at this link](Roadmap-Fuel) as well as a comprehensive list of existing features and ones that are in development [here](Dev-Status.md)
If your idea does not already appear there then consider making a Github ticket but please have a think if that feature would really add to rusEFI and if it needs to be done ASAP. If not then please tag the ticket as a future feature and low priority.
If your idea does not already appear there then consider making a Github ticket but please have a think if that feature would really add to rusEFI and if it needs to be done ASAP. If not then please tag the ticket as a future feature and low priority.
Most simple questions can be answered by [searching the wiki](HOWTO-Search-on-rusEFI-wiki) or by [searching the forum](https://rusefi.com/forum/search.php)
![img](Images/ATdistraction.png)
![img](Images/ATdistraction.png)

View File

@ -2,7 +2,6 @@ Debug fields is an advanced troubleshooting feature allowing one to monitor inte
`set debug_mode CODE`
| code | name | debug f1 | debug f2 | debug f3 | debug f4 | debug f5 | debug f6 | debug f7 | debug i1 | debug i2 | debug i3 | debug i4 | debug i5
|-|-|-|-|-|-|-|-|-|-|-|-|-|-|
| 0 | Alternator_PID | controller output | integration term | previous error | I setting | D setting | dTerm | maxValue | P setting | offset | settings change counter
@ -18,7 +17,7 @@ Debug fields is an advanced troubleshooting feature allowing one to monitor inte
| 12 | VSS | | | | | | | | vss event counter
| 17 | ETB electronic throttle body PID | duty cycle | integration term | previous error | I setting | D setting | dTerm | maxValue | P setting | offset | settings change counter
| 21 | ADC #1 / Analog Inputs | VBatt | TPS | MAF | MAP | CLT | IAT | EGO
| 23 | FSIO_EXPRESSION | FSIO output #1 | FSIO output #2 | FSIO output #3 | FSIO output #4 | FSIO output #5 | FSIO output #6
| 23 | FSIO_EXPRESSION | FSIO output #1 | FSIO output #2 | FSIO output #3 | FSIO output #4 | FSIO output #5 | FSIO output #6
| 24 | Status | Seconds since reboot | | | | | | | VCS_VERSION
| 25 | CJ125 | Heater Duty | Heater PID I Term | Heater PID Err | UA | UR | Calibr.UA | Calibr.UR | State | Diag.reg
| 26 | CAN | | | | | | | | read counter | write OK | write NOT ok

View File

@ -1,10 +1,9 @@
THIS CONCEPT IS ON THE WAY OUT
See https://github.com/rusefi/rusefi/issues/3614
See <https://github.com/rusefi/rusefi/issues/3614>
Debug fields is an advanced troubleshooting feature allowing one to monitor the internal state of some rusEFI subsystems.
Debug fields is an advanced troubleshooting feature allowing one to monitor the internal state of some rusEFI subsystems.
In TunerStudio, select "Base Engine Settings -> Debug Mode" and use the gauges from "Debug" category.
See [Debug Fields](Debug-Fields.md)

View File

@ -1,6 +1,5 @@
![](Hardware/Deucalion/Deucalion_0_1_uart.jpg)
From right to left:
* Black GND
@ -14,4 +13,4 @@ Another green is another RXD for second UART, another blue is another TXD.
This is related EFI_PRINT_MESSAGES_TO_TERMINAL
Orange jumper on the left is enabling LED. The single LED on Deucalion is shared between stm32 and Kinetis.
Orange jumper on the left is enabling LED. The single LED on Deucalion is shared between stm32 and Kinetis.

View File

@ -7,6 +7,7 @@
|reset_ts|0 |Resets TunerStudio debugging counters|
## CAN
|Command|Number Of Parameters|Description|
|-|-|-|
|caninfo|0 |Shows stats for CAN subsystem|
@ -15,6 +16,7 @@
|enable can_write|0 |Enable sending out gauge info via CAN according with selected CAN configuration. Also `disable can_write`|
## Knock Detection
|Command|Number Of Parameters|Description|
|-|-|-|
|enable HIP9011|0|Enables HIP9011 driver|
@ -26,6 +28,7 @@
|set_hip_prescalerandsdo|1|Sets HIP prescaler and SDO. 0 for 4mHz, 6 for 8mHz|
## General
|Command|Number Of Parameters|Description|
|-|-|-|
|adc|1 |
@ -69,6 +72,7 @@
|set_int, set_short, set_float|2|changes configuration value at given offset, for example set_float 102 1.23|
## Logging
|Command|Number Of Parameters|Description|
|-|-|-|
|sdinfo|0 | Prints a report of SD/MMC usage|
@ -76,12 +80,12 @@
|enable sd/disable sd|0 |
## Trigger
Trigger is the camshaft or/and crankshaft position sensor(s)
`triggerinfo`
shows some info regarding trigger situation
set global_trigger_offset_angle XX
sets global trigger offset from synchronization point of trigger decoder to actual TDC #1
@ -108,14 +112,15 @@ Prints trigger shape definition
|mapinfo|0| prints out some debug information on MAP sensor|
## Board Control
set_injection_pin: 2 parameters: index, PIN
For example,
For example,
set_injection_pin 1 PB7
set injection_pin_mode: 1 parameter
For example,
For example,
`set injection_pin_mode 1`
@ -132,15 +137,16 @@ set ignition_pin_mode: 1 parameter
set idle_pin_mode: 1 parameter
For example,
For example,
set idle_pin_mode 1
set fuel_pump_pin_mode: 1 parameters,
set fuel_pump_pin_mode: 1 parameters,
set malfunction_indicator_pin_mode: 1 parameters,
## Fuel Control
See also [Fuel Overview](Fuel-Overview)
set_whole_fuel_map: 1 parameter: global value for the whole fuel map, in ms
@ -155,7 +161,6 @@ set cranking_fuel: 1 parameters, for example
`set cranking_fuel 5`
set injection_offset: 1 parameter, for example
`set injection_offset 80`
@ -163,6 +168,7 @@ set injection_offset: 1 parameter, for example
Sets global fuel injection phase to 80 degrees after TDC.
## Alternator Control
`altinfo`
Prints current alternator state
@ -200,18 +206,15 @@ for example, `set engine_load_accel_len 6` Look back at MAP for period of last X
set engine_load_accel_multiplier X
for example, `set engine_load_accel_multiplier 2.0` This coefficient controls how much extra fuel we inject during acceleration due to MAP change
set engine_load_accel_threshold X
for example, `set engine_load_accel_threshold 5.0` Ignore change below X kPa
set tps_accel_len X
for example, `set tps_accel_len 6` Look back at TPS for period of last X injections.
set tps_accel_multiplier X
for example, `set tps_accel_multiplier 2.0` This coefficient controls how much extra fuel we inject during acceleration due to TPS change
set tps_accel_threshold X
for example, `set tps_accel_threshold 10` Ignore change below X % tps
@ -253,7 +256,6 @@ enable/disable stepperidle
for example, `enable stepperidle`
**blipidle X Y**
overrides idle position to X for Y duration of time

View File

@ -20,12 +20,12 @@ Pretty much same was as with data coming from rusEFI, we have a prefix `sec` and
TODO: unify `line` and sec `one` day?
## java classes
Incoming data workflow:
transport layer pushes data into EngineState.processNewData() which splits the data into jeys and value, pushing this data into the primary listener for
the specified key. The main listener is SensorCentral which keeps track of 'Sensor' values and listeners. Another interesting key-value consumer is MessagesCentral which takes care of all the human-readable messages which end up in Messages UI console..
Outgoing data flow:
Outgoing data flow:

View File

@ -1,7 +1,8 @@
### This is a **DEVELOPERS** manual. For the user manual please see [Hardware](Hardware)
## Summary
This page is a general guide for hardware items and
This page is a general guide for hardware items and
suggestions on how to design and work with things like a PCB layout.
---
@ -13,10 +14,11 @@ Our file repository for hardware is [here](https://github.com/rusefi/rusefi/tree
For now we are developing hardware as individual functional modules. While all individual modules are in-depended from each over, the use the share the same component library which is located at [https://github.com/rusefi/kicad-libraries](https://github.com/rusefi/kicad-libraries)
## Collaboration process
Since patch files do not work well for hardware projects, our collaboration process is pulling whole folders from the SVN where board author would develop them into the central SVN which is the unified repository. That's a poor man workaround over the lack of free SVN hosting with directory user permissions.
## Naming convention
Name capacitors with uF and pF only. So 100nF is a no go while 0.1uF is good.
This works better with filter/sort operations in spread sheets.
Also start the name with 0.1 instead of .1.
@ -24,6 +26,7 @@ Also start the name with 0.1 instead of .1.
Resistors should be listed like this 100R or 2k2
## General suggested environment
- Allow an ambient temperature from -40C to +85C (-40F to 185F) AEC Q100 Grade 3
- Voltage regulators that are compatible with ISO 7637-2 and ISO16750-2 (100V repetitive pulses via 50ohm impedance, 18 V for 60 min, 24V for 60s to all relevant inputs, withstand a reversed voltage for 60s, 500V rms (50 Hz to 60 Hz) for 60s, ect).
- Voltage regulators that follow Maxim's suggestions here (cold cranking down to 4V for up to 40mS)
@ -41,6 +44,7 @@ Resistors should be listed like this 100R or 2k2
---
## Connectors
- Connectors should be keyed such that it is difficult to accidentally swap connectors
- Connectors should be able to carry the max possible load with one pin, ensuring no doubling up pins to get increased current ratings. It is OK to double up pins to decrease connector resistance for a lower voltage drop.
- Connectors should survive the currents passed when inputs are shorted to GND or 12V as noted above in the suggested environment.
@ -51,25 +55,27 @@ Resistors should be listed like this 100R or 2k2
---
## PCB design rules
- See [PCB Design Rules](PCB-Design-Rules.md)
---
## Links to specific hardware projects
#### - [Frankenso](Hardware-Frankenso)
#### - Brain board
![alt text](Images/Vyuqd8h.png)
The brain board can be the off the shelf STMDiscoveryF4. However the Discovery has several circuits like the analog microphone circuits which change how a particular pin is loaded. We have noticed that this pin loading cause the injector circuits to vary pulse widths. Because of this we have developed a stripped down version of the Discovery board without the extra circuits. Both boards have the same general specifications, same clock rates, same IO headers with the same pin outs, ect.
Forum thread about this PCB found [here](http://rusefi.com/forum/viewtopic.php?f=4&t=381), also see:
Forum thread about this PCB found [here](http://rusefi.com/forum/viewtopic.php?f=4&t=381), also see:
[Current pin out](https://docs.google.com/spreadsheet/ccc?key=0Arl1FeMZcfisdGpIZVBGMWFIQXdycnVNOWRjRG5YNnc)
---
#### - Frankenstein
![alt text](Images/20140224_state.jpg)
Frankenstein is a combination of individual modules, such that you can make sub modules, then combine them with a script. The end result allows you to prototype a small board, then once you have verified the small board, you can combine it with the larger module. If you don't want all the features of Frankenstein, you can mix and match as you so choose. Frankenstein is a combination of the below.
@ -89,17 +95,17 @@ Source file for the schematic found [here](https://sourceforge.net/p/daecu/code/
Links to misc schematics
J701 NEON engine schematics
![alt text](Images/120px-TPS-INJ-IAT_schematic.jpg)
[120px-TPS-INJ-IAT_schematic.jpg](Images/TPS-INJ-IAT_schematic.jpg)
[120px-TPS-INJ-IAT_schematic.jpg](Images/TPS-INJ-IAT_schematic.jpg)
![alt text](Images/120px-IGN.jpg)
[120px-IGN.jpg](Images/IGN.jpg)
Found in this thread [link](http://rusefi.com/forum/viewtopic.php?f=3&t=360&start=52)
---
## Misc
[CAN Sniffer](CAN-Sniffer)
[Mini Cooper 2003](Mini-Cooper-2003)

View File

@ -1,6 +1,7 @@
# Maybe prerequisite
Nathan wonders what the hell does current automation even do. Could this be clarified with minor code comments on top of key files?
Nathan reminds that some code generation could/should be integrated into Makefile. Some documentation in https://github.com/rusefi/rusefi/blob/master/firmware/config/boards/readme.md
Nathan reminds that some code generation could/should be integrated into Makefile. Some documentation in <https://github.com/rusefi/rusefi/blob/master/firmware/config/boards/readme.md>
# Current state
@ -9,9 +10,8 @@ Nathan reminds that some code generation could/should be integrated into Makefil
* Console can update to master snapshot
* Bundle .zip has confusing folder name with timestamp
# Desired state
* How does github fit with non-linear release flow?
* More automated github release process?
* Smarter console autoupdate options - update within relese VS update to snapshot? Rollback?
* Smarter console autoupdate options - update within relese VS update to snapshot? Rollback?

View File

@ -1,6 +1,6 @@
We love our engines and we want them to live a long & happy life. That's why we have a three-tier quality assurance process:
* Continuous Integration: Unit testing with [Github Actions](https://github.com/rusefi/rusefi/actions? query=workflow%3A%22Unit+Test+CI%22) see unit_tests
* Continuous Integration: Unit testing with [Github Actions](<https://github.com/rusefi/rusefi/actions>? query=workflow%3A%22Unit+Test+CI%22) see unit_tests
* built-in trigger signal simulation
* [Simulator](Virtual-simulator)
@ -10,16 +10,12 @@ For current coverage report see [the coverage page](https://rusefi.com/docs/unit
Since 2015 there is always a stm32f4 board listening for VCS updates running rusEFI hardware continues integration, "HW CI" for short.
Anyone can execute real hardware test suite by invoking. This command would detect rusEFI hardware automatically and invoke
[broken link](https://github.com/rusefi/rusefi/blob/master/java_console/autotest/src/com/rusefi/RealHwTest.java)
``java -jar rusefi_console.jar functional_test``
The following jumper wires are used to test some subsystems as realistically as possible:
* PD1 <=> PC6
* PD2 <=> PA5
* PD1 <=> PC6
* PD2 <=> PA5

View File

@ -1,4 +1,5 @@
STM32F407 firmware
```
git clone --recurse-submodules https://github.com/rusefi/rusefi
cd firmware
@ -9,6 +10,6 @@ virtual serial port
PC application to send commands: [rusEFI Firmware bundle](https://rusefi.com/build_server/rusefi_bundle.zip)
See also https://github.com/rusefi/rusefi/blob/master/firmware/setup_linux_environment.sh
See also <https://github.com/rusefi/rusefi/blob/master/firmware/setup_linux_environment.sh>
[ChibiOS](https://www.chibios.org/)
[ChibiOS](https://www.chibios.org/)

View File

@ -62,6 +62,7 @@ Example:
`timeNowUs += MS2US(15);`
Unit tests will run under various tools that check for memory or other violations ("Sanitizers" such as AddressSanitizer or Valgrind). For performance reasons, some of these are only run at GitHub actions, but if you need to you can run them yourself.
* Unit tests by default are built for AddressSanitizer. You can disable this by running `make SANITIZE=no`. This will detect memory overruns and underruns, although it won't detect overruns within a struct (for example, running off the end of an array that happens to land on some unrelated-but-valid memory after the array but is still in the struct).
* Unit tests on GitHub are also built for AddressSanitizer, but add an additional check for stack use after free. You can mimic this yourself by running tests as `ASAN_OPTIONS=detect_stack_use_after_return=1 build/rusefi_test`
* Unit tests on GitHub are also run under Valgrind. This helps detect using uninitialized memory, among other differences. In order to run under Valgrind, you must first compile without ASAN: `make SANITIZE=no` then run as `valgrind build/rusefi_test`. You have to scan through stderr to find the errors of interest, so you can run: `valgrind build/rusefi_test > /dev/null`.

View File

@ -1,6 +1,7 @@
rusEFI has build-in provisions for performance tracing
Whenever certain events occur, a few things are logged to a buffer:
- Event type (function name, etc)
- Current thread
- Current interrupt number (if not in a thread)
@ -9,6 +10,7 @@ Whenever certain events occur, a few things are logged to a buffer:
This data is then transported to a PC, and reconstructed in to an easy-to-read format.
Uses:
- Performance optimization
- Where did the time go? Are we running out of CPU? Is a particular interrupt or thread getting in the way often?
- Is the interrupt/thread priority set properly? Are things getting preempted as expected?
@ -35,4 +37,4 @@ Now, to the actual content of the trace:
This is an example of interrupt #50, which is timer 5, which is used for rusEFI's execution queue. All events scheduled in the future are dequeued by this timer, and reset in oneshot mode for the next event in the queue.
The stack of blocks depicts execution as this interrupt occurred. The width of each block represents the duration of that particular event, and if a block is below another, it indicates that it is a child of the block above it. Since these events all trace the execution of a particular function, the trace shows the route execution took through different functions. In this case, `SingleTimerExecutor::doExecute` called `EventQueue::executeAll`, which called `EventQueue::executeCallback`, which called `pwmGeneratorCallback`, and so on.
The stack of blocks depicts execution as this interrupt occurred. The width of each block represents the duration of that particular event, and if a block is below another, it indicates that it is a child of the block above it. Since these events all trace the execution of a particular function, the trace shows the route execution took through different functions. In this case, `SingleTimerExecutor::doExecute` called `EventQueue::executeAll`, which called `EventQueue::executeCallback`, which called `pwmGeneratorCallback`, and so on.

View File

@ -9,25 +9,28 @@ These can be extracted under your home directory; just add the `bin` directory t
TODO: You probably need to install additional packages but I don't remember what they are.
Then to compile the firmware,
```
cd firmware
make PROJECT_BOARD=nucleo_h743 PROJECT_CPU=ARCH_STM32H7 -j4
```
Edit according to your environment.
To compile the simulator,
```
cd simulator
./compile.sh
```
To compile the unit tests,
```
cd unit_tests
make -j4
```
# Working with STM32 Dev/Nucleo boards
These boards are convenient as they include an ST-Link onboard which aids debugging. I believe the main difference is a Development board includes a bunch of peripherals that you may or may not care about, while a Nucleo board is much more stripped down. Some (all?) boards will be powered when you connect to the ST-Link USB board. The ST-Link will include, among other things, a virtual com port, which can be used to run either the console or TunerStudio. However, by default the ports are not accessible by regular users. You can solve this with:
@ -50,23 +53,30 @@ OpenOCD can be left running in the background while you develop in other windows
```
sudo ~/openocd/xpack-openocd-0.11.0-2/bin/openocd -f ~/openocd/xpack-openocd-0.11.0-2/scripts/board/st_nucleo_h743zi.cfg
```
Adjust as necessary; you may need `sudo` if you don't normally have access to USB devices.
To reprogram, simply do:
```
telnet localhost 4444
program build/rusefi.elf reset
exit
```
Or, if you prefer a one-liner:
```
(echo "program build/rusefi.elf reset"; echo exit) | nc localhost 4444
```
Conveniently, OpenOCD will retain a history of commands, allowing you to use up-arrows to retrieve previous commands.
On a nucleo-h743, I don't seem to get much indication this worked, but if you connect via gdb:
```
gdb build/rusefi.elf
target remote :3333
```
then you might end up in the middle of the ChibiOS idle function, a good indication you've succeeded.

View File

@ -1,16 +1,16 @@
We have 4 versions of Digital Dash currently
We have 4 versions of Digital Dash currently
A-- The Quickest and easiest Digital Dash is TunerStudioMS... And is described Below
A-- The Quickest and easiest Digital Dash is TunerStudioMS... And is described Below
B-- Second is a PowerTune IMG that is just copied onto a SDcard -- and will boot up PowerTune on a raspberry Pi 3 ... Link [here](https://drive.google.com/file/d/1Mr9GsCZhoa8WZ2HCqsjXC0b3KFDa_3Yp/view?usp=sharing)
B-- Second is a PowerTune IMG that is just copied onto a SDcard -- and will boot up PowerTune on a raspberry Pi 3 ... Link [here](https://drive.google.com/file/d/1Mr9GsCZhoa8WZ2HCqsjXC0b3KFDa_3Yp/view?usp=sharing)
C-- Third is a Custom Digital Gauge cluster... [Link HERE ](https://customgt6.com/2021/03/28/custom-digital-gauge-cluster/) ... And here is the [GitHub link for Code ](https://github.com/joshellissh/pi-dgc)
C-- Third is a Custom Digital Gauge cluster... [Link HERE](https://customgt6.com/2021/03/28/custom-digital-gauge-cluster/) ... And here is the [GitHub link for Code](https://github.com/joshellissh/pi-dgc)
D— Fourth is Android tablet or phone running the [Real Dash](http://realdash.net/index.php) App
# How to set up a Raspberry Pi with TunerStudio as a Digital Dash
Click the image to watch a video of a Raspberry Pi rusEFI connected display. Early "proof of concept"
Click the image to watch a video of a Raspberry Pi rusEFI connected display. Early "proof of concept"
[![IMAGE ALT TEXT](https://user-images.githubusercontent.com/5051341/125208727-ee206800-e259-11eb-9600-6cf742fba5a6.jpg)](https://www.youtube.com/watch?v=a0mdhANrIhw "PiDash rusEFI")
@ -29,12 +29,11 @@ Controls|[Keyboard and Mouse](https://www.amazon.com/Logitech-Wireless-Keyboard-
2. Extract to your home directory
a. Default home directory is "pi", open terminal and type: "ls /home/pi/TunerStudioMS" (if your home directory isnt "pi" change to match your home directory)
b. Ensure that "TunerStudio.sh" shows up in the results. If it is not, re-install
b. Ensure that "TunerStudio.sh" shows up in the results. If it is not, re-install
Note: you MAY need to install JAVA... if so, type
Note: you MAY need to install JAVA... if so, type
`sudo apt-get install openjdk-8-jre`
@ -46,7 +45,7 @@ To set default Java runtime
a. Open termnial and type: "ln -s /home/pi/TunerStudioMS/TunerStudio.sh /usr/local/bin"
b. Once complete in terminal type: type: "bash /usr/local/bin/TunerStudio.sh"
b. Once complete in terminal type: type: "bash /usr/local/bin/TunerStudio.sh"
i. TunerStudio will open. Enter your registration information now.
@ -58,9 +57,6 @@ To set default Java runtime
v. Save tune. Close TunerStudio
Here is a [site](https://tunerstudiodashboards.com) with free dashboards to spice up your look
Here is a [site](https://tunerstudiodashboards.com) with free dashboards to spice up your look
Here is a [site](http://www.tunerstudio.com/index.php/manuals/53-using-tunerstudio-dashboard-designer) on how to make your own custom dashboards

View File

@ -2,10 +2,11 @@
1. Connect the stm32f4discovery ('brain board') to the IO board, place jumpers like XYZ, then connect to a PC with a mini-USB cable. Mini-USB cable is used to power and to program the brain board. See below procedure found [here](http://rusefi.com/forum/viewtopic.php?f=5&t=210&start=23)
2. Before loading rusEFI firmware - if you have one of the newer Rev D STM32 discovery boards - you need to update discovery's firmware. That's in the "Firmware" dialog of ST Link utility, as shown in this picture.
2. Before loading rusEFI firmware - if you have one of the newer Rev D STM32 discovery boards - you need to update discovery's firmware. That's in the "Firmware" dialog of ST Link utility, as shown in this picture.
![STLink Firmware Update](Images/Stlink_firmware_update.png)
![Discovery Upload Wire](Images/discovery_upload_wire.JPG)
* To upload the binary image into the microcontroller you will need to download & install [STM32 ST-LINK utility](http://www.st.com/st-web-ui/static/active/en/st_prod_software_internet/resource/technical/software/utility/stsw-link004.zip). (this is both the utility and the driver) Once installed it will look like this.
![STLink Utility](Images/st_link_utility.png)
* You should click '''Target --> Program...''' , browse to the rusefi.bin you have downloaded and hit Start button like this
@ -28,19 +29,20 @@ orange LED: warning: blinking in case of trigger input decoding warning or other
* Verify the LED TODO is bright, this indicates the STM is being powered.
* Verify you can still connect via Java console program
* Verify with Tunerstudio that you can connect, then set the simulation blah to blah and your STM should start generating a signal on pin Blah.
* Verify with Tunerstudio that you can connect, then set the simulation blah to blah and your STM should start generating a signal on pin Blah.
* Install jumper TODO, this will connect the simulated crank angle signals to the input decoding signal. At this point you should the the RPM varying on the Java Console.
* Take your best stab at making look up tables and such via TS.
### Communication mode
microUSB channel is more sensitive to noise but it's faster
See also [Tunerstudio Connectivity](Tunerstudio-Connectivity.md)
### Configuration reset
Grounding PD6 resets saved configuration to default state - see [this forum post](http://rusefi.com/forum/viewtopic.php?f=5&t=373&p=9571&hilit=PD6#p9571)
### Board Testing mode
Grounding PB0 enables board testing mode. See [Hardware Test Mode](Hardware-Test-Mode.md)

View File

@ -4,7 +4,7 @@ Open question: What is in scope of rusEFI wiki and what is out of scope?
* A of Nov 2022 the best cost/benefit ratio is to work on TunerStudio layout and TunerStudio field tooltips and help articles which are embedded into "Help" of specific dialogs.
* Andrey does not believe in text documentation on wiki
* Content problem versus infrastructure/structure problem like https://github.com/rusefi/rusefi_documentation/issues/250 and https://github.com/rusefi/rusefi_documentation/issues/168
* Content problem versus infrastructure/structure problem like <https://github.com/rusefi/rusefi_documentation/issues/250> and <https://github.com/rusefi/rusefi_documentation/issues/168>
* We are probably not trying to teach people how to tune HP Academy does that better
## Wiki status
@ -13,16 +13,18 @@ As of December, 2022 the strategy is to maintain two wikis, with [the same sourc
[https://github.com/rusefi/rusefi/wiki/](https://github.com/rusefi/rusefi/wiki/) AKA Wiki2
[https://wiki.rusefi.com](https://wiki.rusefi.com) AKA Wiki3
Reasons for using a source repo:
1. Access control
2. Change review process
3. History and version control management
Problems with Github Wiki:
1. [Not crawlable by search engines](https://github.com/isaacs/github/issues/1683)
Problems with having two wikis:
1. Inconsistency of markup language between the two wikis
See [HOWTO Contribute to Documentation](HOWTO-contribute-to-documentation)

View File

@ -2,7 +2,6 @@
Bosch 0280-155-976 injectors
## NGC Chrysler ECU
152 pin connector (x4 38 pin)
@ -10,6 +9,7 @@ Bosch 0280-155-976 injectors
[2003 Dodge Neon - Forum](http://rusefi.com/forum/viewtopic.php?f=3&t=696)
## Plug 1
38 pin
Plug color: black
@ -60,6 +60,7 @@ Plug color: black
| 38 | | | | |
## Plug 2
38 pin
Plug color: orange
@ -110,6 +111,7 @@ Plug color: orange
| 38 | green | | Idle Air Control solenoid | \+12 supply |
## Plug 3
38 pin
White
@ -160,6 +162,7 @@ White
| 38 | | | Starter Relay | Output, low side |
## Plug 4
38 pin
Automatic transmission control plug.
@ -171,18 +174,23 @@ Automatic transmission control plug.
## Diagrams
### ECU
![Wiring Diagram](Images/Dodge_Neon_2003.png)
### Starting
![Wiring Diagram](Images/Dodge_Neon_2003_starting.png)
### Charging
![Wiring Diagram](Images/Dodge_Neon_2003_charging.png)
### Cooling
![Wiring Diagram](Images/Dodge_Neon_2003_cooling.png)
### A/C
![Wiring Diagram](Images/Dodge_Neon_2003_ac.png)
![Injector Calibration](Images/0280155868cs.jpg)

View File

@ -1,6 +1,6 @@
rusEFI offers complete software download bundles for multiple supported microcontrollers and boards.
# IMPORTANT NOTE: TunerStudio v3.1.04 or later is REQUIRED! Please double check the version before updating your firmware, or your settings could be lost when updating!
# IMPORTANT NOTE: TunerStudio v3.1.04 or later is REQUIRED! Please double check the version before updating your firmware, or your settings could be lost when updating
### Common Boards
@ -44,7 +44,6 @@ rusEFI offers complete software download bundles for multiple supported microcon
[Virtual Simulator](Virtual-simulator)
## FAQ
# Q: I see something interesting was just changed in the firmware? How do I use latest version?

View File

@ -4,8 +4,6 @@ First priority to control 6HP26 gearbox
[BMW N73 electronics](BMW-N73)
Test mule #1 2004 760 AndreyB
Test mule #2 2006 760 Zeiss HeinrichG
@ -18,18 +16,10 @@ Need to decode message format: Smaller list of names in English [here](https://w
Need to decode message format: Huge list in German [here](https://www.bimmerforums.com/forum/showthread.php?2298830-E90-Can-bus-project-%28E60-E65-E87-%29&p=29628499#post29628499)
[BMW E65 CANBUS](https://github.com/damienmaguire/BMW-E65-CANBUS)
[E90](https://www.bimmerforums.com/forum/showthread.php?2298830-E90-Can-bus-project-(E60-E65-E87-))
Local-CAN messages:
105
@ -50,7 +40,7 @@ Local-CAN messages:
20D ? Position Lenksäule (5) 101 0x65 SZM_MIT_KBUS/SZM
212 ? Höhenstände Luftfeder [8] 56 0x38 EHC
212 ? Höhenstände Luftfeder [8] 56 0x38 EHC
214

View File

@ -24,7 +24,7 @@ Most throttles have one connector that contains both the position sensors and mo
### Pedal position sensor
In TunerStudio, open the *"Accelerator pedal"* window from the *Sensors* menu.
In TunerStudio, open the _"Accelerator pedal"_ window from the _Sensors_ menu.
1. Select the channels wired to your primary and secondary redundant pedal sensors. Using both is a safety concern: this lets rusEFI detect a broken or shorted wire or failed sensor.
2. Restart the ECU: disconnect USB, and cycle the ignition off, then back on, and reconnect USB.
@ -35,7 +35,7 @@ In TunerStudio, open the *"Accelerator pedal"* window from the *Sensors* menu.
### Throttle position sensor
In TunerStudio, open the *"TPS"* window from the *Sensors* menu.
In TunerStudio, open the _"TPS"_ window from the _Sensors_ menu.
1. Remove intake plumbing such that you can see and touch the throttle plate in the throttle body to confirm proper operation.
2. Select the channels wired to your primary and secondary redundant throttle position sensors. Using both is a safety concern: this lets rusEFI detect a broken or shorted wire or failed sensor.
@ -67,7 +67,7 @@ rusEFI includes PID auto-tuning software that can help generate a starting point
Also known as a "feed forward" term, bias curve serves to offset the throttle's return spring. The table stores how much PWM duty cycle is required to hold the throttle at that particular throttle position against the spring. Since the spring pushes towards ~5-20%, the value will be negative when below the neutral point, and positive above it, transitioning steeply as it passes the neutral point of the spring.
We are interested in positions like 0, between-0-and-default, default, a bit open, a bit more open, 50% open, wide open,
We are interested in positions like 0, between-0-and-default, default, a bit open, a bit more open, 50% open, wide open,
## Configure Pedal Map

View File

@ -4,7 +4,7 @@ See also [Vault Of Electronic Throttle Bodies ETB](Vault-Of-Electronic-Throttle-
rusEFI supports electronic throttle body control. Also called drive by wire (DBW), there is no physical cable between the throttle pedal, or pedal position sensor (PPS), and the throttle. The PPS is only a sensor that measures how far depressed it is. The ECU interprets the information from the PPS, and converts it to a desired position for the throttle. The ECU then drives the throttle plate to the desired position and compares the throttle plate position using the throttle position sensor (TPS) to the desired position set by the PPS and makes adjustments as required.
There are several benefits by allowing the ECU to control the position of the throttle.
There are several benefits by allowing the ECU to control the position of the throttle.
- Rev limiter by simply closing the throttle (not yet implemented)
- Superior idle control
@ -18,12 +18,14 @@ There are several benefits by allowing the ECU to control the position of the th
# Theory of Operation
Electronic throttles typically consist of:
- A brushed DC motor. Positive torque pushes the throttle open, and negative torque pushes the throttle closed.
- A TPS. This is an angle sensor, commonly a potentiometer or hall sensor, which tells the ECU the actual position of the throttle. This is used as feedback to the ECU to accurately set and hold the throttle position.
- A "limp home" return spring. This spring holds the throttle position open slightly, commonly 5-25%, enough for a high idle. This allows the vehicle to "limp home" in the event the ECU can no longer operate the throttle.
rusEFI hardware and software have been designed to work with all three of these parts of the throttle.
- DC motor driver H-bridge(s) to control the motor. An H-bridge can apply a variable voltage using PWM in either direction. Both directions are important to be able to open and close the throttle completely.
- DC motor driver H-bridge(s) to control the motor. An H-bridge can apply a variable voltage using PWM in either direction. Both directions are important to be able to open and close the throttle completely.
- Analog inputs and corresponding software to measure both the TPS and PPS.
- A control algorithm that uses a table to linearize the effects of the return spring and PID to move the throttle to the targeted position.
@ -35,9 +37,10 @@ Different H-bridge chips are controlled differently. So far we have experienced
### VNH2SP30
PWM on Control pin, two on/off direction pins are specifying direction.
PWM on Control pin, two on/off direction pins are specifying direction.
### TLE9201
PWM on Control pin, open/close using one on/off direction pin, second direction pin unused.
### TLE7209 mode

View File

@ -1,10 +1,9 @@
Update 2017: things are much more settled these days, at least 6 months without an incompatible configuration format change.
The best way to configure rusEFI according to your engine setup is via Tuner Studio - there are not many settings there, it should be to some expend self-explanatory. In case of any questions your best chance at the moment is to ask questions on the forum - there are still not enough walk-troughs and articles.
The best way to configure rusEFI according to your engine setup is via Tuner Studio - there are not many settings there, it should be to some expend self-explanatory. In case of any questions your best chance at the moment is to ask questions on the forum - there are still not enough walk-troughs and articles.
But rusEFI is still in the phase of active development: some parts of the code are still far from final, and new configuration parameters are being added every month. Because of that, the TunerStudio project definition is still pretty volatile. Volatile TunerStudio project definition means your settings could be lost next time you upgrade the firmware, because of that we need a way to keep default configurations for each setup in a more persistent way. This is the reason why we have...
Engine Type concept: we have an array of default configurations for different engines defined [right in the source code](https://github.com/rusefi/rusefi/tree/master/firmware/config/engines). Which of the configurations is used is controlled by 'engine type' field which is persisted in the internal chip flash memory along with the rest of the configuration. So, in order to get your trigger decoding parameters and your fuel & injection control strategies activated, you need to invoke the 'set engine_type X' command as described [here](http://rusefi.com/forum/viewtopic.php?f=5&t=210#p4038).
Ford Aspire Frankenstein default configuration: `set engine_type 3`
@ -15,7 +14,6 @@ Mazda Miata 1996 Frankenstein default configuration: `set engine_type 21`
Please post on the forum to get your own engine type ID started - I'll take care of the code.
Part of the problem is the fact that Tuner Studio works only one way - once project is created, TS does not read new values from the controller but considers it's copy of the config to have priority.
TODO: we need a better solution.

View File

@ -1 +1 @@
See [OBD Error Codes header](https://github.com/rusefi/rusefi/blob/master/firmware/controllers/algo/obd_error_codes.h)
See [OBD Error Codes header](https://github.com/rusefi/rusefi/blob/master/firmware/controllers/algo/obd_error_codes.h)

View File

@ -8,4 +8,4 @@ Step 2: full erase
in rusEFI console use "Full Erase Chip"
Step 3:
Manual DFU programming using rusEFI console as usual
Manual DFU programming using rusEFI console as usual

View File

@ -7,7 +7,6 @@ This page contains information about how to hook up to rusEFI hardware, in gener
**WARNING: The exact implementation of these pins is hardware specific!!!**
You should always consult the documentation on your particular hardware. The information here is presented for "planning" purposes only - to help you figure out which of the hardware variants will suit the sensors and solenoids present on your engine.
## Fuel injectors
As of May 2020, only saturated (high impedance, >8 ohms) port injectors are supported. All hardware variants are built around the concept of one ECU pin controlling one fuel injector. The use of multiple injectors on one ECU output must be very carefully evaluated to avoid overloading drivers. One injector may also be used for all cylinders ("single point"). A pair of injectors can be wired together and fired simultaneously, as in 4 pairs of injectors on a V8. It's possible but not intuitive to configure two banks of multiple cylinders of injectors alternating fire. It is recommended to use one injector per cylinder. As of May 2020, staged injection with multiple injectors per cylinder is possible in hardware but the software is not yet ready.
@ -16,7 +15,6 @@ You do **not** need to wire injectors in a particular way. Cylinder #1 (as numbe
Bottom line: as long as the hardware variant has at least as many injector outputs as your engine has cylinders, you will be able to run one injector per cylinder.
## Coils
As of May 2020, most hardware variants support only logic level drive for coils. This means GM LSx, IGN1A, Denso coil stick, etc. (others may too - these are just examples) that have built in ignitors will work. You should consult the documentation for both the coils and the rusEFI hardware you are using to determine whether you can directly wire the coils or an external ignitor/something else is required. Note: coil outputs are among the **least** robust (in terms of tolerating shorts, excessive voltages, etc.) on many hardware variants, including Proteus. Double check your wiring!
@ -25,7 +23,6 @@ Like injectors, all coil outputs are interchangeable. Coil outputs do not need t
Bottom line: as long as the hardware variant has at least as many coil outputs as your engine has cylinders, you will be able to run one coil per cylinder.
## General purpose outputs
The two main types of output are "low side" and "high side."
@ -38,7 +35,6 @@ All general purpose outputs are available for conditional on/off control via bas
All general purpose outputs can be used by the software-PWM system. The software PWM system can provide approximately 1% duty steps at up to 1Khz. (10uS steps, 1ms cycle) Software PWM can operate at different speeds for different outputs - there is a lot of flexibility. (link to more information)
## Specific Outputs
### Idle Motor control
@ -53,17 +49,14 @@ Bipolar stepper motors (generally 4 wire) have two coils that are energized in d
Unipolar stepper valves are not supported by any hardware variants at this time. (May 2020) Chrysler commonly used these.
### Drive by Wire support
Logic exists in the firmware to control a drive by wire throttle body, including using it to idle. A single H-bridge is required to control a single DBW throttle body. Multiple DBW throttle bodies can be simultaneously controlled as long as sufficient H-bridge drivers exist to control them. A drive by wire pedal (Accelerator Pedal Position / APP) is generally used to provide input from the driver. Want to know more? here is a [HOWTO](HOWTO-electronic-throttle-body) you should read.
### Main Relay support
Most hardware variants are set up to provide control over a main relay or auto-shutdown relay. The rusEFI ECU typically has two power feeds. Key-on power is supplied to the ECU in order to power the CPU and logic core of the ECU. High side drivers, H Bridges and other power switches are then powered by a "main relay" that is energized under the control of the ECU. Battery / continuous power is not required for setting retention.
## Specific Function Inputs
Engine position (crank, cam) are specific inputs required. Hall Effect (square wave / magnetic or optical) and Variable Reluctance (VR / inductive) sensors are supported.
@ -77,5 +70,6 @@ The two basic kinds of general-purpose inputs are categorized as "digital" and "
Digital inputs need to have a pull resistor in order to ensure they do not pick up interference and trigger falsely. Most (double check your hardware!) digital inputs are configured with a pull-up resistor. Switches "turn on" the input by connecting it to a ground signal. When the switch is open, the pull-up resistor ensures that the hardware can see the difference. Most hardware implementations have basic protection circuitry to allow inputs to see battery voltage without damage. (double check your hardware!) Most switches in an engine bay such as power steering pressure, AC pressure, brake pressure switch, many PRNDL switches on automatic transmission shifters, oil "idiot" pressure, diagnostic enable, etc. are wired so that the other end connects to ground. This makes digital inputs ideal for monitoring most on-off type switches.
As of May 2020, analog inputs are broken into two basic categories:
1. "Thermistor" inputs have an internal pull up to 5V (varies according to hardware: 2.7k on proteus) to make connecting to sensors like coolant temp and air temperature easier. When using a thermistor input, one terminal of the sensor is connected to the ECU and the "other" end of your sensor should be connected to sensor ground. Note: many "single wire" thermistors used for coolant temperature have metal threads which make contact with the cylinder head/block, providing the "other" terminal without a wire.
2. "Analog Voltage" inputs have a **weak** pull-down to sensor ground (varies according to hardware: 500k on proteus) and are intended for things like MAP or TPS sensors that drive a voltage. On most hardware implementations(double check your hardware!), these inputs are also protected against excessive voltage. The combination of an internal pull-down resistor and built-in protection means that analog inputs can safely double as "active high" inputs, where battery voltage indicates that a switch is high.

View File

@ -1,42 +1,44 @@
# Ignition FAQ
One of the most common themes with rusEFI is people wanting to know more about ignition and what ignition hardware rusEFI can work with.
The topics below are an attempt to cover as many of the common key questions we get asked.
One of the most common themes with rusEFI is people wanting to know more about ignition and what ignition hardware rusEFI can work with.
The topics below are an attempt to cover as many of the common key questions we get asked.
---
## Will rusEFI work with my "XYZ" coils?
In theory rusEFI will work with any coils from nearly any vehicle produced since the daimler motor carriage of 1901.
In reality there are some practicalities that make some coils easier than others.
## Will rusEFI work with my "XYZ" coils?
In theory rusEFI will work with any coils from nearly any vehicle produced since the daimler motor carriage of 1901.
In reality there are some practicalities that make some coils easier than others.
The rusEFI ignition circuits are designed to work at 5v and are not designed to resist the large currents produced when controlling an ignition coil. "Well that's is no good!" I hear you think - actually, it is perfectly fine provided certain conditions are met.
The outputs of the rusEFI hardware are able to operate an ignition coil driver (IGBT) but not the coil directly.
This means that more modern "smart" coils that have an IGBT built into the coil can be driven directly.
This means that more modern "smart" coils that have an IGBT built into the coil can be driven directly.
Older style coils will need an ignition coil driver added between the rusEFI output and the ignition coil.
---
## But why did you not build the ignition control driver (IGBT) into the ECU?
Quite simply for the same reasons modern ECUs do not have them either.
Quite simply for the same reasons modern ECUs do not have them either.
1. It reduces the number of parts needed for the ECU and thus the cost
2. It means the IGBT component is replaceable as they do sometimes fail
3. It moves the electrically noisy high current/voltage components away from the sensitive MCU
4. The shorter the physical length of these (actually quite sensitive) high current/voltage circuits the better; it reduces the total EMF signature of the vehicle, it reduces the weight of the vehicle as the wires can be smaller and most importantly it reduces the losses and means there is more energy available for the spark.
4. The shorter the physical length of these (actually quite sensitive) high current/voltage circuits the better; it reduces the total EMF signature of the vehicle, it reduces the weight of the vehicle as the wires can be smaller and most importantly it reduces the losses and means there is more energy available for the spark.
Most more modern ignition coils are smart for these exact reasons and in order to work with these nice modern, high power low weight COP coils we have a 5v output.
Most more modern ignition coils are smart for these exact reasons and in order to work with these nice modern, high power low weight COP coils we have a 5v output.
---
## You made your point but what coils do I need?
## You made your point but what coils do I need?
That all depends if you want to buy new coils or already have some. In general we would advise to buy "smart coils" but we are also big fans of working with what you have or raiding the junk yard (read this as we are tight).
We have attempted to compile a list of coils [here.](Vault-Of-Ignition-Parts)
---
## Thanks but that really did not help, please tell me exactly what to do?
## Thanks but that really did not help, please tell me exactly what to do?
Ok, this question needs tackling in several parts, please pick the option you need below:
@ -44,18 +46,17 @@ Ok, this question needs tackling in several parts, please pick the option you ne
If you are looking to buy new coils then we would recommend taking a look at the list of Ignition coils that have been tried with rusEFI.
[List of ignition coils](Vault-Of-Ignition-Parts)
In general though we recommend trying to get a tried and tested solution and getting coils that are easily available in your local area.
In general though we recommend trying to get a tried and tested solution and getting coils that are easily available in your local area.
There are lots of tried and tested options that can be found by [**searching the forum.**](https://rusefi.com/forum/search.php)
</details>
<details markdown="1"><summary><u>I have existing coils </u></summary>
<details markdown="1"><summary><u>My coils are newer smart coils</u></summary>
Great, then you can wire them directly to the ECU.
However please take care to check that tht coils you have really do incorporate the ignition driver into the coil.
However please take care to check that tht coils you have really do incorporate the ignition driver into the coil.
Having 3 or 4 connectors pins is not a guarantee that a coils is a "smart" coil.
There is some information on known smart coils and how to work out if you have a smart coil that can be found by [**searching the forum.**](https://rusefi.com/forum/search.php)
@ -63,12 +64,12 @@ There is some information on known smart coils and how to work out if you have a
<details markdown="1"><summary><u>My coils are older dumb coils</u></summary>
Great - same as the smart coils, please double check your coils are actually simple coils without built in ignition modules.
You will need to source an external ignition module to go between the ECU and the coils.
Great - same as the smart coils, please double check your coils are actually simple coils without built in ignition modules.
You will need to source an external ignition module to go between the ECU and the coils.
These are generally quite cheap and can be found on some cars in the junk yard. We also made our own simple module [here](fix link)
There are some tested Ignition modules on the Ignition components list and some can be found by [**searching the forum.**](https://rusefi.com/forum/search.php)
[List of ignition components](Vault-Of-Ignition-Parts)
[List of ignition components](Vault-Of-Ignition-Parts)
</details>
@ -76,29 +77,29 @@ There are some tested Ignition modules on the Ignition components list and some
---
## I need an ignition module, what now?
## I need an ignition module, what now?
Most older coils will need this and some cars have them as standard.
These are not to be confused with the EDIS module that some ECUs require that is a more complex unit that does some of the functions for those simpler ECUs.
Lots of users have already had to tackle this issue so there is a host of options that can be found by [**searching the forum.**](https://rusefi.com/forum/search.php)
There are several available modules some are listed on the Ignition components list.
[List of ignition components](Vault-Of-Ignition-Parts)
[List of ignition components](Vault-Of-Ignition-Parts)
---
## What about adding IGBTs on the board to drive coils directly?
## What about adding IGBTs on the board to drive coils directly?
Actually we already have this in the form of the Prometheus and Hellen boards.
These boards are intended as all in one solutions.
These boards are intended as all in one solutions.
---
## I have a coil with 3/4/5 pins, does this mean it is a smart coil?
Absolutely not.
Some Bosch dumb coils have 3 pins, one is used for ignition misfire monitoring.
Wasted spark coils can share one common pin and then have a single pin for each coil pair. Resulting in a dumb coil with 3-5 pins.
Some wasted spark coils have 2 pins for each coil pair inside the pack.
Some Bosch dumb coils have 3 pins, one is used for ignition misfire monitoring.
Wasted spark coils can share one common pin and then have a single pin for each coil pair. Resulting in a dumb coil with 3-5 pins.
Some wasted spark coils have 2 pins for each coil pair inside the pack.
This means it is vitally necessary to check the requirements of your actual coils by reviewing the wiring diagrams or [**searching the forum.**](https://rusefi.com/forum/search.php)

View File

@ -2,4 +2,4 @@ Q: what does "unsaved changed" indicator mean?
A: Most rusEFI units cannot save calibration into internal storage while engine is running.
If you need to stop the engine without killing power to ECU we have 'bench test'->'stop engine' button to do exactly that.
If you need to stop the engine without killing power to ECU we have 'bench test'->'stop engine' button to do exactly that.

View File

@ -8,7 +8,7 @@ In order to achieve this we have based our current designs around modern high pe
Because the chips are small and SMD they require very skilled assembly with tools that most DIY auto enthusiasts will not have. At a minimum they require an SMD rework station, a microscope, specialist flux and solder pastes and a seriously steady hand to build.
Previously, when we offered ECUs in kit form we found that the majority of issues users were having were related to the difficulty of soldering the small components and a lot of faults and failures were due to short circuits from solder bridges or IC pins that were not completely soldered down.
These kind of issues are not always immediately obvious and have the potential to cause unintended results when the ECU is in use. Obviously for such a safety critical part of the car it has been the cause of some concern.
These kind of issues are not always immediately obvious and have the potential to cause unintended results when the ECU is in use. Obviously for such a safety critical part of the car it has been the cause of some concern.
As such, it is rusEFI policy to only offer fully assembled hardware from one of our team of skilled builders.
Our design files are still free and open source, and you are free to use them in any way you see fit (in accordance with the license), but we recommend you use an SMT assembly service such as JLCPCB or similar to build your ECU.
As such, it is rusEFI policy to only offer fully assembled hardware from one of our team of skilled builders.
Our design files are still free and open source, and you are free to use them in any way you see fit (in accordance with the license), but we recommend you use an SMT assembly service such as JLCPCB or similar to build your ECU.

View File

@ -1 +1 @@
FSIO was replaced by [Lua-Scripting](Lua-Scripting)
FSIO was replaced by [Lua-Scripting](Lua-Scripting)

View File

@ -1,11 +1,10 @@
## technical info
STM32 hard-coded bootloader support CAN firmware update but only on specific hardware pins PB5 PB13 which conflict with SPI hardware pins, weird not great option for us.
[OpenBLT GNU GPL Bootloader](http://www.feaser.com) allows CAN firmware update via any CAN pins. OpenBLT uses it's custom (?) update protocol using two CAN PIDs.
[OpenBLT GNU GPL Bootloader](http://www.feaser.com) allows CAN firmware update via any CAN pins. OpenBLT uses it's custom (?) update protocol using two CAN PIDs.
This was tested using [PCAN-USB Interface](https://www.peak-system.com/PCAN-USB.199.0.html?&L=1) hardware
Open question how popular is PCAN. Looks like [PCAN Firmware](https://github.com/moonglow/pcan_cantact) turns stm32f042 boards into PCAN. Maybe even [Canable](https://canable.io/?)
Open question how popular is PCAN. Looks like [PCAN Firmware](https://github.com/moonglow/pcan_cantact) turns stm32f042 boards into PCAN. Maybe even [Canable](https://canable.io/?)

View File

@ -6,15 +6,14 @@ GM part numbers
13577379 - SENSOR (short tube)
13577394 - SENSOR (long tube)
13577394 - SENSOR (long tube)
13352241 - HARNESS
13352241 - HARNESS
The Pinout is shown below
![](https://i.imgur.com/RGOmlZq.png)
## Sensor Setup
Connect your sensor to a digital input on the ECU. Then, pick the pin in TunerStudio at `Sensors -> Misc sensors -> Flex fuel sensor`.
@ -39,4 +38,4 @@ Coming soon...
## Boost Control
Coming soon...
Coming soon...

View File

@ -13,7 +13,7 @@ Use Trigger #1 N for first sensor signal & Trigger #2 N for second trigger with
Leave Trigger #1 P & Trigger #2 P wires disconnected
## Bench testing Mazda Hall
Test 1.1: Expected resistance between +5v wire and Trigger #1 N wire: 1K (See [Frankenso Default Pinout](Hardware-Frankenso#default-pinout))
Test 1.2: Expected resistance between +5v wire and Trigger #2 N wire: 1K
@ -24,6 +24,4 @@ Test 1.4: ground/unground Trigger #2 N wire, should see event counter in `trigge
Goto board info: [Frankenso VR Input](Hardware-Frankenso#vr-input)
PS: technically MAX9926 is not really needed for Hall processing, two channels on the op-amp would do the job just fine and Frankenso has all the jumpers provisioned to make this happen on channels #9 and #11. See [Frankenso Cam/Crank Input](Hardware-Frankenso#camcrank-input)

View File

@ -11,7 +11,6 @@ Mandatory links:
[Temperature Sensing](Temperature-Sensing)
[1994 Miata Frankenso pinout spreadsheet](https://docs.google.com/spreadsheets/d/1LTvS7I-128Hft9uXHG1JrBxetVjGJDSBkySgVDQ6MGk/edit#gid=0)
First you need the board. Then you need the components. I decided to select and buy the components step-by-step.
![Frankenso 0.5 bare board](Hardware/Frankenso/Frankenso-0.5-naked.jpg)
@ -21,7 +20,7 @@ The latest Frankenso files can be found [here](https://github.com/rusefi/rusefi/
## Helpful files
* [frankenso.csv ](https://github.com/rusefi/rusefi/blob/master/hardware/frankenso/frankenso.csv)
* [frankenso.csv](https://github.com/rusefi/rusefi/blob/master/hardware/frankenso/frankenso.csv)
* [frankenso_PCB.pdf](https://github.com/rusefi/rusefi/blob/master/hardware/frankenso/frankenso_PCB.pdf)
* [frankenso_schematic.pdf](https://github.com/rusefi/rusefi/blob/master/hardware/frankenso/frankenso_schematic.pdf)
@ -41,7 +40,8 @@ I decided to start with the power supply / voltage converter. After the required
The remaining parts I group by the engine components, see the following table:
### Engine components
* Crankshaft position sensor
* Crankshaft position sensor
* Camshaft position sensor
* Mass Air Flow sensor
* Throttle position sensor

View File

@ -1,5 +1,4 @@
![board](installations/MazdaMiataNA6_Frankenso_pnp/Frankenso_MazdaMiataNA6_pnp_053_na6_v0_1.jpg)
[Frankenso Board Technical Details](Hardware-Frankenso#default-pinout)
@ -25,7 +24,6 @@
| | | | | |
-----------------------------------
[Frankenso analog](Hardware-Frankenso#analog-inputs)
| Analog | ECU pin |MCU pin | pull-up | pull-down | |
@ -46,10 +44,8 @@
-----------------------------------
[Frankenso MazdaMiataNA6 pnp](Frankenso-MazdaMiataNA6-pnp)
![board](installations/MazdaMiataNA6_Frankenso_pnp/Frankenso_MazdaMiataNA6_pnp_jumpers.jpg)
![board](installations/MazdaMiataNA6_Frankenso_pnp/Frankenso_MazdaMiataNA6_pnp_jumpers_left.png)

View File

@ -4,6 +4,7 @@ The [Frankenso](Hardware-Frankenso) board was designed to be used on Mazda Miata
## Stage 0
### Everything stock running rusEFI ECU
All stock sensors, no extra wires, no extra hoses - just lift the carpet and plug rusEFI box instead of OEM ECU.
Timing, fuel control based on VAF/MAF, programmable check engine light, A/C compressor control. Online tuning using TunerStudio.
@ -11,12 +12,15 @@ Timing, fuel control based on VAF/MAF, programmable check engine light, A/C comp
SD card logging, LCD screen and joystick because why not.
## Stage 1
Stage 0 + External wide band controller, wide band oxygen sensor, external MAP sensor
## Stage 2
Stage 1 + TPS
Stage 1 + TPS
#### Bench testing options
On NA6 Spark #1 and Spark #3 would audibly click if you use bench Spark Test button.
Because of wasted spark wiring Spark #2 and Spark #4 are not expected to click.
@ -35,13 +39,12 @@ You would really need a wideband sensor. Here is the middle plug pinout to wire
A small flat screw driver and small pliers allow you to move side latches and open the cap.
Insert supplied extra pin wire (pin on this picture) and close the latches. Done!
-----------------------------------
[Frankenso Miata NA6 PNP Technical Details](Frankenso-MazdaMiataNA6-pnp-board-wiring)
### TPS mod
Cars with automatic OEM engine harness use a better OEM TPS sensor.
On vehicles with manual OEM engine harness this TPS mod is recommended.
@ -53,18 +56,15 @@ original manual wiring:
GND is middle pin on OEM manual plug unfortunately
stop light switch:
ground if not depressed
floating if pressed / depressed
-----------------------------------
Fly back diode:
NSR0530HT SOD-323 SMD Schottky Barrier Diodes 30V 500mA 0.5A
![Engine Wiring](OEM-Docs/Mazda/1990_Miata/1990_mazda_miata_us_wiring.png)
[Mazda_Miata_1990](Mazda-Miata-1990)

View File

@ -14,13 +14,12 @@ Test 2.1: Expected ground on Trigger #1 N wire
Test 2.2: Expected ground on Trigger #2 N wire
Test 2.3: take an AA or AAA battery, connect Battery+ to Trigger #1 N wire, touch battery- with Trigger #1 P wire a couple of times.
Test 2.3: take an AA or AAA battery, connect Battery+ to Trigger #1 N wire, touch battery- with Trigger #1 P wire a couple of times.
Then flip the battery and hold Battery+ to Trigger #1 P and touch Battery- with Trigger #1 N wire.
Should see event counter in ''triggerinfo'' go up
Test 2.4: take an AA or AAA battery, connect Battery+ to Trigger #2 N wire, touch battery- with Trigger #2 P wire a couple of times.
Test 2.4: take an AA or AAA battery, connect Battery+ to Trigger #2 N wire, touch battery- with Trigger #2 P wire a couple of times.
Then flip the battery and hold Battery+ to Trigger #2 P and touch Battery- with Trigger #2 N wire.
Should see event counter in ''triggerinfo'' go up
Goto board info: [Frankenso VR Input](Hardware-Frankenso#vr-input)

View File

@ -55,5 +55,5 @@
|HD44780_D4|YES|PA10|PA13|NC|
|||PA8|PA9|NC|
|||PC8|PC9|HIGH DRIVER 5|
|TRIGGER IN 1|| PC6|PC7|HIGH DRIVER 6|SPARK_1|
|TRIGGER IN 1|| PC6|PC7|HIGH DRIVER 6|SPARK_1|
|||GND|GND|

View File

@ -1,4 +1,4 @@
## Fuel injector info
## Fuel injector info
### Fuel injectors
@ -9,4 +9,4 @@ You do **not** need to wire injectors in a particular way. Cylinder #1 (as numb
Bottom line: as long as the hardware variant has at least as many injector outputs as your engine has cylinders, you will be able to run one injector per cylinder.
Info to be updated soon.
Info to be updated soon.

View File

@ -6,45 +6,40 @@ The Air Fuel Ratio (AFR) is controlled by how much fuel is delivered to the cyli
Most people who are installing tune-able ECU's like rusEFI are looking for more power at the track. However your fuel weight advantage is also commonly important. So it is common that an engine will be tuned for peak power when over a certain load, and peak economy when at a cruise load. OEM's are often concerned with minimal environmental impact, so they may tune to a different AFR. Once you have decided on what your AFR strategy is going to be, you'll have to tune rusEFI to deliver that strategy. As well you will probably use a wide band oxygen sensor to measure your AFR and ensure that you are meeting your desired AFR target.
# Supported fuel control algorithms
# Supported fuel control algorithms
rusEFI supports mono, individual/sequential and batched fuel injection using one of the following fuel control algorithms:
1. MAF-based or MAP-based table fuel lookup with interpolation - these algorithms only use the raw sensor output and thus they do not account for ambient air temperature, this is only intended as a minimum viable hardware configuration and we would suggest using the AlphaN, Speed Density or MAF air charge methods instead.
1. MAF-based or MAP-based table fuel lookup with interpolation - these algorithms only use the raw sensor output and thus they do not account for ambient air temperature, this is only intended as a minimum viable hardware configuration and we would suggest using the AlphaN, Speed Density or MAF air charge methods instead.
2. TPS-based table fuel lookup with interpolation (Alpha-N)
3. MAP-based Speed Density model, with fuel auto-tune provided by a fully registered copy of TunerStudio
4. MAF based air charge model that computed the air mass in the cylinder and thus the required fuel quantity from the direct measurement of the mass air flow.
4. MAF based air charge model that computed the air mass in the cylinder and thus the required fuel quantity from the direct measurement of the mass air flow.
Wideband Oxygen Sensor is pretty much a requirement for both manual and auto-tuning.
![General Settings](Fuel/Fuel_Control/general.png)
![General Settings](Fuel/Fuel_Control/general.png)
Within each fuel calculation mode there is coolant temperature correction ("warm-up mode"), battery voltage correction and injector open time ("injector lag") correction.
Commands related to injector lag:
set_flat_injector_lag LAG
set_injector_lag VOLTAGE LAG
set targetvbatt VOLTS
sequential: set injection_mode 1
batch: set injection_mode 2
rusEFI could be used with MAF sensors sending out voltage (like Mazda Miata) or current (like Ford Aspire).
![Table](Fuel/Fuel_Control/table.png)
![Table](Fuel/Fuel_Control/table.png)
(also some content at [this forum thread](http://rusefi.com/forum/viewtopic.php?f=2&t=1124))
## I/O settings
@ -58,23 +53,27 @@ fuelbench 100 200 10a
## Full Formulas
### Alpha-N
TPS-based table fuel lookup with interpolation (Alpha-N)
fuel_squirt_duration = injector_lag_curve_lookup(V_BATT) + warm_up_curve_lookup(COOLANT_TEMPERATURE) * intake_air_correction_curve_lookup(INTAKE_AIR_TEMP) * fuel_table_lookup(RPM, TPS)
fuel_squirt_duration = injector_lag_curve_lookup(V_BATT) + warm_up_curve_lookup(COOLANT_TEMPERATURE) *intake_air_correction_curve_lookup(INTAKE_AIR_TEMP)* fuel_table_lookup(RPM, TPS)
where TPS is the reading at the start of engine cycle
### MAF
MAF-based table fuel lookup with interpolation
fuel_squirt_duration = injector_lag_curve_lookup(V_BATT) + warm_up_curve_lookup(COOLANT_TEMPERATURE) * intake_air_correction_curve_lookup(INTAKE_AIR_TEMP) * fuel_table_lookup(RPM, MAF)
fuel_squirt_duration = injector_lag_curve_lookup(V_BATT) + warm_up_curve_lookup(COOLANT_TEMPERATURE) *intake_air_correction_curve_lookup(INTAKE_AIR_TEMP)* fuel_table_lookup(RPM, MAF)
where MAF is the reading at the start of engine cycle
## Auto tune
Fuel map auto-tune is a process of automatically preparing the configuration table based on the information gathered while vehicle is being operated. At the moment we rely on EFI Analytics Tuner Studio for fuel map (MAF mode) or VE map (Speed Density mode).
Fuel map auto-tune is a process of automatically preparing the configuration table based on the information gathered while vehicle is being operated. At the moment we rely on EFI Analytics Tuner Studio for fuel map (MAF mode) or VE map (Speed Density mode).
## Closed loop correction
Last but not least closed-loop fuel correction dynamically corrects fuel to match target AFR. The better your maps are, the better your actual AFR would be as is. Closed-loop correction is the tool to fix the gap between your maps, our models and reality.
![Fuel PID options](Images/Fuel_pid.png)
@ -85,7 +84,7 @@ Last but not least closed-loop fuel correction dynamically corrects fuel to matc
**(This only applies to gasoline engines; other fuels may react differently)**
In order for the engine to run, the cylinders must be supplied with a combustible mixture of air and fuel. Under static or quasi-static conditions, the basic fuel algorithms take care of that. But under dynamic conditions in the intake area, especially with a quick change in throttle position things are different. Fuel enters the cylinder as a mix of evaporated fuel and droplets on most injected engines. How much evaporated fuel the air can hold depends on several factors, but most importantly on temperature of the air and pressure.
In order for the engine to run, the cylinders must be supplied with a combustible mixture of air and fuel. Under static or quasi-static conditions, the basic fuel algorithms take care of that. But under dynamic conditions in the intake area, especially with a quick change in throttle position things are different. Fuel enters the cylinder as a mix of evaporated fuel and droplets on most injected engines. How much evaporated fuel the air can hold depends on several factors, but most importantly on temperature of the air and pressure.
Pressing down on the gas pedal increases the pressure in the intake manifold which has the effect that it can't hold as much evaporated fuel anymore. As a result, some of the fuel contained in the air deposits on the intake runner walls. This is especially true coming off a strong vacuum such as idle or slow cruise/coast. Now this fuel is not available for combustion, creating a lean condition. This has to be corrected for and that's what acceleration enrichment is mostly about. There are plenty of other effects going on, such as the “puddle of fuel” that is explained under the wall-wetting theory. The main point is: When the pressure in the intake increases rapidly, we create a temporary lean condition.
@ -95,7 +94,7 @@ Of course the opposite is true as well: When lifting off the gas pedal, suddenly
The obvious way to deal with the effects is to adjust the amount of fuel injected based on the increase or decrease in pressure in the intake. When using the speed-density algorithm for fueling, this is fairly easy, as we have the pressure right from the MAP sensor. So basically you take a multiplier to the fuel you would ordinarily inject and base it on the delta in pressure. Small delta means small multiplier and big delta means big multiplier.
#### Explanation of parameters:
#### Explanation of parameters
![Engine Load Parameters](Images/EL_based_parameters.png)
@ -109,7 +108,7 @@ The **Accel Multipier(coeff)** determines how much additional fuel is given. The
**Decel Threshold(roc)** and **Decel Multiplier(coeff)** are the same as the corresponding parameters, but for deceleration enleanment calculation.
#### Taper:
#### Taper
After an increase in MAP there is an immediate need for more fuel. So at least until all cylinders fired once we need to add fuel. But even after that, things usually havent quieted down completely, so for the next events we still need a little more additional fuel and so on. Thats where the taper multiplier comes in.
@ -118,14 +117,15 @@ After an increase in MAP there is an immediate need for more fuel. So at least u
Other corrective factors may be needed in future. For example, at high air-velocities in the intake, meaning high rpm, the effects are not as pronounced, so less enrichment may be needed based on rpm.
Load based enrichment has a few disadvantages. One major disadvantage is that it is just a hair slow. Especially with small throttle movements at high vacuum, the reaction of load based enrichment is not fast enough and cant easily be tuned fine enough. For this we use a different strategy.
### TPS Delta Strategy:
### TPS Delta Strategy
TPS-movement can be used as a predictor of change in MAP. This is equivalent to the accelerator pump on carbureted engines. A slow push on the pedal (small delta) causes very little or no enrichment (dumped fuel), whereas a hefty stomp on the pedal and rapid movement result in a big additional shot of fuel.
TPS-movement can be used as a predictor of change in MAP. This is equivalent to the accelerator pump on carbureted engines. A slow push on the pedal (small delta) causes very little or no enrichment (dumped fuel), whereas a hefty stomp on the pedal and rapid movement result in a big additional shot of fuel.
The advantage of TPS based enrichment is that it reacts very quickly and can react to small amounts of change at or near closed throttle. The disadvantage is that it cant react to changes in MAP that are not caused by a change in throttle position, like a turbo-charger spooling up. Usually a mix of load-based and TPS-based enrichment is employed.
#### Explanation of parameters:
The parameters for TPS-based enrichment have the same meaning as the Engine-Load based parameters. However, there is no multiplier- this is taken care of in a separate table.
#### Explanation of parameters
The parameters for TPS-based enrichment have the same meaning as the Engine-Load based parameters. However, there is no multiplier- this is taken care of in a separate table.
![TPS Parameters](Images/TPS_based_parameters.png)
@ -135,14 +135,15 @@ The parameters for TPS-based enrichment have the same meaning as the Engine-Load
TODO: fix error - we do not add 10% extra fuel, we add 10ms extra fuel! not multiplier any more, just extra fuel
This table defines the amount of additional fuel injected, based on throttle movement. The X-Axis is the “From” TPS and the Y-Axis is the “To” TPS. So if the TPS changes from 0% to 1%, we add 10% fuel. In the above table, if TPS changes from 0 to 3 the firmware adds 17% fuel.
This table defines the amount of additional fuel injected, based on throttle movement. The X-Axis is the “From” TPS and the Y-Axis is the “To” TPS. So if the TPS changes from 0% to 1%, we add 10% fuel. In the above table, if TPS changes from 0 to 3 the firmware adds 17% fuel.
Why so complicated? A throttle-body is not a linear device. Cracking it slightly open from completely closed will cause much more of an increase in MAP than opening it the last percent from 99% to 100%. This table allows to adjust for this degressive behavior.
In future more adjustments may be needed- for example at low rpms a throttle that is just 10% open may essentially be considered fully open, since it does not cause a significant restriction to the low airflow, so opening the throttle from 10% to 100% may have only a negligible effect on MAP. But at high rpms there will still be a significant change in MAP, Even when the position changes from 90% to 100%. A calibration table for this behavior may be required in order to be able to tune enrichment perfectly.
#### To Do:
1. Come up with a strategy on how to deal with cumulative effects. Example: Push down on the gas pedal. What if that process takes longer than one engine rotation?
#### To Do
1. Come up with a strategy on how to deal with cumulative effects. Example: Push down on the gas pedal. What if that process takes longer than one engine rotation?
**Example:**
| Rotation in deg | Throttle Pos | Addtl. fuel current | Addtl. Fuel Taper
@ -155,12 +156,14 @@ Should the fuel from the current change and the previous taper be added up? Or a
2. Deal with warming up. During warmup more additional fuel is needed. We need a setting to adjust for that.
#### Tuning Strategy:
#### Tuning Strategy
The point of enrichment tuning is to keep the engine from bogging down when stepping on the throttle. While it would be great to maintain perfect AFRs while this is happening, that goal is currently not realistic. OEM ECUs dont get it perfect either.
A gasoline engine will run without noticeable bogging at AFRs between 9 and 16, maybe 17 or so. So were shooting to stay within a very wide corridor.
A gasoline engine will run without noticeable bogging at AFRs between 9 and 16, maybe 17 or so. So were shooting to stay within a very wide corridor.
On tuning there seem to be two main conflicting theories:
On tuning there seem to be two main conflicting theories:
- Use mainly Load-based enrichment and fix the little blips that cant be tuned with load-based enrichment by TPS-based.
- Use mainly TPS-based enrichment and add a little bit of load-based enrichment to fix what TPS-based cant take care of.

View File

@ -1,6 +1,6 @@
This is a bundle of all our discussed but no time to do ideas.
- MS DBW extension mode - Simple mode to can interface with a MS unit and provide drive by wire capability.
- MS DBW extension mode - Simple mode to can interface with a MS unit and provide drive by wire capability.
- Piggy back mode - something to help with integration of an MRE or similar in a piggyback config in situations where an OEM ECU must be retained either due to complexity or emissions testing.
- Piggy back mode - something to help with integration of an MRE or similar in a piggyback config in situations where an OEM ECU must be retained either due to complexity or emissions testing.
Perhaps this could include a pass through for the crank sensor and spoofing of some outputs to keep the OEM ecu happy?

View File

@ -7,26 +7,25 @@ TL,DR: we had car [starting/idling - Video](https://youtu.be/JB2RnAJJSOk) using
[Test Mule Wiring Diagram](VolkswagenPassatB6) runs on rusEFI GDI!
Gasoline Direct Injection requires a few additional components on top of port injection:
1) High voltage injection control - we have [rusEFI GDI dev board](MC33816-PT2001-dev-board) which [has clicked injector on a bench - Video](https://www.youtube.com/watch?v=MI0gJ4th9Tg).
2) High pressure fuel pump solenoid control - we have a basic implementation
3) Target fuel pressure logic - we have nothing, but could be as easy as adding a simple table?
![x](OEM-Docs/NXP/pulse-variables.jpg)
![x](OEM-Docs/NXP/WBNR_FTF12_AUT_F0098.pdf_page59.png)
![x](OEM-Docs/NXP/WBNR_FTF12_AUT_F0098.pdf_page72.png)
See also [BMW injector driver](https://rusefi.com/forum/viewtopic.php?f=4&t=1564)
See also [rusEFI injector driver](https://github.com/rusefi/rusefi-hardware/tree/main/GDI-4ch)
TODO: try INJECTOR DRIVE MODULE IDM-2
2013 13 HYUNDAI GENESIS
2013 13 HYUNDAI GENESIS
39175-3C000
2014 Hyundai Azera
39172-3С010

View File

@ -13,19 +13,20 @@
* Metal case
* open and short circuit software PENDING
![x](Hardware/GDI/rusefi-gdi4-rev-a.jpg)
# Changelog
rev C:
* optional six channels
* Low-side 1 output moved to PB8 to free analog input.
rev B:
* rev A with [#101](https://github.com/rusefi/rusefi-hardware/issues/101) fixed
rev A:
* Arrived April 2022
* fully working but [soldering nightmare issue](https://github.com/rusefi/rusefi-hardware/issues/101)
* fully working but [soldering nightmare issue](https://github.com/rusefi/rusefi-hardware/issues/101)

View File

@ -1 +1 @@
Hello GDI 6
Hello GDI 6

View File

@ -2,4 +2,4 @@
mc123 black 73 31387-2014 and grey 80 31387-4009.
https://github.com/rusefi/proteus-gm-e38
<https://github.com/rusefi/proteus-gm-e38>

126
GM-E67.md
View File

@ -6,15 +6,12 @@
![image](https://user-images.githubusercontent.com/48498823/175112155-b0a7f661-4288-444e-8ac2-c9e3f5ee2f2c.png)
https://github.com/rusefi/proteus-gm-e67
<https://github.com/rusefi/proteus-gm-e67>
![x](OEM-Docs/GM/e67-oem.png)
mx123 molex. 56 pin blue 31386-2020. 73 pin black 31387-2014. 73 pin grey 31387-2002
# Alternator
[OEM-Docs/GM/e67-CTSV.Charging.pdf](OEM-Docs/GM/e67-CTSV.Charging.pdf)
@ -27,7 +24,6 @@ mx123 molex. 56 pin blue 31386-2020. 73 pin black 31387-2014. 73 pin grey 31387-
[LS9 crate](OEM-Docs/GM/ls9-crate-engine-control-system-19354338.pdf)
[2007-Impala-5.3](OEM-Docs/GM/e67-2007-Impala-5.3-ECU.pdf)
[2008 XLR V STS 4.4 NA ECU.pdf](OEM-Docs/GM/e67-2008-XLR-V-STS-4.4-NA-ECU.pdf)
@ -40,72 +36,72 @@ mx123 molex. 56 pin blue 31386-2020. 73 pin black 31387-2014. 73 pin grey 31387-
[2013-CTS-6.2-Supercharged-ECU-LSA-ENGINE.pdf](OEM-Docs/GM/e67-2013-CTS-6.2-Supercharged-ECU-LSA-ENGINE.pdf)
Gen IV V8, V6, L4 E67 ECM Stream E67
```
V8 Cars
08 Buick Allure 5.3L
08-09 Buick Lacrosse 5.3L
06-09 Buick Lucerne 4.6L
06-07 Cadillac CTS-V 6.0L
08-15 Cadillac CTS-V 6.2L
06-09 Cadillac DTS 4.6L
06-10 Cadillac STS 4.4L, 4.6L
06-09 Cadillac XLR 4.4L, 4.6L
12-15 Chevrolet Camaro 6.2L
10-13 Chevrolet Corvette ZR1 6.2L
07-09 Chevrolet Impala SS 5.3L
07 Chevrolet Monte Carlo SS 5.3L
13-15 Holden HSV GTS (S/C) 6.2L
07 Pontiac Grand Prix 5.3L
08 Buick Allure 5.3L
08-09 Buick Lacrosse 5.3L
06-09 Buick Lucerne 4.6L
06-07 Cadillac CTS-V 6.0L
08-15 Cadillac CTS-V 6.2L
06-09 Cadillac DTS 4.6L
06-10 Cadillac STS 4.4L, 4.6L
06-09 Cadillac XLR 4.4L, 4.6L
12-15 Chevrolet Camaro 6.2L
10-13 Chevrolet Corvette ZR1 6.2L
07-09 Chevrolet Impala SS 5.3L
07 Chevrolet Monte Carlo SS 5.3L
13-15 Holden HSV GTS (S/C) 6.2L
07 Pontiac Grand Prix 5.3L
V6 Cars
06 Chevrolet Impala 3.9L
09 Chevrolet Impala 3.5L
06 Chevrolet Malibu 3.9L
08-11 Chevrolet Malibu 3.5L, 3.6L (not DI)
12 Chevrolet Malibu LTZ 3.6L
06-08 Chevrolet Monte Carlo 3.9L
07-08 Chevrolet Monte Carlo 3.5L
06-09 Pontiac G6 3.6L, 3.9L (not DI)
07-09 Pontiac G6 3.5L
07-09 Saturn Aura 3.6L (not DI)
06-07 Chevrolet Cobalt 2.4L
06-07 Chevrolet HHR 2.2L, 2.4L
08 Chevrolet Malibu 2.4L
08-09 Chevrolet Malibu Hybrid 2.4L
07 Pontiac G5 GT 2.4L
06-07 Pontiac G6 2.4L
06 Pontiac Pursuit 2.4L
06-07 Pontiac Solstice 2.4L
06-07 Saturn Aura 2.4L
08-09 Saturn Aura Hybrid 2.4L
06-07 Saturn Ion 2.2L, 2.4L
07 Saturn Sky 2.4L
06 Chevrolet Impala 3.9L
09 Chevrolet Impala 3.5L
06 Chevrolet Malibu 3.9L
08-11 Chevrolet Malibu 3.5L, 3.6L (not DI)
12 Chevrolet Malibu LTZ 3.6L
06-08 Chevrolet Monte Carlo 3.9L
07-08 Chevrolet Monte Carlo 3.5L
06-09 Pontiac G6 3.6L, 3.9L (not DI)
07-09 Pontiac G6 3.5L
07-09 Saturn Aura 3.6L (not DI)
06-07 Chevrolet Cobalt 2.4L
06-07 Chevrolet HHR 2.2L, 2.4L
08 Chevrolet Malibu 2.4L
08-09 Chevrolet Malibu Hybrid 2.4L
07 Pontiac G5 GT 2.4L
06-07 Pontiac G6 2.4L
06 Pontiac Pursuit 2.4L
06-07 Pontiac Solstice 2.4L
06-07 Saturn Aura 2.4L
08-09 Saturn Aura Hybrid 2.4L
06-07 Saturn Ion 2.2L, 2.4L
07 Saturn Sky 2.4L
SUVs
08 Buick Enclave 3.6L (not DI)
07 Buick Rainier 5.3L
09 Cadillac Escalade Hybrid 6.0L
07-09 Cadillac SRX 4.6L
08-09 Chevrolet Tahoe Hybrid 6.0L
07-09 Chevrolet Trailblazer (4.2L 08-09 only) 4.2L, 5.3L, 6.0L
07-08 GMC Arcadia 3.6L (not DI)
07-08 GMC Envoy (4.2L 08-09 only) 4.2L, 5.3L, 6.0L
08-09 GMC Yukon Hybrid 6.0L
08-10 Hummer H3 3.7L, 5.3L
08 Isuzu Ascender 3.6L (not DI)
07-09 Saab 9-7X (4.2L 08-09 only) 4.2L, 5.3L
07-08 Saturn Outlook 3.6L (not DI)
07-08 Saturn Vue 2.4L, 3.6L (not DI)
08-09 Saturn Vue Hybrid 2.4L
08 Buick Enclave 3.6L (not DI)
07 Buick Rainier 5.3L
09 Cadillac Escalade Hybrid 6.0L
07-09 Cadillac SRX 4.6L
08-09 Chevrolet Tahoe Hybrid 6.0L
07-09 Chevrolet Trailblazer (4.2L 08-09 only) 4.2L, 5.3L, 6.0L
07-08 GMC Arcadia 3.6L (not DI)
07-08 GMC Envoy (4.2L 08-09 only) 4.2L, 5.3L, 6.0L
08-09 GMC Yukon Hybrid 6.0L
08-10 Hummer H3 3.7L, 5.3L
08 Isuzu Ascender 3.6L (not DI)
07-09 Saab 9-7X (4.2L 08-09 only) 4.2L, 5.3L
07-08 Saturn Outlook 3.6L (not DI)
07-08 Saturn Vue 2.4L, 3.6L (not DI)
08-09 Saturn Vue Hybrid 2.4L
Vans
06-07 Buick Terraza 3.9L
06-08 Chevrolet Uplander 3.9L
06-08 Pontiac Montana 3.9L
06-07 Saturn Relay 3.9L
06-07 Buick Terraza 3.9L
06-08 Chevrolet Uplander 3.9L
06-08 Pontiac Montana 3.9L
06-07 Saturn Relay 3.9L
Trucks
08-12 Chevrolet Colorado 2.9L, 3.7L, 5.3L
08-12 GMC Canyon 2.9L, 3.7L, 5.3L
08-09 Isuzu i-Series 2.9L, 3.7L
08-12 Chevrolet Colorado 2.9L, 3.7L, 5.3L
08-12 GMC Canyon 2.9L, 3.7L, 5.3L
08-09 Isuzu i-Series 2.9L, 3.7L
Non Production Vehicles
07-15 GM Performance Parts E67 ECM 6.0L, 6.2L, 7.0L
07-15 GM Performance Parts E67 ECM 6.0L, 6.2L, 7.0L
```

View File

@ -1,4 +1,4 @@
![project](FAQ/images/gm-map-sensor.jpg)
GM 3 Bar
GM 3 Bar

View File

@ -1,17 +1,16 @@
https://github.com/rusefi/rusefi/wiki/GM-E38
<https://github.com/rusefi/rusefi/wiki/GM-E38>
https://github.com/rusefi/rusefi/wiki/GM-E67
<https://github.com/rusefi/rusefi/wiki/GM-E67>
73+80 e38 ECM, used 07-14 trucks/suv
https://www.maxxecu.com/webhelp/wirings-pluginecu-chevrolet_corvette_c6_e38_ecm.html
<https://www.maxxecu.com/webhelp/wirings-pluginecu-chevrolet_corvette_c6_e38_ecm.html>
https://lt1swap.com/E38%20ECM%20Connector%20Pinouts.htm
<https://lt1swap.com/E38%20ECM%20Connector%20Pinouts.htm>
x+y+z E67 ECM used 2007+ envoy, trailblazer, saab 97x, rainier, impala ss, and others
https://www.lt1swap.com/pcm_identification.htm
<https://www.lt1swap.com/pcm_identification.htm>
E38 and E67 are very comparable in terms of processor speed, OS design, etc.
@ -21,10 +20,9 @@ All PowerPC. There are early (2006-2009) and late (2010-2013) models of each whi
If I had to make an educated guess, GM used the E67 for their GMPP (GM Performance Parts) control packs because they had more of them left over. The E38 was the more popular application by far.
# e67
https://github.com/rusefi/rusefi/wiki/GM-E67
<https://github.com/rusefi/rusefi/wiki/GM-E67>
# e38 2007 Tahoe 5.3
@ -38,5 +36,4 @@ https://github.com/rusefi/rusefi/wiki/GM-E67
![x](OEM-Docs/GM/2007-tahoe-5.3-vin0-5.png)
See also [Gen-5-LS](Gen-5-LS)
See also [Gen-5-LS](Gen-5-LS)

View File

@ -2,4 +2,4 @@ E39
E92
[OEM-Docs/GM/2018-Tahoe-5.3-DI.pdf](OEM-Docs/GM/2018-Tahoe-5.3-DI.pdf)
[OEM-Docs/GM/2018-Tahoe-5.3-DI.pdf](OEM-Docs/GM/2018-Tahoe-5.3-DI.pdf)

View File

@ -1,27 +1,33 @@
## Prerequisites
This section assumes
This section assumes
* You have hardware connected to an engine.
* You can connect to the rusEFI board with a USB cable, or some communications stream.
* You have a PC which is running Tuner Studio, and can connect it to the board
* You have calibrated the sensors like TPS, MAP, crank decoder, etc
* WO2 or tail pipe probe to measure your AFR or HP.
* This tutorial assumes that you want speed density, which is good for peak power applications and it's assumed you are tuning the load tables.
* WO2 or tail pipe probe to measure your AFR or HP.
* This tutorial assumes that you want speed density, which is good for peak power applications and it's assumed you are tuning the load tables.
## Fuel tuning
## Fuel tuning
### Some quick theory
Most people who do the after market ECU are looking to get around the track faster. This section assumes you are looking for fast track times. This commonly means you are looking for minimal fuel consumption when you are maintaining speed or decreasing speed, then max power when you are at higher engine loads. Every person will be differ in what RPM and loads they want power vs fuel efficiency. The below graphic shows how you vary horse power as you change AFR.
Most people who do the after market ECU are looking to get around the track faster. This section assumes you are looking for fast track times. This commonly means you are looking for minimal fuel consumption when you are maintaining speed or decreasing speed, then max power when you are at higher engine loads. Every person will be differ in what RPM and loads they want power vs fuel efficiency. The below graphic shows how you vary horse power as you change AFR.
![Airflow chart](Fuel/Fuel_Control/Airfuel.jpg)
If you have a V8 in a Miata, and you need a lite load perhaps like when approaching a turn, you might have a load around 20%. At this point you have enough power and you want to minimize fuel consumption. Such that you get the most out of the fuel in the tank. Then when you are say 80% or 100% load you want maximum power, as you do not have enough power and you want every Hp you can get. So your tuning table around the 20% would be tuned to have an AFR around 16, while when at 100% load your tune will be tuned for something closer to 11.5 to 12.5, and a variety of AFRs based on your driving habits, race event, personal preferences etc. You will take your best stab to guess what is the most optimal way to get to the finish line fastest.
If you have a V8 in a Miata, and you need a lite load perhaps like when approaching a turn, you might have a load around 20%. At this point you have enough power and you want to minimize fuel consumption. Such that you get the most out of the fuel in the tank. Then when you are say 80% or 100% load you want maximum power, as you do not have enough power and you want every Hp you can get. So your tuning table around the 20% would be tuned to have an AFR around 16, while when at 100% load your tune will be tuned for something closer to 11.5 to 12.5, and a variety of AFRs based on your driving habits, race event, personal preferences etc. You will take your best stab to guess what is the most optimal way to get to the finish line fastest.
However if you have a 4 cyl Miata, then your load under the same conditions as noted above would be about 40% instead of 20%, which means your tuning table will be adjusted differently at different points. As well if you have a 4 cyl Miata with a turbo, you might be at around 30% under these same conditions.
However if you have a 4 cyl Miata, then your load under the same conditions as noted above would be about 40% instead of 20%, which means your tuning table will be adjusted differently at different points. As well if you have a 4 cyl Miata with a turbo, you might be at around 30% under these same conditions.
The tuning tables are mostly for tuning the steady state conditions. There is also a bunch of tuning to deal with the short term dynamic conditions, as well there is tuning for cold engine conditions, etc. Every one has a different tuning preference for a variety of reasons, some good some not so good. This tutorial is going to make some suggestions and keep in mind there are going to be lots of different opinions and different reasons for doing things differently. This tutorial is just a suggestions, and will suggest you first start with a warm engine and tune the load table such that you get the AFR's that you are looking for. Then tune the wall wetting, then tune the cold start conditions.
The tuning tables are mostly for tuning the steady state conditions. There is also a bunch of tuning to deal with the short term dynamic conditions, as well there is tuning for cold engine conditions, etc. Every one has a different tuning preference for a variety of reasons, some good some not so good. This tutorial is going to make some suggestions and keep in mind there are going to be lots of different opinions and different reasons for doing things differently. This tutorial is just a suggestions, and will suggest you first start with a warm engine and tune the load table such that you get the AFR's that you are looking for. Then tune the wall wetting, then tune the cold start conditions.
## Quick version
## Quick version
### Manual tuning via TS
Open TS, and guess at your fuel table, it will probably look similar to the below.
Open TS, and guess at your fuel table, it will probably look similar to the below.
![Target AFR chart](Images/Target-afr.jpg)
@ -29,20 +35,22 @@ Guess at your spark table it will look something similar to this
[insert picture]
Once you have a guess that seems to keep things running, tune 100% by running TS and looking at your WO2 AFR, find a long hill put it in high gear and put your foot the the floor. Keep adjusting the cell to keep your AFT at about 11.5 to 12.5. Doing this on a dyno is better as you don't really care about this range of AFR you care about max HP which is at an unknown AFR. Some how adjust this for full load and keep an eye on your AFT. If you can't get the AFT in the 11.5 to 12.5 range, it likely means your fuel pump is not providing enough fuel. Once you know full load, do this for medium load, low load, etc, until you have a fuel table that you are happy with.
Once you have a guess that seems to keep things running, tune 100% by running TS and looking at your WO2 AFR, find a long hill put it in high gear and put your foot the the floor. Keep adjusting the cell to keep your AFT at about 11.5 to 12.5. Doing this on a dyno is better as you don't really care about this range of AFR you care about max HP which is at an unknown AFR. Some how adjust this for full load and keep an eye on your AFT. If you can't get the AFT in the 11.5 to 12.5 range, it likely means your fuel pump is not providing enough fuel. Once you know full load, do this for medium load, low load, etc, until you have a fuel table that you are happy with.
Once fuel is good, then do the same with spark, again adjust for max power and if possible tune with a knock sensor. If you detect knock stop advancing, and back away by perhaps 2 to 4 degrees. Don't get to close to the absolute limit, as variations in temperature, pressure, carbon build up, etc could change this limit. Once spark is adjusted, go back and re-do fuel, then again back to spark, keep doing this until they are both perfect.
Once fuel is good, then do the same with spark, again adjust for max power and if possible tune with a knock sensor. If you detect knock stop advancing, and back away by perhaps 2 to 4 degrees. Don't get to close to the absolute limit, as variations in temperature, pressure, carbon build up, etc could change this limit. Once spark is adjusted, go back and re-do fuel, then again back to spark, keep doing this until they are both perfect.
### Auto tuning via TS
This requires a resisted version of TS. The general procedure here is similar to the manual tune method, but you set the desired AFR in a table drive it around and TS will adjust the cells to get the AFR that it's commanded to get to. While is is effective, peak power can be obtained via dyno, not by AFR measurements, so this is great for those that don't have a dyno, but if you are looking for peak power, you really need a dyno.
This requires a resisted version of TS. The general procedure here is similar to the manual tune method, but you set the desired AFR in a table drive it around and TS will adjust the cells to get the AFR that it's commanded to get to. While is is effective, peak power can be obtained via dyno, not by AFR measurements, so this is great for those that don't have a dyno, but if you are looking for peak power, you really need a dyno.
### Wall wetting tuning
Once it's operational, you now want to tune the dynamic such that you get faster throttle response.
Once it's operational, you now want to tune the dynamic such that you get faster throttle response.
TBD
### Cold temperature
Once it's working well and reacts well to quick changes in the long pedal, you'll want cold temperature enrichments such that it starts nice and easy.
Once it's working well and reacts well to quick changes in the long pedal, you'll want cold temperature enrichments such that it starts nice and easy.
TBD
see also [Fuel Overview](Fuel-Overview)
@ -56,81 +64,83 @@ see also [this forum thread](http://rusefi.com/forum/viewtopic.php?f=2&t=1124&p=
We all benefit from from sharing the tune, so we would like to suggest you share it. By sharing it others may notice issues with your tune, as well it can function as a starting point for other which you have likely used when you did your tune. By sharing your tune, we can better help people when they are doing their initial configurations. After all it's not like your tune is something you need to protect and can't share, so we would find it nice if you were to share your tune.
Take notes about your setup, preferably including what ever parameters you can provide, like what you have for intake components, exhaust, CAM, pistons, geographical location, ect. We hope to have a web page form that can be used to simplify the process. For now, we hare hoping you can post it in the forum, or e-mail it to a developer.
Take notes about your setup, preferably including what ever parameters you can provide, like what you have for intake components, exhaust, CAM, pistons, geographical location, ect. We hope to have a web page form that can be used to simplify the process. For now, we hare hoping you can post it in the forum, or e-mail it to a developer.
### Post on forum or e-mail the tune
Find the forum sub section where people are sharing tunes, then fill out your posting the with the suggested XYZ format. At the time of writing this most of this tuning sharing stuff new and pre-alpha.
Find the forum sub section where people are sharing tunes, then fill out your posting the with the suggested XYZ format. At the time of writing this most of this tuning sharing stuff new and pre-alpha.
Obviously tuning is a subject too complex to be dealt with exhaustively in a short wiki page. So all we can do here is give you some pointers. At this point we assume that you got the engine to run, or at least sputter using your rusEFI. All your main inputs and outputs needed to make an engine run OK are working.
Obviously tuning is a subject too complex to be dealt with exhaustively in a short wiki page. So all we can do here is give you some pointers. At this point we assume that you got the engine to run, or at least sputter using your rusEFI. All your main inputs and outputs needed to make an engine run OK are working.
This should be at least:
Inputs:
- Trigger Inputs (crank and cam or cams)
- Mass Airflow Meter* or Manifold Air Pressure sensor
- Coolant Temperature
- Intake Air Temperature
- Wideband O2 sensor would be really great to have too
* Trigger Inputs (crank and cam or cams)
* Mass Airflow Meter* or Manifold Air Pressure sensor
* Coolant Temperature
* Intake Air Temperature
* Wideband O2 sensor would be really great to have too
*Using a Mass Airflow Meter assumes that you have a known MAF transfer function for your specific Mass Airflow Meter
Outputs:
- Fuel pump (if controlled by ECU)
- Ignition coil(s)
- Fuel Injectors
- Idle Air Valve or other Idle Air Controller
* Fuel pump (if controlled by ECU)
* Ignition coil(s)
* Fuel Injectors
* Idle Air Valve or other Idle Air Controller
Now we need the engine to idle acceptably, so we can check base timing. If your engine idles fine and your Air-fuel-ratio is within the acceptable range (let's say between 11 and 15 or so), continue to the base timing section.
## Getting the engine to idle
This section assumes that you have a wideband O2 sensor installed and you get readings that make some sort of sense.
This section assumes that you have a wideband O2 sensor installed and you get readings that make some sort of sense.
If your idle is just rough and low, or way too high, or maybe oscillating wildly, the most likely issue is that your idle control is not set right. Open the idle control main dialog under "Idle" -> "Idle Settings" and change the first setting to "Manual" (circled in yellow). This will allow you to manually control your idle setting. Then use the slider (circled in purple) to change your idle rpm.
![Idle_Settings](Images/Initial_Setup_Images/Manual_idle.png)
(If this doesn't do anything, chances are that your idle control has an issue and you need to do some troubleshooting of the hardware of basic settings). Try and get your idle to between 800 and 1200 rpm or so. Make sure it's not fluctuating much.
If you can change your idle to some degree with the idle control, but can't really get it right, chances are either your engine is running with a terrible air-fuel-ratio or possibly your ignition timing is way off.
(If this doesn't do anything, chances are that your idle control has an issue and you need to do some troubleshooting of the hardware of basic settings). Try and get your idle to between 800 and 1200 rpm or so. Make sure it's not fluctuating much.
If you can change your idle to some degree with the idle control, but can't really get it right, chances are either your engine is running with a terrible air-fuel-ratio or possibly your ignition timing is way off.
### Adjusting idle air-fuel-ratio
If your AFR is too high (probably > 15 for gasoline), you need to increase the amount of fuel delivered to the engine. The quick and dirty trick is to tell your ECU that your injectors are smaller than they really are. You can do that under "Fuel" -> "injection Settings" -> "Injector Settings". Alternatively, if your AFR is too low (typically < 10 for gasoline), you need to reduce the amount of fuel delivered. So the quick and dirty trick is to cheat and tell the ECU that the injectors are bigger than they actually are.
If your AFR is too high (probably > 15 for gasoline), you need to increase the amount of fuel delivered to the engine. The quick and dirty trick is to tell your ECU that your injectors are smaller than they really are. You can do that under "Fuel" -> "injection Settings" -> "Injector Settings". Alternatively, if your AFR is too low (typically < 10 for gasoline), you need to reduce the amount of fuel delivered. So the quick and dirty trick is to cheat and tell the ECU that the injectors are bigger than they actually are.
If you use this, make sure to remember to undo it when you are ready to properly tune your fuel table.
You can also adjust the AFR the proper way by adjusting the Volumetric Efficiency. Open the "Fuel" -> "VE" table. The area on the left side, towards the bottom contains the cells that are used in the calculation for how much fuel is to be injected with each cycle when idling.
You can also adjust the AFR the proper way by adjusting the Volumetric Efficiency. Open the "Fuel" -> "VE" table. The area on the left side, towards the bottom contains the cells that are used in the calculation for how much fuel is to be injected with each cycle when idling.
![Idle Cells](Images/Initial_Setup_Images/idle_cells.png)
The x-axis is your rpm, the y-axis is your engine load (typically Manifold Air Pressure or Air Mass). With the engine running, TunerStudio will display a little dot indicating which VE cell your engine is currently running in. Please note that your engine will almost never be using a value precisely in the center of a cell. It will usually interpolate between 4 neighboring cells. It's usually a good idea for rough-tuning to change a whole set of 3x3 cells or so at once. Maybe even 4x4 cells. We can worry abotu fine-tuning later. It is also recommended to use fairly significant changes for rough tuning. If the engine is running lean, add maybe 20%. If it's too rich, lean it out by 20%. Don't be shy. So, if your AFR is too high, let's say 16 , mark the 9 cells around where the engine is running right now and multiply their values by 1.2. you can do this by selecting all 9 cells with your mouse and then hitting the asterisk key on your keyboard. Or, if your AFR is too low, multiply by 0.8 to reduce the amount of fuel injected by 20%.
Don't worry about getting this "just right" for now. All we want is a fairly smooth idle. We don't really care, if it's too rich, or too high. 1200rpm and an AFR of 10.5 works. Just don't run it like that for 5 hours*.
Don't worry about getting this "just right" for now. All we want is a fairly smooth idle. We don't really care, if it's too rich, or too high. 1200rpm and an AFR of 10.5 works. Just don't run it like that for 5 hours*.
(* if you've been running the engine super-rich for extended periods of time, change your oil. You will likely have a substantial amount of fuel that has been washed into your oil now. Fuel is not a great lubricant)
### Adjust base timing
Now that you have a somewhat smooth idle, it's time to adjust your base timing. In order to do this, you must have some sort of timing mark on your crank pulley and some pointer on the engine block. You need to know what the ignition timing is, when the two are lined up.
![Timing Mark](https://www.wikihow.com/images/thumb/5/5a/Adjust-Timing-Step-3-Version-3.jpg/aid1389196-v4-728px-Adjust-Timing-Step-3-Version-3.jpg)
We are working on the assumption that your ECU has a "safe" spark advance tune already uploaded. This would be a tune that allows the engine to run reasonably well with 93 Octane (US super) fuel without excessive detonation (ping) or pre-ignition, but is not yet optimized for hp or economy.
Borrow your neighbor's timing light and hook it up, following the original instructions for the timing light that your neighbor kept carefully locked away and absolutely grease-free for the last 25 years. Chances are, if the engine is running smoothly, you are within +/- 25 degrees of where you are supposed to be.
Borrow your neighbor's timing light and hook it up, following the original instructions for the timing light that your neighbor kept carefully locked away and absolutely grease-free for the last 25 years. Chances are, if the engine is running smoothly, you are within +/- 25 degrees of where you are supposed to be.
In order to get this just right, you need to change your timing from "dynamic" to "fixed". Open "Ignition" -> "Ignition Settings" and set "Timing Mode" to "fixed". Set the "Fixed Tinming(deg)" to whatever the value is when the mark on your crank-pulley lines up.
In order to get this just right, you need to change your timing from "dynamic" to "fixed". Open "Ignition" -> "Ignition Settings" and set "Timing Mode" to "fixed". Set the "Fixed Tinming(deg)" to whatever the value is when the mark on your crank-pulley lines up.
![Fixed Timing](Images/Initial_Setup_Images/Fixed_timing.png)
This is very often 10 degrees or something thereabouts. Now check with your timing light if the marks line up. If they do- great. Your base timing is set. Go ahead and change your timing mode back to "dynamic".
If the marks don't line up, you need to adjust your trigger settings. Go to "Base Engine" -> "Trigger" and adjust "Trigger Angle Offset(deg)" until your timing mark lines up.
Once this is done, don't forget to change your timing mode back to "dynamic" or you will continue to run on fixed timing and give up a ton of horsepower/fuel economy and have some REALLY high exhaust temperatures.
If the marks don't line up, you need to adjust your trigger settings. Go to "Base Engine" -> "Trigger" and adjust "Trigger Angle Offset(deg)" until your timing mark lines up.
Once this is done, don't forget to change your timing mode back to "dynamic" or you will continue to run on fixed timing and give up a ton of horsepower/fuel economy and have some REALLY high exhaust temperatures.
## Time to Tune your VE table with TS AutoTune
This is assuming that you are using the purchase version of TunerStudio with Autotune enabled. If you are planning on tuning your fuel table manually, you probably know what you're doing and don't need to read this wiki.
But before we get to the exciting subject of tuning, there is the slightly more boring subject of target AFRs. These are defined in the aptly named target AFR table. Go to "Fuel" -> "Target AFR" and to start with having a value of 14 in all cells is probably good enough. Or you can go a bit more creative and use something like this.
![Fancy_Target_AFR](Images/Initial_Setup_Images/Target_AFR_table.png)
Let's talk about stoichiometry:
A stoichiometric mixture of fuel and gas is where every oxygen molecule gets fully burned by the fuel and all the fuel is burned by the oxygen. So there's no excess oxygen and no excess fuel. If you have excess oxygen, the mixture is lean. If you have excess fuel, the mixture is rich. With regular gasoline, the stoichiometric mixture is about 14.7. This means you need 14.7 pounds of air to burn 1 pound of fuel. This is what a wideband O2 sensor displays.
Rich is safer than lean. Rich mixtures tend to burn more slowly and "cooler". Lean mixtures burn hotter and faster, so there's more potential damage to your engine from running lean than from running rich. Also lean mixtures are more difficult to ignite than rich mixture. While you may have trouble getting your engine to run nicely at an AFR of 15.7 (one point more than stoichiometric), your engine will run fine all day at an AFR of 13.7.
Let's talk about stoichiometry:
A stoichiometric mixture of fuel and gas is where every oxygen molecule gets fully burned by the fuel and all the fuel is burned by the oxygen. So there's no excess oxygen and no excess fuel. If you have excess oxygen, the mixture is lean. If you have excess fuel, the mixture is rich. With regular gasoline, the stoichiometric mixture is about 14.7. This means you need 14.7 pounds of air to burn 1 pound of fuel. This is what a wideband O2 sensor displays.
Rich is safer than lean. Rich mixtures tend to burn more slowly and "cooler". Lean mixtures burn hotter and faster, so there's more potential damage to your engine from running lean than from running rich. Also lean mixtures are more difficult to ignite than rich mixture. While you may have trouble getting your engine to run nicely at an AFR of 15.7 (one point more than stoichiometric), your engine will run fine all day at an AFR of 13.7.
All this is to say that it's better to start out too rich than to start out too lean.
Now we are assuming at this point that your engine is at least idling and you can hopefully keep it alive if you give it some throttle. Maybe it even runs alright through most of the normal operating range. This would be the case if you received a fuel base map from some engine that is at least similar to your engine.
Autotune will
Now we are assuming at this point that your engine is at least idling and you can hopefully keep it alive if you give it some throttle. Maybe it even runs alright through most of the normal operating range. This would be the case if you received a fuel base map from some engine that is at least similar to your engine.
Autotune will

View File

@ -1,38 +1,37 @@
# How to build the rusEFI firmware from the source files
### The following process is a step-by-step guide to creating the build environment in windows 10+ using Windows Shell for Linux
### The following process is a step-by-step guide to creating the build environment in windows 10+ using Windows Shell for Linux
The best way to build the rusEFI firmware is using a set of tools that run best under linux,
The best way to build the rusEFI firmware is using a set of tools that run best under linux,
1. Install WSL
1. Install WSL
Run the following in an elevated powershell
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
2. Download linux
Download the appx for linux 2004 from here:
Download the appx for linux 2004 from here:
[WSL Install Manual](https://docs.microsoft.com/en-us/windows/wsl/install-manual)
Or type the following into powershell:
cd ubuntu/
Invoke-WebRequest -Uri https://aka.ms/wsl-ubuntu-2004 -OutFile Ubuntu.appx -UseBasicParsing
Invoke-WebRequest -Uri <https://aka.ms/wsl-ubuntu-2004> -OutFile Ubuntu.appx -UseBasicParsing
This command will download the file to the currently active directory.
3. install linux
3. install linux
PS C:\Windows\system32> cd c:/Ubuntu
PS C:\Ubuntu> Add-AppxPackage Ubuntu_2004.2020.424.0_x64.appx
Open start menu and launch linux
Wait for it to complete install and ask for username and password
Wait for it to complete install and ask for username and password
4. check WSL default install
4. check WSL default install
In powershell type:
wslconfig /l
Make sure the ubuntu 2004 is marked as default.
Make sure the ubuntu 2004 is marked as default.
5. get git
sudo apt-get install git
6. clone git
git clone https://github.com/YOUR-REPOSITORY/rusefi.git
git clone <https://github.com/YOUR-REPOSITORY/rusefi.git>
7. Run setup script
cd /home/owner/rusefi/firmware
@ -45,7 +44,7 @@ Download and install as normal, is should detect WSL and ask to install the exte
cd /home/owner/rusefi
code .
10. Hit ctrl-b and run "build unit tests"
10. Hit ctrl-b and run "build unit tests"
Allow to run and complete, it may exit with "multiple targets" error, if so just run it a second time.
11. exit both VScode and ubunu
@ -63,18 +62,15 @@ code .
14. Run the built tool for the specific board in VScode
Ctrl-Shift-B and select the chosen board, this should build the firmware.
- Note submodules are their own thing - the main repo just contains a pointer to where the submodule should be checked out
- Zach method:
- Zach method:
install wsl (already have ubuntu 20.04 on wsl2)
sudo apt update
sudo apt install openjdk-8-jre-headless -y
curl -O https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
curl -O <https://armkeil.blob.core.windows.net/developer/Files/downloads/gnu-rm/9-2020q2/gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2>
tar -xf gcc-arm-none-eabi-9-2020-q2-update-x86_64-linux.tar.bz2
### Without WSL
Less fancy toolchain without WSL works as well https://rusefi.com/forum/viewtopic.php?f=5&t=9
Less fancy toolchain without WSL works as well <https://rusefi.com/forum/viewtopic.php?f=5&t=9>

View File

@ -1,5 +1,4 @@
[AMPSEAL Connector Video Tutorial](https://youtu.be/24bNFu7a9lc)
If your pins are not loose, use nice wire cutters to separate individual terminals from the loom - do not bend break terminals from the loom.

View File

@ -1,5 +1,4 @@
DFU is Device Firmware Update mode - that's a way to update firmware via the same USB cable you use for rusEFI communication. stm32 DFU is part of stm32 factory bootloader and we expect that any rusEFI board could be updated/reset via same USB connector as the one you use to communicate to your rusEFI ECU. Please let us know if that's not the case!
*Auto DFU* is when your rusEFI console switches your rusEFI device into DFU mode
@ -11,7 +10,6 @@ used to program brand new stm32 chips which do not have a running version of rus
On a STM32F4 Discovery, entering DFU mode requires putting a jumper between the pins VDD and BOOT0, then powering or resetting the board.
## Q: I have "STM Device in DFU Mode" in Device Manager and rusEFI console does not update firmware. What's wrong?
A: As of Oct 2021 rusEFI console uses "newer" ST DFU driver. You would need to remove older "STM Device in DFU Mode" driver. Hit "Remove Device" with "Remove Drivers" checkbox. Once you've removed newer "STM Device in DFU Mode" driver re-install DFU driver using rusEFI console driver button. Alternatively install driver manually from drivers\silent_st_drivers\DFU_Driver folder.

Some files were not shown because too many files have changed in this diff Show More