RomRaider Logo

RomRaider

Open Source ECU Tools
 FAQ •  Register •  Login 

RomRaider

Documentation

Community

Developers

It is currently Sat Feb 21, 2026 5:26 pm

All times are UTC




Post new topic Reply to topic  [ 1 post ] 
Author Message
 Post subject: Decoding CAN messages
PostPosted: Thu Oct 05, 2023 1:46 am 
Offline
Experienced

Joined: Fri Aug 21, 2020 10:05 am
Posts: 321
Here is a summary of current status of decoding various CAN messages. I'll add to this post as I get time to complete the information. The decoding comes from reverse engineering of an ECU, BIU and TCU.

Credits go to the Subaru Diesel Crew which was useful as a starting point for some CAN messages

Code:
CAN ID 0x410, from ECU
Byte  Bit  Conversion  Units  Description
0     -    x2.0        Nm     Engine Torque Output* looked up from IPW & ES, adjusted via factors for MAP, Timing
1     -    x1.6        Nm     Max Engine Torque looked up from ES & TPOA, adjusted for MRP
2     -    x1.6        Nm     Max Torque Allowed by ABS/VDC**
3     -    x1.6        Nm     Torque Loss looked up from ES^
4     -    x100/255    %      APA
5     -    -           rpm    ES, low byte
6     -    -           rpm    ES, high byte
7     0    -           -      S56 Torque Permission Signal
      1    -           -      ?
      2    -           -      S9 AC on
      3    -           -      S8 Power Steering
      4    -           -      ECT low
      5    -           -      ?
      6    -           -      S5 Idle Switch
      7    -           -      AF Learning
      
* appears to be after engine losses (eg) the lookup value is 0 at IPW of 1000.
** if S53 Request Torque Down has been triggered by ABS/VDC, the Allowed Torque is received by CAN 0x501, converted to a percentage of Max Engine Torque (looked up from ES & IPW), which is rounded to quarters (ie) 0%, 25%, 50%, 75% or 100% and then applied to the same Max Engine Torque
^ this closely matches the gap between Engine Torque Output and Max Engine Torque

CAN ID 0x411, from ECU
Byte  Bit  Conversion  Units  Description
0     0    -           -      S52 Ban of Torque Down
      1    -           -      0
      2    -           -      0
      3    -           -      Ban of Torque Conditions met
      4    -           -      ECT low
      5    -           -      ?
      6    -           -      0
      7    -           -      0
1     -    -           -      DTC, low byte*
2     -    -           -      DTC, high byte*
3     -    x100/255    %      TPOA as a percent of range of movement in degrees
4     -    -           -      Current Gear inferred from ratio between ES & VS
5     -    -           km/hr  Memorised Cruise Speed
6     0    -           -      ?
      1    -           -      ?CC related
      2    -           -      0
      3    -           -      0
      4    -           -      Brake Switch
      5    -           -      CC Speed Low
      6    -           -      CC on
      7    -           -      CC set
7     0    -           -      MIL on
      1    -           -      0
      2    -           -      0
      3    -           -      0
      4    -           -      0
      5    -           -      0
      6    -           -      0
      7    -           -      S82 Kick Down switch
      
* successive CAN messages cycle through whatever 4 DTCs are present. The top two bits of the word represent the DTC index (0, 1, 2, 3) and the remaining 14 bits represent the DTC number

CAN ID 0x412, from ECU
Byte  Bit  Conversion  Units  Description
0     -    x100/255    %      APA
1     -    x10         Nm     Reduced Torque*, low byte
2     -    x10         Nm     Reduced Torque*, high byte
3     -    x10         Nm     Engine Torque Output**, low byte
4     -    x10         Nm     Engine Torque Output**, high byte
5     -    x100/255    %      TPOA as a percent of fully open
6     -    -           -      Counter since car on
7     -    -           -      Counter since car on and ECT in range


* Reduced Torque is (Engine Torque Output x (100 - percent Torque reduction from CAN 0x421))
** this is a word version of CAN ID 0x410 Byte 0

CAN ID 0x420, from TCU
Byte  Bit  Conversion  Units  Description
0     0    -           -      0
      1    -           -      0
      2    -           -      0
      3    -           -      0
      4    -           -      0
      5    -           -      0
      6    -           -      0
      7    -           -      ?
1     -    -           -      Next Gear (high nybble), Current Gear (low nybble)*
2     0    -           -      Lockup state A**
      1    -           -      Lockup state B**
      2    -           -      Lockup state C**
      3    -           -      ?hard accel / braking / cornering control**
      4    -           -      ?hard accel / braking / cornering control**
      5    -           -      ?hard accel / braking / cornering control**
      6    -           -      In I mode
      7    -           -      ?error state
3     -    -           -      ?relates to 4WD Solenoid**
4     -    /4          rpm    Turbine Speed
5     -    -           -      ?**
6     -    -           -      ?**
7     0    -           -      1
      1    -           -      1
      2    -           -      1
      3    -           -      0
      4    -           -      0
      5    -           -      0
      6    -           -      Diagnostic Mode
      7    -           -      ?error state

