Any updates for the Hydra Ems?
-
- Posts: 69
- Joined: Mon Jan 29, 2018 11:20 pm
Any updates for the Hydra Ems?
I'm just getting started with my racecapture pro3 and I found that your working on some protocols for the Hydra Ems . Do you any information that might help me get started?
Is there any information that I can provide to you on the Hydra to help others?
Thank you
Is there any information that I can provide to you on the Hydra to help others?
Thank you
-
- Posts: 69
- Joined: Mon Jan 29, 2018 11:20 pm
I'm really new to this, so thank you in advance for your patience. It says it uses basic obd2 and gives a few ecu options.brentp wrote:If you have any CAN bus protocol documentation for the unit you're using, we could take a look at it and see if we can make it work.
Thanks!
I'm happy to record something and post it here as well, if that's is on any use.
-
- Posts: 69
- Joined: Mon Jan 29, 2018 11:20 pm
Sorry, I found more information
"Expansion box protocol such as the same used for AIMsport dashboards" is one option and
"The can system supports iso 15765-4 for messages sent at 500kps to 11-bit can identifiers $7df and $7E0 and replies with identifier $7e8 as it is expected for ECU #1 in the system. This is the most common designination for oem engine control systems that support iso 15765-4"
Is my second option.
"Expansion box protocol such as the same used for AIMsport dashboards" is one option and
"The can system supports iso 15765-4 for messages sent at 500kps to 11-bit can identifiers $7df and $7E0 and replies with identifier $7e8 as it is expected for ECU #1 in the system. This is the most common designination for oem engine control systems that support iso 15765-4"
Is my second option.
-
- Posts: 69
- Joined: Mon Jan 29, 2018 11:20 pm
AIM has some documentation on the expansion box level of communication. I have attached it.
- Attachments
-
- HydraEMS_2.7_101_eng.doc.pdfsmall.pdf
- (229.18 KiB) Downloaded 365 times
-
- Posts: 69
- Joined: Mon Jan 29, 2018 11:20 pm
-
- Posts: 69
- Joined: Mon Jan 29, 2018 11:20 pm
Boom.
Hydra CAN diagnostic protocol
Conventions
Values prefixed with a '$' are hexadecimal
Variable identifiers and values are always 2 8-bit bytes (16-bits)
All 2 8-bit byte values are sent and received in big-endian format (MSB first, LSB second)
CAN diagnostic request and reply
CAN bus speed: 500Kbps
CAN ID size: 11-bit
Arbitration ID from dashboard to Hydra: $770
Arbitration ID from Hydra to dashboard: $778
Maximum expected delay between receipt of diagnostic request and transmission of reply: 2ms
Maximum requests handled per second: 760
A Hydra dashboard diagnostic request must be 8 bytes long. The reply packet will also be 8 bytes.
Four variables may be requested in a single disgnostic request. The reply will return 4 2-byte values.
The 2-byte reply values will be returned in the same order as they are given in the request.
For byte variables, the MSB of the 2-byte reply value will always be zero ($00).
The reply value for any undefined variable is $0000.
The same variable may be requested once in a single diagnostic request.
Example:
Request engine speed, engine load, coolant temperature, vehicle speed
Arb ID: $770 Data: $00 $5D $00 $1C $00 $00 $00 $05
Reply from Hydra is 800RPM, 425kPa, 85.23C, 48mph
Arb ID: $778 Data: $03 $20 $10 $9A $69 $3B $00 $30
Variable Designations
Ident Name Size Description
Conversion to units
<Expected range>
$0000 COOLTEMP Word Coolant temperature
Celcius = (X / 256) - 20
<-20..135C>
$0001 LOPLAMBDA Byte Left internal wideband lambda value
Lambda = X / 100
<0.65..2.20 lambda>
$0002 ROPLAMBDA Byte Right internal wideband lambda value
Lambda = X / 100
<0.65..2.20 lambda>
$0003 TPSPERCENT Word Throttle open percentage
% = X / 655.35
<0..100%>
$0004 OPBOOST Byte Engine load effective boost pressure
PSI = X / 3.22
<0..79.2PSI>
$0005 SPVSSROLL Byte Vehicle speed
MPH = X
<0..255MPH>
$0006 KNOCKRAMP Byte Knock ramp
Volts = X / 51
<0..5.1416V>
$0007 AIRTEMP Word Air temperature
Celcius = (X / 256) - 20
<-20..135C>
$0008 INJDUTY Byte Injector duty cycles
% = X / 2.55
<0..100%>
$0009 KNOCKITRIM Byte Ignition knock response retard
Degrees = X / 16
<0..15.0 degrees>
$000A BOOSTCTRL Byte Boost solenoid control value
% = X / 2.55
<0..100%>
$000B LOADDIV Word 3D map y-axis location for load-based maps
Cell index = X >> 8
Offset = (X & $FF) / 256
<Cell 0..31>
$000C RPMDIV Word 3D map x-axis location for engine RPM-based maps
Cell index = X >> 8
Offset = (X & $FF) / 256
<Cell 0..31>
$000D INJINTERVAL Word Effective injection pulse width
ms = 0.00128 * X
<0..45.0ms>
$000E OPVACUUM Byte Engine load effective vacuum
mmHg = 2.9804 * X
<0..760mmHg>
$000F ADVROLLER1 Byte Actual ignition advance value for coil 1
Degrees = (X - 128) / 2
<-64..64 degrees>
$0010 OPEGO1 Byte Raw left narrowband EGO sensor voltage
Volts = X / 255
<0..1V>
$0011 OPEGO2 Byte Raw right narrowband EGO sensor voltage
Volts = X / 255
<0..1V>
$0012 BAROPRES Word Barometric pressure
kPa = X / 512
<60..120kPa>
$0013 AUX1ROLL Byte AUX1 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$0014 AUX2ROLL Byte AUX2 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$0015 AUX3ROLL Byte AUX3 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$0016 AUX4ROLL Byte AUX4 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$0017 AUX5ROLL Byte AUX5 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$0018 AUX6ROLL Byte AUX6 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$0019 PSTARTTRIM Byte Post start enrichment fuel trim percent
% = X / 2
<0..120%>
$001A FOLLOWOUT Byte DBW PID output
% = (X - 128) / 1.28
<-90..90%>
$001B OPBATT Byte Battery voltage
V = 10 + 0.01961 * X
<10..15.1416V>
$001C OPMAP Word Engine load
kPa = X / 10
<0..750KPa>
$001D FUELLEVEL Word Fuel tank level
% = X / 655.35
<0..100%>
$001E HUMIDITY Word Humidity level
% = X / 655.35
<0..100%>
$001F STTLEFT Byte Left module short term trim
% = (X - 128) / 2
<-7.5..7.5%>
$0020 VCTI1OUT Byte Intake VCT left bank PID output
% = (X - 128) / 1.28
<-90..90%>
$0021 VCTI2OUT Byte Intake VCT right bank PID output
% = (X - 128) / 1.28
<-90..90%>
$0022 VCTE1OUT Byte Exhaust VCT left bank PID output
% = (X - 128) / 1.28
<-90..90%>
$0023 VCTE2OUT Byte Exhaust VCT right bank PID output
% = (X - 128) / 1.28
<-90..90%>
$0024 RAWTPS Word Raw TPS value
Volts = X / 13107
<0..5.1416V>
$0025 PRILAMBDA Byte Primary wideband lambda value for tuning
Lambda = X / 100
<0.65..2.20 lambda>
$0026 STTRIGHT Byte Right module short term trim
% = (X - 128) / 2
<-7.5..7.5%>
$0027 GEARLOOKUP Byte Gear
Gear = X + 1
<1..6>
$0028 PORTFTRIM Byte Port air temperature fuel trim percent
% = (X - 128) / 5
<-12.8..12.8%>
$0029 DTPSFTRIM Byte Delta TPS / dt fuel trim percent
% = (X - 128) / 5
<-12.8..12.8%>
$002A GEARFTRIM Byte Gear fuel trim percent
% = (X - 128) / 10
<-6.4..6.4%>
$002B ISCFTRIM Byte ISC position fuel trim percent
% = (X - 128) / 10
<-6.4..6.4%>
$002C COOLFTRIM Byte Coolant temperature fuel trim percent
% = X / 2
<0..120%>
$002D BAROFTRIM Byte Barometric pressure fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$002E CRANKFTRIM Byte Cranking fuel trim
% = X / 2
<0..120%>
$002F LLTTFTRIM Byte Left module long term fuel trim
% = (X - 128) / 2
<-64..64%>
$0030 TPSPUMPLOG Byte Throttle pump and tip-in fuel trim
% = X
<0..248%>
$0031 ACFTRIM Byte AC compressor fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$0032 KNOCKFTRIM Byte Knock response based fuel trim
% = X / 10
<0..24.0%>
$0033 INJBATT Word Battery voltage injector offset
ms = 0.00512 * X
<0..3.00ms>
$0034 ALAGITRIM Byte Anti-lag ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$0035 AUXITRIM Byte Auxiliary ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$0036 GEARITRIM Byte Gear ignition advance trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$0037 COOLITRIM Byte Coolant temperature ignition advance trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$0038 PORTITRIM Byte Port air temperature ignition advance trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$0039 ACITRIM Byte AC compressor engaged ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$003A LSTTITRIM Byte Left module short term fuel trim ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$003B ISCITRIM Byte Idle target error ignition advance trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$003C BAROITRIM Byte Barometric pressure ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$003D VCTI1TARGET Byte Intake VCT left bank target angle
degree = (X - 128) / 2
<-90..90 degrees>
$003E VCTE1TARGET Byte Exhaust VCT left bank target angle
degree = (X - 128) / 2
<-90..90 degrees>
$003F ISCTARGET Byte Idle speed target
RPM = 8 * X
<0..2040RPM>
$0040 ISCOUT Byte ISC PID output value
% = (X - 128) / 1.28
<-90..90%>
$0041 PWM1DUTY Byte PWM MAP 1 interpolated duty
% = X / 2.55
<0..100%>
$0042 PWM2DUTY Byte PWM MAP 2 interpolated duty
% = X / 2.55
<0..100%>
$0043 PWM3DUTY Byte PWM MAP 3 interpolated duty
% = X / 2.55
<0..100%>
$0044 PWM4DUTY Byte PWM MAP 4 interpolated duty
% = X / 2.55
<0..100%>
$0045 PWM5DUTY Byte PWM MAP 5 interpolated duty
% = X / 2.55
<0..100%>
$0046 PWM6DUTY Byte PWM MAP 6 interpolated duty
% = X / 2.55
<0..100%>
$0047 PWM7DUTY Byte PWM MAP 7 interpolated duty
% = X / 2.55
<0..100%>
$0048 PWM8DUTY Byte PWM MAP 8 interpolated duty
% = X / 2.55
<0..100%>
$0049 PWM9DUTY Byte PWM MAP 9 interpolated duty
% = X / 2.55
<0..100%>
$004A PWM10DUTY Byte PWM MAP 10 interpolated duty
% = X / 2.55
<0..100%>
$004B PWM11DUTY Byte PWM MAP 11 interpolated duty
% = X / 2.55
<0..100%>
$004C SEQMODE Byte Injection mode flag
$00 = batch, $FF = sequential
<off..on>
$004D ANTILAGTIM Byte Anti-lag active timer
Seconds = 0.3355 * X
<0..90 seconds>
$004E TURBOTIMER Word Turbo timer
Seconds = X / 286.1
<0..225 seconds>
$004F ELAMBDATARGET Byte Effective closed loop target value
Lambda = X / 100
<0.65..2.20 lambda>
$0050 FFCUTCYCLES Byte Final applied fuel cut cycles
% = X / 2.55
<0..100%>
$0051 FICUTCYCLES Byte Final applied ignition cut cycles
% = X / 2.55
<0..100%>
$0052 BACKUPFLAG Byte Backup ignition advance flag
$00 = not requested, $FF = requested
<not requested..requested>
$0053 ONSECONDS Byte Seconds since unit powered up
seconds = X
<0..59 seconds>
$0054 ONMINUTES Byte Minutes since unit powered up
minutes = X
<0..59 minutes>
$0055 ONHOURS Byte Hours since unit powered up
hours = X
<0..255 hours>
$0056 RUNSECONDS Byte Seconds since engine start
seconds = X
<0..59 seconds>
$0057 RUNMINUTES Byte Minutes since engine start
minutes = X
<0..59 minutes>
$0058 RUNHOURS Byte Hours since engine start
hours = X
<0..255 hours>
$0059 PORTTEMP Word Port temperature
Celcius = (X / 256) - 20
<-20..135C>
$005A PROGMAP Byte Programmed MAP value
kPa = 0.4 * X
<0..102.0kPa>
$005B TPSMAPW Byte TPS:MAP weight value
% = X / 255
<0..100%>
$005C ENGINEVE Byte Engine VE
VE = X / 2
<0..127.5%>
$005D RPM Word Engine speed
RPM = X
<0..13175RPM>
$005E RPMDELTA Word Engine speed delta
RPM/sec = X - 32768
<-7500..8000RPM/s>
$005F ONECRANK Word Time interval per single crank revolution
ms = 0.00512 * X
<0..75.0ms>
$0060 ONEDELTA Word Engine single crank revolution interval delta
us = 0.16 * (X - 32768)
<-4.50ms..4.50ms>
$0061 CYSTSLWH Word Engine revolutions since engine start counter
Rev = X
<0..3840>
$0062 CYSTFSTH Word Engine revolutions since engine start counter
Rev = X / 64
<0..60>
$0063 DECELIMIT Word Deceleration fuel cut lower point
RPM = X
<0..3840>
$0064 UDECELIMIT Word Deceleration fuel cut upper point
RPM = X
<0..3840>
$0065 RPMFLAG Byte Engine speed above decel fuel cut flag
$00 = below cut, $FF = above
<under..over>
$0066 RPMCTSTRIM Word Coolant temperature rev limiter trim
RPM = -X
<0..-3840>
$0067 TPSDIV Word 3D map x-axis location for engine RPM-based maps
Cell index = X >> 8
Offset = (X & $FF) / 256
<Cell 0..31>
$0068 OPENTPS Byte Throttle open flag
$00 = closed, $FF = open
<closed..open>
$0069 PEDALPERCENT Word Pedal open percentage
% = X / 655.35
<0..100%>
$006A RAWPEDAL Word Raw pedal value
Volts = X / 13107
<0..5.1416V>
$006B FDTPSDT Word Throttle derivative (delta TPS / delta time)
%/ms = (X - 32768) / 27500
<-0.80..0.80%/ms>
$006C DTPSFLAG Byte Throttle derivative enrichment operating range flag
$00 = out of range, $FF = in range
<out..in>
$006D DFUELCUT Byte Decel fuel cut flag
$00 = off, $FF = activated
<off..on>
$006E CTSRAW Word Raw coolant temperature sensor value
Volts = X / 13107
<0..5.1416V>
$006F ATSRAW Word Raw air temperature sensor value
Volts = X / 13107
<0..5.1416V>
$0070 CYLPOS Byte Current cyclinder position
Cylinder = X
<1..8>
$0071 INTMAPRAW Word Raw internal map sensor value
Volts = X / 13107
<0..5.1416V>
$0072 MANIKPA Word Filtered intake manifold pressure
kPa = X / 10
<0..750KPa>
$0073 AMBITEMP Word Ambient temperaure
Celcius = (X / 256) - 20
<-20..135C>
$0074 CABINTEMP Word Cabin temperature
Celcius = (X / 256) - 20
<-20..135C>
$0075 ENGBAYTEMP Word Engine bay temperature
Celcius = (X / 256) - 20
<-20..135C>
$0076 INTAKETEMP Word Intake air temperature
Celcius = (X / 256) - 20
<-20..135C>
$0077 PREICTEMP Word Pre-intercooler air temperature
Celcius = (X / 256) - 20
<-20..135C>
$0078 POSTICTEMP Word Post-intercooler air temperature
Celcius = (X / 256) - 20
<-20..135C>
$0079 ACEVAPTEMP Word AC evaporator coil temperature
Celcius = (X / 256) - 20
<-20..135C>
$007A OILTEMP Word Oil temperature
Celcius = (X / 256) - 20
<-20..135C>
$007B FUELTEMP Word Fuel temperature
Celcius = (X / 256) - 20
<-20..135C>
$007C RADOTEMP Word Radiator outlet temperature
Celcius = (X / 256) - 20
<-20..135C>
$007D OILCLRTEMP Word Oil cooler outlet temperature
Celcius = (X / 256) - 20
<-20..135C>
$007E TRNOILTEMP Word Transmission oil temperature
Celcius = (X / 256) - 20
<-20..135C>
$007F FDOILTEMP Word Front differential oil temperature
Celcius = (X / 256) - 20
<-20..130C>
$0080 RDOILTEMP Word Rear differential oil temperature
Celcius = (X / 256) - 20
<-20..135C>
$0081 LBEGTTEMP Word Left bank exhaust gas temperature
Celcius = 0.01953125 * X
<0..1280.0C>
$0082 RBEGTTEMP Word Right bank exhaust gas temperature
Celcius = 0.01953125 * X
<0..1280.0C>
$0083 FUELPRES Word Fuel rail pressure
kPa = X / 51.2
<0..1275.0kPa>
$0084 EXMANPRES Word Exhaust manifold pressure
kPa = X / 85.3
<0..750KPa>
$0085 FTANKPRES Word Fuel tank pressure
KPa = X / 255
<0..248kPa>
$0086 OILPRESS Word Engine oil pressure
kPa = X / 51.2
<0..1275.0kPa>
$0087 TRNOILPRES Word Transmission oil pressure
kPa = X / 51.2
<0..1275.0kPa>
$0088 STEERANGLE Word Steering angle
Degrees = (X - 32768) / 32
<-1000..1000 degrees>
$0089 FAXTORQUE Word Front axle torque
ft/lbs = X / 16
<0..4000 ft/lbs>
$008A RAXTORQUE Word Rear axle torque
ft/lbs = X / 16
<0..4000 ft/lbs>
$008B DELTAVSS Byte Current vehicle speed delta
MPH/sec = X / 8
<0..31MPH/sec>
$008C MAXDELTAVSS Byte Maximum allowed vehicle speed delta
MPH/sec = X / 8
<0..31MPH/sec>
$008D BASEFUEL Word Target injection pulse width
ms = 0.00128 * X
<0..45.0ms>
$008E INJPHASE Byte Injection pulse closing point
BTDC degrees = X - 180
<180 degrees ATDC..75 degrees BTDC>
$008F XCPUVAR2 Byte Left knock sensor voltage
Volts = X / 51
<0..5.1416V>
$0090 XCPUVAR3 Byte Right knock sensor voltage
Volts = X / 51
<0..5.1416V>
$0091 BOOSTERSM Word Boost PID integrator sum
Sum = X - 32768
<-32768..32767>
$0092 BOOSTOUT Byte Boost PID output value
% = (X - 128) / 1.28
<-100..100%>
$0093 BCTHRESHOLD Byte Boost control RPM threshold
RPM = 50 * X
<0..12750RPM>
$0094 BOOSTBASE Byte Base boost target value
PSI = X / 3.22
<0..75.0PSI>
$0095 BOOSTCTST Byte Boost coolant temperature trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$0096 BOOSTPORTT Byte Boost port air temperature trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$0097 BOOSTTPST Byte Boost throttle position trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$0098 BOOSTGEART Byte Boost gear trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$0099 BOOSTKNOCKT Byte Boost knock response trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$009A BOOSTAUXT Byte Boost and maximum boost auxiliary trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$009B BOOSTPOTT Byte Boost auxiliary potentiometer trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$009C BOOSTARGET Byte Final boost target value
PSI = X / 3.22
<0..75.0PSI>
$009D KNKTHRESHOLD Byte Knock threshold voltage
Volts = X / 51
<0..5V>
$009E MAXBOOST Byte Maximum boost limit
PSI = X / 3.22
<0..75.0PSI>
$009F OVERBOOST Byte Intake manifold is above maximum boost limit
$00 = no, $FF = yes
<below..above>
$00A0 NORMALADV Byte Standard base ignition advance
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A1 BACKUPADV Byte Backup base ignition advance
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A2 LAUNCHITRIM Byte Launch ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A3 FTEMPITRIM Byte Fuel temperature ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A4 HUMDITRIM Byte Humidity level ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A5 LEGTITRIM Byte Left bank EGT ignition advance trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A6 REGTITRIM Byte Right bank EGT ignition advance trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A7 RSTTITRIM Byte Right module short term fuel trim ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A8 IGADVULIMIT Byte Ignition advance upper limit
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A9 IGADVLLIMIT Byte Ignition advance lower limit
Degrees = (X - 128) / 2
<-64..64 degrees>
$00AA ADVROLLER2 Byte Actual ignition advance value for coil 2
Degrees = (X - 128) / 2
<-64..64 degrees>
$00AB ADVROLLER3 Byte Actual ignition advance value for coil 3
Degrees = (X - 128) / 2
<-64..64 degrees>
$00AC ADVROLLER4 Byte Actual ignition advance value for coil 4
Degrees = (X - 128) / 2
<-64..64 degrees>
$00AD ADVROLLER5 Byte Actual ignition advance value for coil 5
Degrees = (X - 128) / 2
<-64..64 degrees>
$00AE ADVROLLER6 Byte Actual ignition advance value for coil 6
Degrees = (X - 128) / 2
<-64..64 degrees>
$00AF ADVROLLER7 Byte Actual ignition advance value for coil 7
Degrees = (X - 128) / 2
<-64..64 degrees>
$00B0 ADVROLLER8 Byte Actual ignition advance value for coil 8
Degrees = (X - 128) / 2
<-64..64 degrees>
$00B1 DWELLBASE Byte Voltage-based ignition dwell value
ms = 0.04 * X
<0..10.50ms>
$00B2 DWELLTRIM Byte Engine speed-based ignition dwell trim
ms = 0.04 * X
<0..10.50ms>
$00B3 IGNDWELL Byte Delivered ignition dwell value
ms = 0.04 * X
<0..10.50ms>
$00B4 ACFLAG Byte AC request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00B5 LAUNCHFLAG Byte Launch request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00B6 ALAGFLAG Byte Anti-lag request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00B7 AUXFLAG Byte Auxiliary request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00B8 VALETFLAG Byte Valet request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00B9 FLATSHFLAG Byte Flat shift request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00BA TRACTIONFLAG Byte Traction request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00BB DIAGREQFLAG Byte Diagnostic request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00BC IMMOBILFLAG Byte Immobilizer request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00BD DATALOGFLAG Byte Datalog request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00BE OILPSWFLAG Byte Oil pressure request flag
$00 = no pressure, $FF = pressure
<no pressure..pressure>
$00BF TRINARYFLAG Byte AC Trinary switch request flag
$00 = pressure too high or low, $FF = pressure good
<not good..good>
$00C0 SPEEDFLAG Byte Speed limiter request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00C1 PSLOADFLAG Byte Power steering load request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00C2 DRIVEFLAG Byte Vehicle moving flag
$00 = stopped, $FF = moving
<stopped..moving>
$00C3 CELON Byte Check engine light switch
$00 = off, $FF = on
<off..on>
$00C4 FUELPUMP Byte Fuel pump switch
$00 = off, $FF = on
<off..on>
$00C5 ACCLUTCH Byte AC compressor clutch switch
$00 = off, $FF = on
<off..on>
$00C6 TTIMERON Byte Turbo timer relay switch
$00 = off, $FF = on
<off..on>
$00C7 THFANON Byte Thermo fan switch
$00 = off, $FF = on
<off..on>
$00C8 LINUEGORL Byte Simulated left internal wideband sensor voltage
Volts = X / 255
<0..1V>
$00C9 RINUEGORL Byte Simulated right internal wideband sensor voltage
Volts = X / 255
<0..1V>
$00CA LEXUEGORL Byte Simulated left external wideband sensor voltage
Volts = X / 255
<0..1V>
$00CB REXUEGORL Byte Simulated right external wideband sensor voltage
Volts = X / 255
<0..1V>
$00CC LEXLAMBDA Byte Left external wideband lambda value
Lambda = X / 100
<0.65..2.20 lambda>
$00CD REXLAMBDA Byte Right external wideband lambda value
Lambda = X / 100
<0.65..2.20 lambda>
$00CE AIMLAMBDA Word Primary lambda sensor value
Lambda = X / 1000
<0.65..2.20 lambda>
$00CF EGO1TYPE Byte Type of operation on the left module
$00 = narrowband, $FF = wide
<narrowband..wideband>
$00D0 EGO2TYPE Byte Type of operation on the right module
$00 = narrowband, $FF = wide
<narrowband..wideband>
$00D1 LOOPFLAG Byte Closed loop fuel operational state
$00 = Open, $FF = Closed
<open..closed>
$00D2 RMWLOOPTARGET Byte Right module closed loop target value
Lambda = X / 100
<0.65..2.20 lambda>
$00D3 STOICHFLAG Byte Closed loop AFR target is stoichiometry
$00 = not stoich, $FF = stoich
<not stoich..stoich>
$00D4 NCLPTERM Byte Closed loop narrowband P-term value
% = X / 2.55
<0..100%>
$00D5 NCLITERM Byte Closed loop narrowband I-term value
% = X / 2.55
<0..100%>
$00D6 WCLPTERM Byte Closed loop wideband P-term value
% = X / 2.55
<0..100%>
$00D7 WCLITERM Byte Closed loop wideband I-term value
% = X / 2.55
<0..100%>
$00D8 LMDIRECTION Byte Left module trim direction flag
$00 = richening, $FF = leaning
<richening..leaning>
$00D9 RMDIRECTION Byte Right module trim direction flag
$00 = richening, $FF = leaning
<richening..leaning>
$00DA AUX7ROLL Byte AUX7 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00DB AUX8ROLL Byte AUX8 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00DC AUX9ROLL Byte AUX9 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00DD AUX10ROLL Byte AUX10 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00DE AUX11ROLL Byte AUX11 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00DF AUX12ROLL Byte AUX12 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00E0 AUX13ROLL Byte AUX13 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00E1 AUX14ROLL Byte AUX14 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00E2 AUX15ROLL Byte AUX15 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00E3 AUX16ROLL Byte AUX16 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00E4 ALTTARGET Byte Alternator target charging voltage
V = 10 + 0.01961 * X
<10..15.1416V>
$00E5 ALTSENSING Byte External alternator sensing voltage
V = 10 + 0.01961 * X
<10..15.1416V>
$00E6 ALTSM Word Alternator control PID integrator sum
Sum = X - 32768
<-32768..32767>
$00E7 ALTOUT Byte Alternator PID output value
% = (X - 128) / 1.28
<-100..100%>
$00E8 ALTCTRL Byte Alternator control output value
% = X / 2.55
<0..100%>
$00E9 VCTI1ERSM Word Intake VCT left bank PID integration sum
Sum = X - 32768
<-32768..32767>
$00EA VCTI1FEED Byte Intake VCT left bank actual angle
degree = (X - 128) / 2
<-90..90 degrees>
$00EB VCTI2ERSM Word Intake VCT right bank PID integration sum
Sum = X - 32768
<-32768..32767>
$00EC VCTI2TARGET Byte Intake VCT right bank target angle
degree = (X - 128) / 2
<-90..90 degrees>
$00ED VCTI2FEED Byte Intake VCT right bank actual angle
degree = (X - 128) / 2
<-90..90 degrees>
$00EE VCTE1ERSM Word Exhaust VCT left bank PID integration sum
Sum = X - 32768
<-32768..32767>
$00EF VCTE1FEED Byte Exhaust VCT left bank actual angle
degree = (X - 128) / 2
<-90..90 degrees>
$00F0 VCTE2ERSM Word Exhaust VCT right bank PID integration sum
Sum = X - 32768
<-32768..32767>
$00F1 VCTE2TARGET Byte Exhaust VCT right bank target angle
degree = (X - 128) / 2
<-90..90 degrees>
$00F2 VCTE2FEED Byte Exhaust VCT right bank actual angle
degree = (X - 128) / 2
<-90..90 degrees>
$00F3 IDXEDFUEL Word Indexed fuel (base + aux + anti-lag)
ms = 0.00128 * X
<0..45.0ms>
$00F4 AUXFTRIM Byte Auxiliary fuel adjustment
% = (X - 128) / 2
<-64..64%>
$00F5 ALAGFTRIM Byte Anti-lag fuel adjustment
% = (X - 128) / 2
<-64..64%>
$00F6 DYNFTRIM Byte Delta engine speed fuel trim percent
% = (X - 128) / 5
<-12.8..12.8%>
$00F7 COMPFTRIM Byte Boost compensation fuel multiplier
multiplier = 0.04 * X
<0..10.50>
$00F8 FILMTRIML Byte Film mass fuel correction
% = X / 10
<0..24.0%>
$00F9 PDFCFTRIM Byte Post decel fuel cut trim
% = X / 10
<0..24.0%>
$00FA FUELPFTRIM Byte Fuel rail pressure fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$00FB HUMDFTRIM Byte Humidity level fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$00FC LEGTFTRIM Byte Left bank EGT fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$00FD REGTFTRIM Byte Right bank EGT fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$00FE FTEMPFTRIM Byte Fuel temperature fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$00FF RLTTFTRIM Byte Right module long term fuel trim
% = (X - 128) / 2
<-64..64%>
$0100 ALAGTIMFLAG Byte Anti-lag time expired flag
$00 = not expired, $FF = expired
<not expired..expired>
$0101 AAFCUTCYCLES Byte Anti-lag active fuel cut cycles
% = X / 2.55
<0..100%>
$0102 AIFCUTCYCLES Byte Anti-lag inactive fuel cut cycles
% = X / 2.55
<0..100%>
$0103 LFCUTCYCLES Byte Launch fuel cut cycles
% = X / 2.55
<0..100%>
$0104 SFCUTCYCLES Byte Flat shift fuel cut cycles
% = X / 2.55
<0..100%>
$0105 TFCUTCYCLES Byte Traction fuel cut cycles
% = X / 2.55
<0..100%>
$0106 AICUTCYCLES Byte Anti-lag ignition cut cycles
% = X / 2.55
<0..100%>
$0107 LICUTCYCLES Byte Launch ignition cut cycles
% = X / 2.55
<0..100%>
$0108 SICUTCYCLES Byte Flat shift ignition cut cycles
% = X / 2.55
<0..100%>
$0109 TICUTCYCLES Byte Traction ignition cut cycles
% = X / 2.55
<0..100%>
$010A NOTIDLE Byte Not idling flag
$00 = idling, $FF = running
<idling..running>
$010B ISCCTSTARGET Byte Base coolant temperature based idle speed target
RPM = 8 * X
<0..2040RPM>
$010C ISCACTRIM Byte AC idle speed target trim
RPM = 8 * X
<0..2040RPM>
$010D ISCVMTRIM Byte ISC vehicle moving trim
RPM = 8 * X
<0..2040RPM>
$010E ISCERSM Word ISC PID integration sum
Sum = X - 32768
<-32768..32768>
$010F ISCPWMDUTY Byte ISC PWM valve output duty cycle
% = X / 2.55
<0..100%>
$0110 FOLLOWERSM Word DBW PID integration sum
Sum = X - 32768
<-32768..32768>
$0111 FOLLOWTARGET Byte DBW target value
% = X / 2.55
<0..100%>
$0112 FOLLOWFEED Byte DBW actual value
% = X / 2.55
<0..100%>
$0113 INJ1DUTY Word Injector 1 PWM output duty cycle
% = X / 655.36
<0..100%>
$0114 INJ2DUTY Word Injector 2 PWM output duty cycle
% = X / 655.36
<0..100%>
$0115 INJ3DUTY Word Injector 3 PWM output duty cycle
% = X / 655.36
<0..100%>
$0116 INJ4DUTY Word Injector 4 PWM output duty cycle
% = X / 655.36
<0..100%>
$0117 INJ5DUTY Word Injector 5 PWM output duty cycle
% = X / 655.36
<0..100%>
$0118 INJ6DUTY Word Injector 6 PWM output duty cycle
% = X / 655.36
<0..100%>
$0119 INJ7DUTY Word Injector 7 PWM output duty cycle
% = X / 655.36
<0..100%>
$011A INJ8DUTY Word Injector 8 PWM output duty cycle
% = X / 655.36
<0..100%>
$011B VCTI1CTRL Byte Intake VCT left bank solenoid control value
% = X / 2.55
<0..100%>
$011C VCTI2CTRL Byte Intake VCT right bank solenoid control value
% = X / 2.55
<0..100%>
$011D VCTE1CTRL Byte Exhaust VCT left bank solenoid control value
% = X / 2.55
<0..100%>
$011E VCTE2CTRL Byte Exhaust VCT right bank solenoid control value
% = X / 2.55
<0..100%>
$011F HFCUTCYCLES Byte Hard rev limit fuel cut cycles
% = X / 2.55
<0..100%>
$0120 SLFCUTCYCLES Byte Soft rev limit fuel cut cycles
% = X / 2.55
<0..100%>
$0121 DFCUTCYCLES Byte Decel fuel cut cycles
% = X / 2.55
<0..100%>
$0122 VFCUTCYCLES Byte Valet fuel cut cycles
% = X / 2.55
<0..100%>
$0123 VSFCUTCYCLES Byte Vehicle speed limiter fuel cut cycles
% = X / 2.55
<0..100%>
$0124 ISCPSTRIM Byte Power steering load idle speed target trim
RPM = 8 * X
<0..2040RPM>
$0125 ISCCYTRIM Byte Post start idle speed target trim
RPM = 8 * X
<0..2040RPM>
$0126 BA08VALUE Word Pin BA08 RPN expression value
X = X
<0..65535>
$0127 BB07VALUE Word Pin BB07 RPN expression value
X = X
<0..65535>
$0128 BA05VALUE Word Pin BA05 RPN expression value
X = X
<0..65535>
$0129 BA09VALUE Word Pin BA09 RPN expression value
X = X
<0..65535>
$012A GB04VALUE Word Pin GB04 RPN expression value
X = X
<0..65535>
$012B GB03VALUE Word Pin GB03 RPN expression value
X = X
<0..65535>
$012C IF01VALUE Word Internal feedback channel one RPN expression value
X = X
<0..65535>
$012D BA01VALUE Word Pin BA01 RPN expression value
X = X
<0..65535>
$012E BA02VALUE Word Pin BA02 RPN expression value
X = X
<0..65535>
$012F BA03VALUE Word Pin BA03 RPN expression value
X = X
<0..65535>
$0130 BA04VALUE Word Pin BA04 RPN expression value
X = X
<0..65535>
$0131 BA11VALUE Word Pin BA11 RPN expression value
X = X
<0..65535>
$0132 GB06VALUE Word Pin GB06 RPN expression value
X = X
<0..65535>
$0133 GB05VALUE Word Pin GB05 RPN expression value
X = X
<0..65535>
$0134 IF02VALUE Word Internal feedback channel two RPN expression value
X = X
<0..65535>
$0135 BA06VALUE Word Pin BA06 RPN expression value
X = X
<0..65535>
$0136 INJ1VALUE Word Injector one RPN expression value
X = X
<0..65535>
$0137 INJ2VALUE Word Injector two RPN expression value
X = X
<0..65535>
$0138 INJ3VALUE Word Injector three RPN expression value
X = X
<0..65535>
$0139 INJ4VALUE Word Injector four RPN expression value
X = X
<0..65535>
$013A INJ5VALUE Word Injector five RPN expression value
X = X
<0..65535>
$013B INJ6VALUE Word Injector six RPN expression value
X = X
<0..65535>
$013C INJ7VALUE Word Injector seven RPN expression value
X = X
<0..65535>
$013D INJ8VALUE Word Injector eight RPN expression value
X = X
<0..65535>
$013E LAUNCHEFF Byte Launch control is in effect flag
$00 = not in effect, $FF = in effect
<not in effect..in effect>
$013F BC06VALUE Word Pin BC06 RPN expression value
X = X
<0..65535>
$0140 BC07VALUE Word Pin BC07 RPN expression value
X = X
<0..65535>
$0141 BC08VALUE Word Pin BC08 RPN expression value
X = X
<0..65535>
$0142 BC09VALUE Word Pin BC09 RPN expression value
X = X
<0..65535>
$0143 STEPPERA Byte Stepper control value A
$00 = low, $FF = high
<low..high>
$0144 STEPPERB Byte Stepper control value B
$00 = low, $FF = high
<low..high>
$0145 STEPPERC Byte Stepper control value C
$00 = low, $FF = high
<low..high>
$0146 STEPPERD Byte Stepper control value D
$00 = low, $FF = high
<low..high>
$0147 EXKNOCKCOUNT Byte Excessive knock events counter
Count = X
<0..255>
$0148 LMWLOOPTARGET Byte Left module closed loop target value
Lambda = X / 100
<0.65..2.15 lambda>
$0149 ETHANOLMIX Word Ethanol fuel mixture
% = X / 655.35
<0..100%>
$014A FLEXFTRIM Byte Flex fuel fuel adjustment
% = (X - 128) / 2
<-64..64%>
$014B FLEXITRIM Byte Flex fuel ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$014C BOOSTFLEXT Byte Boost and maximum boost flex fuel trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$014D BATTTEMP Word Battery temperature
Celcius = (X / 256) - 20
<-20..135C>
$014E MINBSTDUTY Byte Minimum boost solenoid control value
% = X / 2.55
<0..100%>
$014F MAXBSTDUTY Byte Maximum boost solenoid control value
% = X / 2.55
<0..100%>
$0150 LRWHEELSPD Byte Left rear wheel speed
MPH = X
<0..255MPH>
$0151 RRWHEELSPD Byte Right rear wheel speed
MPH = X
<0..255MPH>
$0152 LFWHEELSPD Byte Left front wheel speed
MPH = X
<0..255MPH>
$0153 RFWHEELSPD Byte Right front wheel speed
MPH = X
<0..255MPH>
$0154 ISCMINDUTY Byte Minimum ISC PWM valve output duty cycle
% = X / 2.55
<0..100%>
$0155 ISCMAXDUTY Byte Maximum ISC PWM valve output duty cycle
% = X / 2.55
<0..100%>
$0156 ACFANON Byte AC fan switch
$00 = off, $FF = on
<off..on>
$0157 VARPERF Byte User selectable performance level
X = X
<0..255>
$0158 GDIPHASE Byte Direct injection pulse starting point
BTDC degrees = X - 180
<180 degrees ATDC..75 degrees BTDC>
$0159 MAXDIRINJ Byte Maximum direct injection pulse width
ms = 0.04096 * X
<0..10.45ms>
$015A GDIINTERVAL Word Direct injection pulse width
ms = 0.00512 * X
<0..10.45ms>
$015B GDIFPRES Word Direct injection fuel rail pressure
MPa = X / 1706.6667
<0..38.25MPa>
$015C GDIOFFSET Word Fuel pressure direct injector offset
ms = 0.00512 * X
<0..3.00ms>
$015D GDIFLOWRATE Word Direct injector effective flow rate
cc/min = 0.05859375 * X
<0..3840cc/min>
$015E PFIINTERVAL Word Port injection pulse width
ms = 0.00512 * X
<0..45.0ms>
$015F GDITARGET Byte Direct injection fuel rail target pressure
MPa = 0.51 * X
<0..38.25MPa>
$0160 GDISM Word Direct injection fuel pump control PID integrator sum
Sum = X - 32768
<-32768..32767>
$0161 GDIOUT Byte Direct injection fuel pump PID output value
% = (X - 128) / 1.28
<-90..90%>
$0162 GDICTRL Byte Direct injection fuel pump control output value
% = X / 2.55
<0..100%>
$0163 GDIBASEPW Word Direct injection fuel pump base pulse width
ms = 0.00512 * X
<0..12.0ms>
$0164 GDIPUMPPW Word Direct injection fuel pump actual pulse width
ms = 0.00512 * X
<0..12.0ms>
$0165 OPENPPS Byte Pedal open flag
$00 = closed, $FF = open
<closed..open>
$0166 WSPINFLAG Byte Traction control engaged flag
$00 = off, $FF = on
<off..on>
$0167 BATTCURR Word Battery current
Amps = (X - 32768) / 256
<-120A..120A>
$0168 ALTCURR Word Alternator current
Amps = (X - 32768) / 256
<-120A..120A>
$0169 ISCERR Byte Idle speed target error
RPM = 8 * (X - 128)
<-1000..1000RPM>
$016A CALCFUEL Word Base injection pulse width
ms = 0.00128 * X
<0..45.0ms>
Hydra CAN diagnostic protocol
Conventions
Values prefixed with a '$' are hexadecimal
Variable identifiers and values are always 2 8-bit bytes (16-bits)
All 2 8-bit byte values are sent and received in big-endian format (MSB first, LSB second)
CAN diagnostic request and reply
CAN bus speed: 500Kbps
CAN ID size: 11-bit
Arbitration ID from dashboard to Hydra: $770
Arbitration ID from Hydra to dashboard: $778
Maximum expected delay between receipt of diagnostic request and transmission of reply: 2ms
Maximum requests handled per second: 760
A Hydra dashboard diagnostic request must be 8 bytes long. The reply packet will also be 8 bytes.
Four variables may be requested in a single disgnostic request. The reply will return 4 2-byte values.
The 2-byte reply values will be returned in the same order as they are given in the request.
For byte variables, the MSB of the 2-byte reply value will always be zero ($00).
The reply value for any undefined variable is $0000.
The same variable may be requested once in a single diagnostic request.
Example:
Request engine speed, engine load, coolant temperature, vehicle speed
Arb ID: $770 Data: $00 $5D $00 $1C $00 $00 $00 $05
Reply from Hydra is 800RPM, 425kPa, 85.23C, 48mph
Arb ID: $778 Data: $03 $20 $10 $9A $69 $3B $00 $30
Variable Designations
Ident Name Size Description
Conversion to units
<Expected range>
$0000 COOLTEMP Word Coolant temperature
Celcius = (X / 256) - 20
<-20..135C>
$0001 LOPLAMBDA Byte Left internal wideband lambda value
Lambda = X / 100
<0.65..2.20 lambda>
$0002 ROPLAMBDA Byte Right internal wideband lambda value
Lambda = X / 100
<0.65..2.20 lambda>
$0003 TPSPERCENT Word Throttle open percentage
% = X / 655.35
<0..100%>
$0004 OPBOOST Byte Engine load effective boost pressure
PSI = X / 3.22
<0..79.2PSI>
$0005 SPVSSROLL Byte Vehicle speed
MPH = X
<0..255MPH>
$0006 KNOCKRAMP Byte Knock ramp
Volts = X / 51
<0..5.1416V>
$0007 AIRTEMP Word Air temperature
Celcius = (X / 256) - 20
<-20..135C>
$0008 INJDUTY Byte Injector duty cycles
% = X / 2.55
<0..100%>
$0009 KNOCKITRIM Byte Ignition knock response retard
Degrees = X / 16
<0..15.0 degrees>
$000A BOOSTCTRL Byte Boost solenoid control value
% = X / 2.55
<0..100%>
$000B LOADDIV Word 3D map y-axis location for load-based maps
Cell index = X >> 8
Offset = (X & $FF) / 256
<Cell 0..31>
$000C RPMDIV Word 3D map x-axis location for engine RPM-based maps
Cell index = X >> 8
Offset = (X & $FF) / 256
<Cell 0..31>
$000D INJINTERVAL Word Effective injection pulse width
ms = 0.00128 * X
<0..45.0ms>
$000E OPVACUUM Byte Engine load effective vacuum
mmHg = 2.9804 * X
<0..760mmHg>
$000F ADVROLLER1 Byte Actual ignition advance value for coil 1
Degrees = (X - 128) / 2
<-64..64 degrees>
$0010 OPEGO1 Byte Raw left narrowband EGO sensor voltage
Volts = X / 255
<0..1V>
$0011 OPEGO2 Byte Raw right narrowband EGO sensor voltage
Volts = X / 255
<0..1V>
$0012 BAROPRES Word Barometric pressure
kPa = X / 512
<60..120kPa>
$0013 AUX1ROLL Byte AUX1 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$0014 AUX2ROLL Byte AUX2 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$0015 AUX3ROLL Byte AUX3 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$0016 AUX4ROLL Byte AUX4 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$0017 AUX5ROLL Byte AUX5 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$0018 AUX6ROLL Byte AUX6 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$0019 PSTARTTRIM Byte Post start enrichment fuel trim percent
% = X / 2
<0..120%>
$001A FOLLOWOUT Byte DBW PID output
% = (X - 128) / 1.28
<-90..90%>
$001B OPBATT Byte Battery voltage
V = 10 + 0.01961 * X
<10..15.1416V>
$001C OPMAP Word Engine load
kPa = X / 10
<0..750KPa>
$001D FUELLEVEL Word Fuel tank level
% = X / 655.35
<0..100%>
$001E HUMIDITY Word Humidity level
% = X / 655.35
<0..100%>
$001F STTLEFT Byte Left module short term trim
% = (X - 128) / 2
<-7.5..7.5%>
$0020 VCTI1OUT Byte Intake VCT left bank PID output
% = (X - 128) / 1.28
<-90..90%>
$0021 VCTI2OUT Byte Intake VCT right bank PID output
% = (X - 128) / 1.28
<-90..90%>
$0022 VCTE1OUT Byte Exhaust VCT left bank PID output
% = (X - 128) / 1.28
<-90..90%>
$0023 VCTE2OUT Byte Exhaust VCT right bank PID output
% = (X - 128) / 1.28
<-90..90%>
$0024 RAWTPS Word Raw TPS value
Volts = X / 13107
<0..5.1416V>
$0025 PRILAMBDA Byte Primary wideband lambda value for tuning
Lambda = X / 100
<0.65..2.20 lambda>
$0026 STTRIGHT Byte Right module short term trim
% = (X - 128) / 2
<-7.5..7.5%>
$0027 GEARLOOKUP Byte Gear
Gear = X + 1
<1..6>
$0028 PORTFTRIM Byte Port air temperature fuel trim percent
% = (X - 128) / 5
<-12.8..12.8%>
$0029 DTPSFTRIM Byte Delta TPS / dt fuel trim percent
% = (X - 128) / 5
<-12.8..12.8%>
$002A GEARFTRIM Byte Gear fuel trim percent
% = (X - 128) / 10
<-6.4..6.4%>
$002B ISCFTRIM Byte ISC position fuel trim percent
% = (X - 128) / 10
<-6.4..6.4%>
$002C COOLFTRIM Byte Coolant temperature fuel trim percent
% = X / 2
<0..120%>
$002D BAROFTRIM Byte Barometric pressure fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$002E CRANKFTRIM Byte Cranking fuel trim
% = X / 2
<0..120%>
$002F LLTTFTRIM Byte Left module long term fuel trim
% = (X - 128) / 2
<-64..64%>
$0030 TPSPUMPLOG Byte Throttle pump and tip-in fuel trim
% = X
<0..248%>
$0031 ACFTRIM Byte AC compressor fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$0032 KNOCKFTRIM Byte Knock response based fuel trim
% = X / 10
<0..24.0%>
$0033 INJBATT Word Battery voltage injector offset
ms = 0.00512 * X
<0..3.00ms>
$0034 ALAGITRIM Byte Anti-lag ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$0035 AUXITRIM Byte Auxiliary ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$0036 GEARITRIM Byte Gear ignition advance trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$0037 COOLITRIM Byte Coolant temperature ignition advance trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$0038 PORTITRIM Byte Port air temperature ignition advance trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$0039 ACITRIM Byte AC compressor engaged ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$003A LSTTITRIM Byte Left module short term fuel trim ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$003B ISCITRIM Byte Idle target error ignition advance trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$003C BAROITRIM Byte Barometric pressure ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$003D VCTI1TARGET Byte Intake VCT left bank target angle
degree = (X - 128) / 2
<-90..90 degrees>
$003E VCTE1TARGET Byte Exhaust VCT left bank target angle
degree = (X - 128) / 2
<-90..90 degrees>
$003F ISCTARGET Byte Idle speed target
RPM = 8 * X
<0..2040RPM>
$0040 ISCOUT Byte ISC PID output value
% = (X - 128) / 1.28
<-90..90%>
$0041 PWM1DUTY Byte PWM MAP 1 interpolated duty
% = X / 2.55
<0..100%>
$0042 PWM2DUTY Byte PWM MAP 2 interpolated duty
% = X / 2.55
<0..100%>
$0043 PWM3DUTY Byte PWM MAP 3 interpolated duty
% = X / 2.55
<0..100%>
$0044 PWM4DUTY Byte PWM MAP 4 interpolated duty
% = X / 2.55
<0..100%>
$0045 PWM5DUTY Byte PWM MAP 5 interpolated duty
% = X / 2.55
<0..100%>
$0046 PWM6DUTY Byte PWM MAP 6 interpolated duty
% = X / 2.55
<0..100%>
$0047 PWM7DUTY Byte PWM MAP 7 interpolated duty
% = X / 2.55
<0..100%>
$0048 PWM8DUTY Byte PWM MAP 8 interpolated duty
% = X / 2.55
<0..100%>
$0049 PWM9DUTY Byte PWM MAP 9 interpolated duty
% = X / 2.55
<0..100%>
$004A PWM10DUTY Byte PWM MAP 10 interpolated duty
% = X / 2.55
<0..100%>
$004B PWM11DUTY Byte PWM MAP 11 interpolated duty
% = X / 2.55
<0..100%>
$004C SEQMODE Byte Injection mode flag
$00 = batch, $FF = sequential
<off..on>
$004D ANTILAGTIM Byte Anti-lag active timer
Seconds = 0.3355 * X
<0..90 seconds>
$004E TURBOTIMER Word Turbo timer
Seconds = X / 286.1
<0..225 seconds>
$004F ELAMBDATARGET Byte Effective closed loop target value
Lambda = X / 100
<0.65..2.20 lambda>
$0050 FFCUTCYCLES Byte Final applied fuel cut cycles
% = X / 2.55
<0..100%>
$0051 FICUTCYCLES Byte Final applied ignition cut cycles
% = X / 2.55
<0..100%>
$0052 BACKUPFLAG Byte Backup ignition advance flag
$00 = not requested, $FF = requested
<not requested..requested>
$0053 ONSECONDS Byte Seconds since unit powered up
seconds = X
<0..59 seconds>
$0054 ONMINUTES Byte Minutes since unit powered up
minutes = X
<0..59 minutes>
$0055 ONHOURS Byte Hours since unit powered up
hours = X
<0..255 hours>
$0056 RUNSECONDS Byte Seconds since engine start
seconds = X
<0..59 seconds>
$0057 RUNMINUTES Byte Minutes since engine start
minutes = X
<0..59 minutes>
$0058 RUNHOURS Byte Hours since engine start
hours = X
<0..255 hours>
$0059 PORTTEMP Word Port temperature
Celcius = (X / 256) - 20
<-20..135C>
$005A PROGMAP Byte Programmed MAP value
kPa = 0.4 * X
<0..102.0kPa>
$005B TPSMAPW Byte TPS:MAP weight value
% = X / 255
<0..100%>
$005C ENGINEVE Byte Engine VE
VE = X / 2
<0..127.5%>
$005D RPM Word Engine speed
RPM = X
<0..13175RPM>
$005E RPMDELTA Word Engine speed delta
RPM/sec = X - 32768
<-7500..8000RPM/s>
$005F ONECRANK Word Time interval per single crank revolution
ms = 0.00512 * X
<0..75.0ms>
$0060 ONEDELTA Word Engine single crank revolution interval delta
us = 0.16 * (X - 32768)
<-4.50ms..4.50ms>
$0061 CYSTSLWH Word Engine revolutions since engine start counter
Rev = X
<0..3840>
$0062 CYSTFSTH Word Engine revolutions since engine start counter
Rev = X / 64
<0..60>
$0063 DECELIMIT Word Deceleration fuel cut lower point
RPM = X
<0..3840>
$0064 UDECELIMIT Word Deceleration fuel cut upper point
RPM = X
<0..3840>
$0065 RPMFLAG Byte Engine speed above decel fuel cut flag
$00 = below cut, $FF = above
<under..over>
$0066 RPMCTSTRIM Word Coolant temperature rev limiter trim
RPM = -X
<0..-3840>
$0067 TPSDIV Word 3D map x-axis location for engine RPM-based maps
Cell index = X >> 8
Offset = (X & $FF) / 256
<Cell 0..31>
$0068 OPENTPS Byte Throttle open flag
$00 = closed, $FF = open
<closed..open>
$0069 PEDALPERCENT Word Pedal open percentage
% = X / 655.35
<0..100%>
$006A RAWPEDAL Word Raw pedal value
Volts = X / 13107
<0..5.1416V>
$006B FDTPSDT Word Throttle derivative (delta TPS / delta time)
%/ms = (X - 32768) / 27500
<-0.80..0.80%/ms>
$006C DTPSFLAG Byte Throttle derivative enrichment operating range flag
$00 = out of range, $FF = in range
<out..in>
$006D DFUELCUT Byte Decel fuel cut flag
$00 = off, $FF = activated
<off..on>
$006E CTSRAW Word Raw coolant temperature sensor value
Volts = X / 13107
<0..5.1416V>
$006F ATSRAW Word Raw air temperature sensor value
Volts = X / 13107
<0..5.1416V>
$0070 CYLPOS Byte Current cyclinder position
Cylinder = X
<1..8>
$0071 INTMAPRAW Word Raw internal map sensor value
Volts = X / 13107
<0..5.1416V>
$0072 MANIKPA Word Filtered intake manifold pressure
kPa = X / 10
<0..750KPa>
$0073 AMBITEMP Word Ambient temperaure
Celcius = (X / 256) - 20
<-20..135C>
$0074 CABINTEMP Word Cabin temperature
Celcius = (X / 256) - 20
<-20..135C>
$0075 ENGBAYTEMP Word Engine bay temperature
Celcius = (X / 256) - 20
<-20..135C>
$0076 INTAKETEMP Word Intake air temperature
Celcius = (X / 256) - 20
<-20..135C>
$0077 PREICTEMP Word Pre-intercooler air temperature
Celcius = (X / 256) - 20
<-20..135C>
$0078 POSTICTEMP Word Post-intercooler air temperature
Celcius = (X / 256) - 20
<-20..135C>
$0079 ACEVAPTEMP Word AC evaporator coil temperature
Celcius = (X / 256) - 20
<-20..135C>
$007A OILTEMP Word Oil temperature
Celcius = (X / 256) - 20
<-20..135C>
$007B FUELTEMP Word Fuel temperature
Celcius = (X / 256) - 20
<-20..135C>
$007C RADOTEMP Word Radiator outlet temperature
Celcius = (X / 256) - 20
<-20..135C>
$007D OILCLRTEMP Word Oil cooler outlet temperature
Celcius = (X / 256) - 20
<-20..135C>
$007E TRNOILTEMP Word Transmission oil temperature
Celcius = (X / 256) - 20
<-20..135C>
$007F FDOILTEMP Word Front differential oil temperature
Celcius = (X / 256) - 20
<-20..130C>
$0080 RDOILTEMP Word Rear differential oil temperature
Celcius = (X / 256) - 20
<-20..135C>
$0081 LBEGTTEMP Word Left bank exhaust gas temperature
Celcius = 0.01953125 * X
<0..1280.0C>
$0082 RBEGTTEMP Word Right bank exhaust gas temperature
Celcius = 0.01953125 * X
<0..1280.0C>
$0083 FUELPRES Word Fuel rail pressure
kPa = X / 51.2
<0..1275.0kPa>
$0084 EXMANPRES Word Exhaust manifold pressure
kPa = X / 85.3
<0..750KPa>
$0085 FTANKPRES Word Fuel tank pressure
KPa = X / 255
<0..248kPa>
$0086 OILPRESS Word Engine oil pressure
kPa = X / 51.2
<0..1275.0kPa>
$0087 TRNOILPRES Word Transmission oil pressure
kPa = X / 51.2
<0..1275.0kPa>
$0088 STEERANGLE Word Steering angle
Degrees = (X - 32768) / 32
<-1000..1000 degrees>
$0089 FAXTORQUE Word Front axle torque
ft/lbs = X / 16
<0..4000 ft/lbs>
$008A RAXTORQUE Word Rear axle torque
ft/lbs = X / 16
<0..4000 ft/lbs>
$008B DELTAVSS Byte Current vehicle speed delta
MPH/sec = X / 8
<0..31MPH/sec>
$008C MAXDELTAVSS Byte Maximum allowed vehicle speed delta
MPH/sec = X / 8
<0..31MPH/sec>
$008D BASEFUEL Word Target injection pulse width
ms = 0.00128 * X
<0..45.0ms>
$008E INJPHASE Byte Injection pulse closing point
BTDC degrees = X - 180
<180 degrees ATDC..75 degrees BTDC>
$008F XCPUVAR2 Byte Left knock sensor voltage
Volts = X / 51
<0..5.1416V>
$0090 XCPUVAR3 Byte Right knock sensor voltage
Volts = X / 51
<0..5.1416V>
$0091 BOOSTERSM Word Boost PID integrator sum
Sum = X - 32768
<-32768..32767>
$0092 BOOSTOUT Byte Boost PID output value
% = (X - 128) / 1.28
<-100..100%>
$0093 BCTHRESHOLD Byte Boost control RPM threshold
RPM = 50 * X
<0..12750RPM>
$0094 BOOSTBASE Byte Base boost target value
PSI = X / 3.22
<0..75.0PSI>
$0095 BOOSTCTST Byte Boost coolant temperature trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$0096 BOOSTPORTT Byte Boost port air temperature trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$0097 BOOSTTPST Byte Boost throttle position trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$0098 BOOSTGEART Byte Boost gear trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$0099 BOOSTKNOCKT Byte Boost knock response trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$009A BOOSTAUXT Byte Boost and maximum boost auxiliary trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$009B BOOSTPOTT Byte Boost auxiliary potentiometer trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$009C BOOSTARGET Byte Final boost target value
PSI = X / 3.22
<0..75.0PSI>
$009D KNKTHRESHOLD Byte Knock threshold voltage
Volts = X / 51
<0..5V>
$009E MAXBOOST Byte Maximum boost limit
PSI = X / 3.22
<0..75.0PSI>
$009F OVERBOOST Byte Intake manifold is above maximum boost limit
$00 = no, $FF = yes
<below..above>
$00A0 NORMALADV Byte Standard base ignition advance
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A1 BACKUPADV Byte Backup base ignition advance
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A2 LAUNCHITRIM Byte Launch ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A3 FTEMPITRIM Byte Fuel temperature ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A4 HUMDITRIM Byte Humidity level ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A5 LEGTITRIM Byte Left bank EGT ignition advance trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A6 REGTITRIM Byte Right bank EGT ignition advance trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A7 RSTTITRIM Byte Right module short term fuel trim ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A8 IGADVULIMIT Byte Ignition advance upper limit
Degrees = (X - 128) / 2
<-64..64 degrees>
$00A9 IGADVLLIMIT Byte Ignition advance lower limit
Degrees = (X - 128) / 2
<-64..64 degrees>
$00AA ADVROLLER2 Byte Actual ignition advance value for coil 2
Degrees = (X - 128) / 2
<-64..64 degrees>
$00AB ADVROLLER3 Byte Actual ignition advance value for coil 3
Degrees = (X - 128) / 2
<-64..64 degrees>
$00AC ADVROLLER4 Byte Actual ignition advance value for coil 4
Degrees = (X - 128) / 2
<-64..64 degrees>
$00AD ADVROLLER5 Byte Actual ignition advance value for coil 5
Degrees = (X - 128) / 2
<-64..64 degrees>
$00AE ADVROLLER6 Byte Actual ignition advance value for coil 6
Degrees = (X - 128) / 2
<-64..64 degrees>
$00AF ADVROLLER7 Byte Actual ignition advance value for coil 7
Degrees = (X - 128) / 2
<-64..64 degrees>
$00B0 ADVROLLER8 Byte Actual ignition advance value for coil 8
Degrees = (X - 128) / 2
<-64..64 degrees>
$00B1 DWELLBASE Byte Voltage-based ignition dwell value
ms = 0.04 * X
<0..10.50ms>
$00B2 DWELLTRIM Byte Engine speed-based ignition dwell trim
ms = 0.04 * X
<0..10.50ms>
$00B3 IGNDWELL Byte Delivered ignition dwell value
ms = 0.04 * X
<0..10.50ms>
$00B4 ACFLAG Byte AC request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00B5 LAUNCHFLAG Byte Launch request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00B6 ALAGFLAG Byte Anti-lag request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00B7 AUXFLAG Byte Auxiliary request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00B8 VALETFLAG Byte Valet request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00B9 FLATSHFLAG Byte Flat shift request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00BA TRACTIONFLAG Byte Traction request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00BB DIAGREQFLAG Byte Diagnostic request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00BC IMMOBILFLAG Byte Immobilizer request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00BD DATALOGFLAG Byte Datalog request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00BE OILPSWFLAG Byte Oil pressure request flag
$00 = no pressure, $FF = pressure
<no pressure..pressure>
$00BF TRINARYFLAG Byte AC Trinary switch request flag
$00 = pressure too high or low, $FF = pressure good
<not good..good>
$00C0 SPEEDFLAG Byte Speed limiter request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00C1 PSLOADFLAG Byte Power steering load request flag
$00 = not requested, $FF = requested
<not requested..requested>
$00C2 DRIVEFLAG Byte Vehicle moving flag
$00 = stopped, $FF = moving
<stopped..moving>
$00C3 CELON Byte Check engine light switch
$00 = off, $FF = on
<off..on>
$00C4 FUELPUMP Byte Fuel pump switch
$00 = off, $FF = on
<off..on>
$00C5 ACCLUTCH Byte AC compressor clutch switch
$00 = off, $FF = on
<off..on>
$00C6 TTIMERON Byte Turbo timer relay switch
$00 = off, $FF = on
<off..on>
$00C7 THFANON Byte Thermo fan switch
$00 = off, $FF = on
<off..on>
$00C8 LINUEGORL Byte Simulated left internal wideband sensor voltage
Volts = X / 255
<0..1V>
$00C9 RINUEGORL Byte Simulated right internal wideband sensor voltage
Volts = X / 255
<0..1V>
$00CA LEXUEGORL Byte Simulated left external wideband sensor voltage
Volts = X / 255
<0..1V>
$00CB REXUEGORL Byte Simulated right external wideband sensor voltage
Volts = X / 255
<0..1V>
$00CC LEXLAMBDA Byte Left external wideband lambda value
Lambda = X / 100
<0.65..2.20 lambda>
$00CD REXLAMBDA Byte Right external wideband lambda value
Lambda = X / 100
<0.65..2.20 lambda>
$00CE AIMLAMBDA Word Primary lambda sensor value
Lambda = X / 1000
<0.65..2.20 lambda>
$00CF EGO1TYPE Byte Type of operation on the left module
$00 = narrowband, $FF = wide
<narrowband..wideband>
$00D0 EGO2TYPE Byte Type of operation on the right module
$00 = narrowband, $FF = wide
<narrowband..wideband>
$00D1 LOOPFLAG Byte Closed loop fuel operational state
$00 = Open, $FF = Closed
<open..closed>
$00D2 RMWLOOPTARGET Byte Right module closed loop target value
Lambda = X / 100
<0.65..2.20 lambda>
$00D3 STOICHFLAG Byte Closed loop AFR target is stoichiometry
$00 = not stoich, $FF = stoich
<not stoich..stoich>
$00D4 NCLPTERM Byte Closed loop narrowband P-term value
% = X / 2.55
<0..100%>
$00D5 NCLITERM Byte Closed loop narrowband I-term value
% = X / 2.55
<0..100%>
$00D6 WCLPTERM Byte Closed loop wideband P-term value
% = X / 2.55
<0..100%>
$00D7 WCLITERM Byte Closed loop wideband I-term value
% = X / 2.55
<0..100%>
$00D8 LMDIRECTION Byte Left module trim direction flag
$00 = richening, $FF = leaning
<richening..leaning>
$00D9 RMDIRECTION Byte Right module trim direction flag
$00 = richening, $FF = leaning
<richening..leaning>
$00DA AUX7ROLL Byte AUX7 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00DB AUX8ROLL Byte AUX8 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00DC AUX9ROLL Byte AUX9 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00DD AUX10ROLL Byte AUX10 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00DE AUX11ROLL Byte AUX11 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00DF AUX12ROLL Byte AUX12 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00E0 AUX13ROLL Byte AUX13 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00E1 AUX14ROLL Byte AUX14 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00E2 AUX15ROLL Byte AUX15 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00E3 AUX16ROLL Byte AUX16 input raw voltage
V = 0.01961 * X
<0..5.1416V>
$00E4 ALTTARGET Byte Alternator target charging voltage
V = 10 + 0.01961 * X
<10..15.1416V>
$00E5 ALTSENSING Byte External alternator sensing voltage
V = 10 + 0.01961 * X
<10..15.1416V>
$00E6 ALTSM Word Alternator control PID integrator sum
Sum = X - 32768
<-32768..32767>
$00E7 ALTOUT Byte Alternator PID output value
% = (X - 128) / 1.28
<-100..100%>
$00E8 ALTCTRL Byte Alternator control output value
% = X / 2.55
<0..100%>
$00E9 VCTI1ERSM Word Intake VCT left bank PID integration sum
Sum = X - 32768
<-32768..32767>
$00EA VCTI1FEED Byte Intake VCT left bank actual angle
degree = (X - 128) / 2
<-90..90 degrees>
$00EB VCTI2ERSM Word Intake VCT right bank PID integration sum
Sum = X - 32768
<-32768..32767>
$00EC VCTI2TARGET Byte Intake VCT right bank target angle
degree = (X - 128) / 2
<-90..90 degrees>
$00ED VCTI2FEED Byte Intake VCT right bank actual angle
degree = (X - 128) / 2
<-90..90 degrees>
$00EE VCTE1ERSM Word Exhaust VCT left bank PID integration sum
Sum = X - 32768
<-32768..32767>
$00EF VCTE1FEED Byte Exhaust VCT left bank actual angle
degree = (X - 128) / 2
<-90..90 degrees>
$00F0 VCTE2ERSM Word Exhaust VCT right bank PID integration sum
Sum = X - 32768
<-32768..32767>
$00F1 VCTE2TARGET Byte Exhaust VCT right bank target angle
degree = (X - 128) / 2
<-90..90 degrees>
$00F2 VCTE2FEED Byte Exhaust VCT right bank actual angle
degree = (X - 128) / 2
<-90..90 degrees>
$00F3 IDXEDFUEL Word Indexed fuel (base + aux + anti-lag)
ms = 0.00128 * X
<0..45.0ms>
$00F4 AUXFTRIM Byte Auxiliary fuel adjustment
% = (X - 128) / 2
<-64..64%>
$00F5 ALAGFTRIM Byte Anti-lag fuel adjustment
% = (X - 128) / 2
<-64..64%>
$00F6 DYNFTRIM Byte Delta engine speed fuel trim percent
% = (X - 128) / 5
<-12.8..12.8%>
$00F7 COMPFTRIM Byte Boost compensation fuel multiplier
multiplier = 0.04 * X
<0..10.50>
$00F8 FILMTRIML Byte Film mass fuel correction
% = X / 10
<0..24.0%>
$00F9 PDFCFTRIM Byte Post decel fuel cut trim
% = X / 10
<0..24.0%>
$00FA FUELPFTRIM Byte Fuel rail pressure fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$00FB HUMDFTRIM Byte Humidity level fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$00FC LEGTFTRIM Byte Left bank EGT fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$00FD REGTFTRIM Byte Right bank EGT fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$00FE FTEMPFTRIM Byte Fuel temperature fuel trim
% = (X - 128) / 10
<-6.4..6.4%>
$00FF RLTTFTRIM Byte Right module long term fuel trim
% = (X - 128) / 2
<-64..64%>
$0100 ALAGTIMFLAG Byte Anti-lag time expired flag
$00 = not expired, $FF = expired
<not expired..expired>
$0101 AAFCUTCYCLES Byte Anti-lag active fuel cut cycles
% = X / 2.55
<0..100%>
$0102 AIFCUTCYCLES Byte Anti-lag inactive fuel cut cycles
% = X / 2.55
<0..100%>
$0103 LFCUTCYCLES Byte Launch fuel cut cycles
% = X / 2.55
<0..100%>
$0104 SFCUTCYCLES Byte Flat shift fuel cut cycles
% = X / 2.55
<0..100%>
$0105 TFCUTCYCLES Byte Traction fuel cut cycles
% = X / 2.55
<0..100%>
$0106 AICUTCYCLES Byte Anti-lag ignition cut cycles
% = X / 2.55
<0..100%>
$0107 LICUTCYCLES Byte Launch ignition cut cycles
% = X / 2.55
<0..100%>
$0108 SICUTCYCLES Byte Flat shift ignition cut cycles
% = X / 2.55
<0..100%>
$0109 TICUTCYCLES Byte Traction ignition cut cycles
% = X / 2.55
<0..100%>
$010A NOTIDLE Byte Not idling flag
$00 = idling, $FF = running
<idling..running>
$010B ISCCTSTARGET Byte Base coolant temperature based idle speed target
RPM = 8 * X
<0..2040RPM>
$010C ISCACTRIM Byte AC idle speed target trim
RPM = 8 * X
<0..2040RPM>
$010D ISCVMTRIM Byte ISC vehicle moving trim
RPM = 8 * X
<0..2040RPM>
$010E ISCERSM Word ISC PID integration sum
Sum = X - 32768
<-32768..32768>
$010F ISCPWMDUTY Byte ISC PWM valve output duty cycle
% = X / 2.55
<0..100%>
$0110 FOLLOWERSM Word DBW PID integration sum
Sum = X - 32768
<-32768..32768>
$0111 FOLLOWTARGET Byte DBW target value
% = X / 2.55
<0..100%>
$0112 FOLLOWFEED Byte DBW actual value
% = X / 2.55
<0..100%>
$0113 INJ1DUTY Word Injector 1 PWM output duty cycle
% = X / 655.36
<0..100%>
$0114 INJ2DUTY Word Injector 2 PWM output duty cycle
% = X / 655.36
<0..100%>
$0115 INJ3DUTY Word Injector 3 PWM output duty cycle
% = X / 655.36
<0..100%>
$0116 INJ4DUTY Word Injector 4 PWM output duty cycle
% = X / 655.36
<0..100%>
$0117 INJ5DUTY Word Injector 5 PWM output duty cycle
% = X / 655.36
<0..100%>
$0118 INJ6DUTY Word Injector 6 PWM output duty cycle
% = X / 655.36
<0..100%>
$0119 INJ7DUTY Word Injector 7 PWM output duty cycle
% = X / 655.36
<0..100%>
$011A INJ8DUTY Word Injector 8 PWM output duty cycle
% = X / 655.36
<0..100%>
$011B VCTI1CTRL Byte Intake VCT left bank solenoid control value
% = X / 2.55
<0..100%>
$011C VCTI2CTRL Byte Intake VCT right bank solenoid control value
% = X / 2.55
<0..100%>
$011D VCTE1CTRL Byte Exhaust VCT left bank solenoid control value
% = X / 2.55
<0..100%>
$011E VCTE2CTRL Byte Exhaust VCT right bank solenoid control value
% = X / 2.55
<0..100%>
$011F HFCUTCYCLES Byte Hard rev limit fuel cut cycles
% = X / 2.55
<0..100%>
$0120 SLFCUTCYCLES Byte Soft rev limit fuel cut cycles
% = X / 2.55
<0..100%>
$0121 DFCUTCYCLES Byte Decel fuel cut cycles
% = X / 2.55
<0..100%>
$0122 VFCUTCYCLES Byte Valet fuel cut cycles
% = X / 2.55
<0..100%>
$0123 VSFCUTCYCLES Byte Vehicle speed limiter fuel cut cycles
% = X / 2.55
<0..100%>
$0124 ISCPSTRIM Byte Power steering load idle speed target trim
RPM = 8 * X
<0..2040RPM>
$0125 ISCCYTRIM Byte Post start idle speed target trim
RPM = 8 * X
<0..2040RPM>
$0126 BA08VALUE Word Pin BA08 RPN expression value
X = X
<0..65535>
$0127 BB07VALUE Word Pin BB07 RPN expression value
X = X
<0..65535>
$0128 BA05VALUE Word Pin BA05 RPN expression value
X = X
<0..65535>
$0129 BA09VALUE Word Pin BA09 RPN expression value
X = X
<0..65535>
$012A GB04VALUE Word Pin GB04 RPN expression value
X = X
<0..65535>
$012B GB03VALUE Word Pin GB03 RPN expression value
X = X
<0..65535>
$012C IF01VALUE Word Internal feedback channel one RPN expression value
X = X
<0..65535>
$012D BA01VALUE Word Pin BA01 RPN expression value
X = X
<0..65535>
$012E BA02VALUE Word Pin BA02 RPN expression value
X = X
<0..65535>
$012F BA03VALUE Word Pin BA03 RPN expression value
X = X
<0..65535>
$0130 BA04VALUE Word Pin BA04 RPN expression value
X = X
<0..65535>
$0131 BA11VALUE Word Pin BA11 RPN expression value
X = X
<0..65535>
$0132 GB06VALUE Word Pin GB06 RPN expression value
X = X
<0..65535>
$0133 GB05VALUE Word Pin GB05 RPN expression value
X = X
<0..65535>
$0134 IF02VALUE Word Internal feedback channel two RPN expression value
X = X
<0..65535>
$0135 BA06VALUE Word Pin BA06 RPN expression value
X = X
<0..65535>
$0136 INJ1VALUE Word Injector one RPN expression value
X = X
<0..65535>
$0137 INJ2VALUE Word Injector two RPN expression value
X = X
<0..65535>
$0138 INJ3VALUE Word Injector three RPN expression value
X = X
<0..65535>
$0139 INJ4VALUE Word Injector four RPN expression value
X = X
<0..65535>
$013A INJ5VALUE Word Injector five RPN expression value
X = X
<0..65535>
$013B INJ6VALUE Word Injector six RPN expression value
X = X
<0..65535>
$013C INJ7VALUE Word Injector seven RPN expression value
X = X
<0..65535>
$013D INJ8VALUE Word Injector eight RPN expression value
X = X
<0..65535>
$013E LAUNCHEFF Byte Launch control is in effect flag
$00 = not in effect, $FF = in effect
<not in effect..in effect>
$013F BC06VALUE Word Pin BC06 RPN expression value
X = X
<0..65535>
$0140 BC07VALUE Word Pin BC07 RPN expression value
X = X
<0..65535>
$0141 BC08VALUE Word Pin BC08 RPN expression value
X = X
<0..65535>
$0142 BC09VALUE Word Pin BC09 RPN expression value
X = X
<0..65535>
$0143 STEPPERA Byte Stepper control value A
$00 = low, $FF = high
<low..high>
$0144 STEPPERB Byte Stepper control value B
$00 = low, $FF = high
<low..high>
$0145 STEPPERC Byte Stepper control value C
$00 = low, $FF = high
<low..high>
$0146 STEPPERD Byte Stepper control value D
$00 = low, $FF = high
<low..high>
$0147 EXKNOCKCOUNT Byte Excessive knock events counter
Count = X
<0..255>
$0148 LMWLOOPTARGET Byte Left module closed loop target value
Lambda = X / 100
<0.65..2.15 lambda>
$0149 ETHANOLMIX Word Ethanol fuel mixture
% = X / 655.35
<0..100%>
$014A FLEXFTRIM Byte Flex fuel fuel adjustment
% = (X - 128) / 2
<-64..64%>
$014B FLEXITRIM Byte Flex fuel ignition trim
Degrees = (X - 128) / 2
<-64..64 degrees>
$014C BOOSTFLEXT Byte Boost and maximum boost flex fuel trim
PSI = (X - 128) / 3.22
<-30..30PSI>
$014D BATTTEMP Word Battery temperature
Celcius = (X / 256) - 20
<-20..135C>
$014E MINBSTDUTY Byte Minimum boost solenoid control value
% = X / 2.55
<0..100%>
$014F MAXBSTDUTY Byte Maximum boost solenoid control value
% = X / 2.55
<0..100%>
$0150 LRWHEELSPD Byte Left rear wheel speed
MPH = X
<0..255MPH>
$0151 RRWHEELSPD Byte Right rear wheel speed
MPH = X
<0..255MPH>
$0152 LFWHEELSPD Byte Left front wheel speed
MPH = X
<0..255MPH>
$0153 RFWHEELSPD Byte Right front wheel speed
MPH = X
<0..255MPH>
$0154 ISCMINDUTY Byte Minimum ISC PWM valve output duty cycle
% = X / 2.55
<0..100%>
$0155 ISCMAXDUTY Byte Maximum ISC PWM valve output duty cycle
% = X / 2.55
<0..100%>
$0156 ACFANON Byte AC fan switch
$00 = off, $FF = on
<off..on>
$0157 VARPERF Byte User selectable performance level
X = X
<0..255>
$0158 GDIPHASE Byte Direct injection pulse starting point
BTDC degrees = X - 180
<180 degrees ATDC..75 degrees BTDC>
$0159 MAXDIRINJ Byte Maximum direct injection pulse width
ms = 0.04096 * X
<0..10.45ms>
$015A GDIINTERVAL Word Direct injection pulse width
ms = 0.00512 * X
<0..10.45ms>
$015B GDIFPRES Word Direct injection fuel rail pressure
MPa = X / 1706.6667
<0..38.25MPa>
$015C GDIOFFSET Word Fuel pressure direct injector offset
ms = 0.00512 * X
<0..3.00ms>
$015D GDIFLOWRATE Word Direct injector effective flow rate
cc/min = 0.05859375 * X
<0..3840cc/min>
$015E PFIINTERVAL Word Port injection pulse width
ms = 0.00512 * X
<0..45.0ms>
$015F GDITARGET Byte Direct injection fuel rail target pressure
MPa = 0.51 * X
<0..38.25MPa>
$0160 GDISM Word Direct injection fuel pump control PID integrator sum
Sum = X - 32768
<-32768..32767>
$0161 GDIOUT Byte Direct injection fuel pump PID output value
% = (X - 128) / 1.28
<-90..90%>
$0162 GDICTRL Byte Direct injection fuel pump control output value
% = X / 2.55
<0..100%>
$0163 GDIBASEPW Word Direct injection fuel pump base pulse width
ms = 0.00512 * X
<0..12.0ms>
$0164 GDIPUMPPW Word Direct injection fuel pump actual pulse width
ms = 0.00512 * X
<0..12.0ms>
$0165 OPENPPS Byte Pedal open flag
$00 = closed, $FF = open
<closed..open>
$0166 WSPINFLAG Byte Traction control engaged flag
$00 = off, $FF = on
<off..on>
$0167 BATTCURR Word Battery current
Amps = (X - 32768) / 256
<-120A..120A>
$0168 ALTCURR Word Alternator current
Amps = (X - 32768) / 256
<-120A..120A>
$0169 ISCERR Byte Idle speed target error
RPM = 8 * (X - 128)
<-1000..1000RPM>
$016A CALCFUEL Word Base injection pulse width
ms = 0.00128 * X
<0..45.0ms>
-
- Posts: 69
- Joined: Mon Jan 29, 2018 11:20 pm
Here is the text file I was sent. Thank you again, this really helps getting up to speed more quickly for people new to can-bus.
- Attachments
-
- HydraCAN (1).txt
- (55.44 KiB) Downloaded 386 times
Hi, thanks for that, it helps.
The Hydra follows a somewhat unconventional CAN protocol, where channels of data are requested from the ECU in a polling way. Kind of like a custom type of OBDII protocol.
Most aftermarket ECUs simply broadcast a continuous stream of data of all channel data. Our CAN mapping scheme is designed to work in this manner.
While it may be possible to write a custom Lua script in RaceCapture/Pro to enable this custom Hydra request/reply scheme, it would likely be better if you get their OBDII emulation that supports iso 15765-4 and just use that with RaceCapture/Pro's built-in OBDII engine.
That would be the most plug and play way of making it work with the Hydra.
Let us know how it goes from here. Thanks!
The Hydra follows a somewhat unconventional CAN protocol, where channels of data are requested from the ECU in a polling way. Kind of like a custom type of OBDII protocol.
Most aftermarket ECUs simply broadcast a continuous stream of data of all channel data. Our CAN mapping scheme is designed to work in this manner.
While it may be possible to write a custom Lua script in RaceCapture/Pro to enable this custom Hydra request/reply scheme, it would likely be better if you get their OBDII emulation that supports iso 15765-4 and just use that with RaceCapture/Pro's built-in OBDII engine.
That would be the most plug and play way of making it work with the Hydra.
Let us know how it goes from here. Thanks!
-
- Posts: 69
- Joined: Mon Jan 29, 2018 11:20 pm
They dont offer OBD emulation or any other information. This is all the information.
The AIM products are designed to be used with the serial output, with the "expansion box" formatting. Maybe only those are broadcast? In which case I would hook up the "can wires" to the RX and TX ports?
Without any more options from hydra is there is anything you would like me to test physically? or record onto a log?
The AIM products are designed to be used with the serial output, with the "expansion box" formatting. Maybe only those are broadcast? In which case I would hook up the "can wires" to the RX and TX ports?
Without any more options from hydra is there is anything you would like me to test physically? or record onto a log?
You mentioed iso 15765-4 support - if they have a mode that supports ISO 15765-4, and it works correctly according to the SAE spec, then the Hydra EMS will basically emulate a CAN OBDII ECU.
Try checking with the manufacturer on how to enable ISO 15765-4 mode.
Once you have that information, and you have it enabled, then it's a matter of connecting the two CAN wires (CAN high, CAN low) between RaceCapture/Pro and Hydra and testing some standard OBDII channels, like RPM, throttle position (TPS) and so on.
Hope this helps!
Try checking with the manufacturer on how to enable ISO 15765-4 mode.
Once you have that information, and you have it enabled, then it's a matter of connecting the two CAN wires (CAN high, CAN low) between RaceCapture/Pro and Hydra and testing some standard OBDII channels, like RPM, throttle position (TPS) and so on.
Hope this helps!
-
- Posts: 69
- Joined: Mon Jan 29, 2018 11:20 pm
OK, got it connected. the Grey plug in the photo. is plug G
Can Low G-A03
Can High G-A04
Side A, remove blue clip and insert new pins with wires.
new pins can be bought here https://www.mouser.com/ProductDetail/?q ... tyUg%3D%3D
On the hydra EMS side, assuming you have the can-bus enabled, you will go to Settings>Set-Up Options> and select from the drop down box Basic OBDII ECU1
Can Low G-A03
Can High G-A04
Side A, remove blue clip and insert new pins with wires.
new pins can be bought here https://www.mouser.com/ProductDetail/?q ... tyUg%3D%3D
On the hydra EMS side, assuming you have the can-bus enabled, you will go to Settings>Set-Up Options> and select from the drop down box Basic OBDII ECU1
- Attachments
-
- 20180206_1738012.jpg (179.59 KiB) Viewed 11596 times