Any updates for the Hydra Ems?

Discussions on CAN mapping for ECUs, sensors, PDMs, and more.
Canyonfive
Posts: 69
Joined: Mon Jan 29, 2018 11:20 pm

Any updates for the Hydra Ems?

Post by Canyonfive »

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

brentp
Site Admin
Posts: 6274
Joined: Wed Jan 24, 2007 6:36 am

Post by brentp »

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!
Brent Picasso
CEO and Founder, Autosport Labs
Facebook | Twitter

Canyonfive
Posts: 69
Joined: Mon Jan 29, 2018 11:20 pm

Post by Canyonfive »

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 really new to this, so thank you in advance for your patience. It says it uses basic obd2 and gives a few ecu options.

I'm happy to record something and post it here as well, if that's is on any use.

Canyonfive
Posts: 69
Joined: Mon Jan 29, 2018 11:20 pm

Post by Canyonfive »

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.

Canyonfive
Posts: 69
Joined: Mon Jan 29, 2018 11:20 pm

Post by Canyonfive »

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 190 times

brentp
Site Admin
Posts: 6274
Joined: Wed Jan 24, 2007 6:36 am

Post by brentp »

Thanks. AiM docs never have the actual CAN protocol, so they're not terribly useful.

However, the previous information hints that the emulate a regular CAN OBDII interface (2008+ vehicles), which we already support. You might want to check with them to confirm that.
Brent Picasso
CEO and Founder, Autosport Labs
Facebook | Twitter

brentp
Site Admin
Posts: 6274
Joined: Wed Jan 24, 2007 6:36 am

Post by brentp »

You might also ask them for their native CAN protocol, to see if their data can be mapped without that OBDII expansion/interface box. Suggest emailing them directly for that.

Ask them for documentation on their native CAN bus protocol.

Thanks!
Brent Picasso
CEO and Founder, Autosport Labs
Facebook | Twitter

Canyonfive
Posts: 69
Joined: Mon Jan 29, 2018 11:20 pm

Post by Canyonfive »

It looks like its that iso 15765-4 protocol. I emailed Flyin-Miata since they still support the ecu, to see if they have any more information.

Canyonfive
Posts: 69
Joined: Mon Jan 29, 2018 11:20 pm

Post by Canyonfive »

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>

brentp
Site Admin
Posts: 6274
Joined: Wed Jan 24, 2007 6:36 am

Post by brentp »

Thanks. Do you have this in an original document format so formatting is preserved?
Brent Picasso
CEO and Founder, Autosport Labs
Facebook | Twitter

Canyonfive
Posts: 69
Joined: Mon Jan 29, 2018 11:20 pm

Post by Canyonfive »

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 189 times

brentp
Site Admin
Posts: 6274
Joined: Wed Jan 24, 2007 6:36 am

Post by brentp »

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!
Brent Picasso
CEO and Founder, Autosport Labs
Facebook | Twitter

Canyonfive
Posts: 69
Joined: Mon Jan 29, 2018 11:20 pm

Post by Canyonfive »

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?

brentp
Site Admin
Posts: 6274
Joined: Wed Jan 24, 2007 6:36 am

Post by brentp »

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!
Brent Picasso
CEO and Founder, Autosport Labs
Facebook | Twitter

Canyonfive
Posts: 69
Joined: Mon Jan 29, 2018 11:20 pm

Post by Canyonfive »

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
Attachments
20180206_1738012.jpg
20180206_1738012.jpg (179.59 KiB) Viewed 6323 times

Post Reply