* Values of 0x00, 0x77, 0x88 when in Neutral, Reverse, Park respectively.
** work in progress

CAN ID 0x421, from TCU
Byte  Bit  Conversion  Units  Description
0     -    x2          Nm     Requested Torque Limit
1     -    x100/255    %      Reduction to Torque
2     -    -           -      0
3     -    -           -      Message counter
4     -    -           -      0
5     -    -           -      Drive mode (high nybble)*, 2bit ? state bitflipped + 2bit ? state
6     -    /32         rpm    Wheel Rotational Speed x Gear Ratio**, low byte
7     -    /32         rpm    Wheel Rotational Speed x Gear Ratio**, high byte
 
* Drive Modes
  0x0: Normal (Sport)
  0x1: Sport#
  0x3: ?
  0x4: ?
  0x6: Request Torque Down (S53)
  0x8: ?
  0x9: ?
  0xb: I-mode
  0xd: Kickdown
 
** this can be compared to Turbine Speed to determine slip. Need to check the conversion factor.

CAN ID 0x422, from TCU
Byte  Bit  Conversion  Units  Description
0     0    -           -      Sport Lamp On
      1    -           -      Sport Lamp Blink
      2    -           -      ATF Temp Lamp On
      3    -           -      ATF Temp Lamp Blink
      4    -           -      Economy Lamp on
      5    -           -      ?
      6    -           -      Tyre diameter 1
      7    -           -      Tyre diameter 2
1     0    -           -      ?
      1    -           -      ?
      2    -           -      ?
      3    -           -      Shift Up
      4    -           -      Shift Down
      5    -           -      Sport Shift buzzer 1
      6    -           -      Sport Shift buzzer 2
      7    -           -      ?
2     -    -           -      Shift position (low nybble)*
3     -    -           -      DTC, low byte**
4     -    -           -      DTC, high byte**
5     -    x1-40       degC   ATF Temp 1 (pan)
6     -    x1-40       degC   ATF Temp 2 (torque converter)***
7     -    -           rpm    Idle Speed Target for AT

* D:4, N:5, R:6, P:7, Manual:8
** successive CAN messages cycle through whatever 4 DTCs are present. The top two bits of the word represent the DTC index (0, 1, 2, 3) and the remaining 14 bits represent the DTC number
*** may not always be present

CAN ID 0x501, from VDC/ABS
Byte  Bit  Conversion  Units  Description
0     -    -           -      ?
1     -    -           -      ?
2     -    -           -      ?
3     -    x1.6        Nm     Torque Allowed
4     0    -           -      S53 Request Torque Down
      1    -           -      ?
      2    -           -      ?
      3    -           -      ?
      4    -           -      ?
      5    -           -      ?
      6    -           -      ?
      7    -           -      ?
5     -    -           -      Message counter
6     -    -           -      ?
7     -    -           -      ?

CAN ID 0x511, from VDC/ABS
Byte  Bit  Conversion  Units  Description
0     -    x1          deg    Steering Wheel angle, low byte
1     -    x1          deg    Steering Wheel angle, high byte
2     -    -           -      ?, low byte
3     -    -           -      ?, high byte
4     -    -           -      ?
5     -    -           -      ?
6     -    x0.1235     m/s^2  Vehicle G-force
7     -    -           -      VDC/ABS condition (bits0-2)

CAN ID 0x512, from VDC/ABS
Byte  Bit  Conversion  Units  Description
0     0    -           -      ?
      1    -           -      ?
      2    -           -      ?
      3    -           -      ?
      4    -           -      VDC switch
      5    -           -      EBD warning
      6    -           -      ABS warning
      7    -           -      ?
1     0    -           -      ?
      1    -           -      ?
      2    -           -      ?
      3    -           -      ?
      4    -           -      ?
      5    -           -      VDC/ABS ok
      6    -           -      ?
      7    -           -      ?
2     -    x0.05625    km/hr  Vehicle Speed, low byte
3     -    x0.05625    km/hr  Vehicle Speed, high byte
4     0    -           -      ?
      1    -           -      ?
      2    -           -      ?
      3    -           -      ?
      4    -           -      Brake Switch
      5    -           -      ?
      6    -           -      ?
      7    -           -      ABS/VDC judging
5     -    -           -      message counter
6     -    -           -      DTC, low byte*
7     -    -           -      DTC, high byte*

* successive CAN messages cycle through whatever 4 DTCs are present. The top two bits of the word represent the DTC index (0, 1, 2, 3) and the remaining 14 bits represent the DTC number

CAN ID 0x513, from VDC/ABS
Byte  Bit  Conversion  Units  Description
0     -    x0.05625    km/hr  Wheel Speed, Front Left, low byte
1     -    x0.05625    km/hr  Wheel Speed, Front Left, high byte
2     -    x0.05625    km/hr  Wheel Speed, Front Right, low byte
3     -    x0.05625    km/hr  Wheel Speed, Front Right, high byte
4     -    x0.05625    km/hr  Wheel Speed, Rear Left, low byte
5     -    x0.05625    km/hr  Wheel Speed, Rear Left, high byte
6     -    x0.05625    km/hr  Wheel Speed, Rear Right, low byte
7     -    x0.05625    km/hr  Wheel Speed, Rear Right, high byte

CAN ID 0x514, from BIU
Byte  Bit  Conversion  Units  Description
0     0    -           -      Tiptronic Mode Switch
      1    -           -      S108 Economy Switch
      2    -           -      Reverse Gear
      3    -           -      Stop Light Switch
      4    -           -      ?
      5    -           -      Upshift (paddle?)
      6    -           -      Downshift (paddle?)?
      7    -           -      ADA existence judging
1     0    -           -      BIU internal error
      1    -           -      ?
      2    -           -      Shift Lock circuit short
      3    -           -      ?
      4    -           -      ?
      5    -           -      ?
      6    -           -      ?
      7    -           -      ?    
2     -    /2-40       degC   Ambient Temp
3     0    -           -      Defogger Switch
      1    -           -      Light Switch
      2    -           -      Low Beam
      3    -           -      High Beam
      4    -           -      Turn Signal LH
      5    -           -      Turn Signal RH
      6    -           -      Wiper Switch
      7    -           -      ?
4     0    -           -      Blower Fan Low
      1    -           -      Blower Fan High
      2    -           -      Australia judging flag
      3    -           -      ?
      4    -           -      ?
      5    -           -      ?
      6    -           -      ABS/VDC condition
      7    -           -      ABS/VDC condition
5     -    x100/256    ohms   Fuel Level Resistance
6     -    -           -      BIU main loop counter (bits0-3), large diameter tyre (bit4)
7     0    -           -      ?
      1    -           -      ?
      2    -           -      ?
      3    -           -      ?
      4    -           -      ?
      5    -           -      ?
      6    -           -      ?
      7    -           -      Park Brake Switch   

CAN ID 0x600, from ECU
Byte  Bit  Conversion  Units  Description
0     -    -           -      0
1     -    x0.001      cc/s   Fuel Consumption, low byte
2     -    x0.001      cc/s   Fuel Consumption, high byte
3     -    x1-40       degC   ECT
4     -    -           -      message counter
5     0    -           -      Number of cylinders (0 = 4 cyl, 1 = 6cyl)
      1    -           -      Camshaft Type (0 = SOHC, 1 = DOHC)
      2    -           -      Turbo (0 = NA, 1 = Turbo)
      3    -           -      2.5L engine
      4    -           -      3.0L engine
      5    -           -      MT/AT (0 = AT, 1 = MT)
      6    -           -      ?
      7    -           -      ?
6     0    -           -      S21 Fan Blower Switch
      1    -           -      Economy Lamp
      2    -           -      Clutch Switch
      3    -           -      ?
      4    -           -      ?
      5    -           -      ?
      6    -           -      ?
      7    -           -      ?
7     -    -           -      0xff

CAN ID 0x601, from ECU
Byte  Bit  Conversion  Units  Description
0     -    -           -      E33 CLOL Fueling*
1     -    -           -      0
2     -    x100/255    %      Engine Load Relative
3     -   -128x100/128 %      AF Correction 1
4     -   -128x100/128 %      AF Learning 1
5     -   -128x100/128 %      AF Correction 2
6     -   -128x100/128 %      AF Learning 2
7     -    x0.1333     kPa    Manifold Pressure

* 1 = cranking, 2 = normal closed loop, 4 = open loop no errors, 8 = open loop sensor error
    
CAN ID 0x620, from ECU
Byte  Bit  Conversion  Units  Description
0     0    -           -      ?
      1    -           -      Blower Fan Steps
      2    -           -      Blower Fan Steps
      3    -           -      Blower Fan Steps
      4    -           -      A/C ECM setting
      5    -           -      Door open
      6    -           -      One interior heater on
      7    -           -      Two interior heaters on
1     0    -           -      AC switch
      1    -           -      AC compressor on request
      2    -           -      Radiator fan request
      3    -           -      ?
      4    -           -      ?
      5    -           -      ?
      6    -           -      ?
      7    -           -      ?
3     -    -           -      ?
4     -    -           -      ?
5     -    -           -      ?    
6     -    -           -      ?
7     -    -           -      ?    

Abbreviations:
? - unknown or unused
ABS - Antilock Braking System
APA - Accelerator Pedal Angle
ATF - Automatic Transmission Fluid
CC - Cruise Control
CLOL - Closed Loop / Open Loop
DTC - Diagnostic Trouble Code
ECT - Engine Coolant Temperature
ES - Engine Speed
IPW - Injection Pulse Width
MAP - Manifold Absolute Pressure
MIL - Malfunction Indicator Light
MRP - Manifold Relative Pressure
TPOA - Throttle Plate Opening Angle
VDC - Vehicle Dynamic Control
VS - Vehicle Speed


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1 post ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 10 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Style based on FI Subsilver by phpBBservice.nl