Advertising:
Siemens MS43 CAN Bus
CAN Bus on BMWs E46 chassis operates at a speed of 500kb/s and so does the MS43 ECU.
There is a total of 15 message boxes, that can be configured to be received or send by the C167 processor.
The messages are ordered by the CAN registers name inside the CPU beginning with 1 and ending with F. Unused boxes are not listed here.
Siemens MS43 reads the following messages for operation, if the corresponding module is present in car:
- Messagebox 1: ARBID 0x43F EGS1 Automatic Transmission
- Messagebox 2: ARBID 0x613 ICL2 Instrument Cluster
- Messagebox 3: ARBID 0x615 ICL3 Instrument Cluster
- Messagebox 4: ARBID 0x153 ASC1 Traction Control
- Messagebox 5: ARBID 0x1F3 ASC3 Traction Control
- Messagebox 6: ARBID 0x43D AMT1 Automatic Manual Transmission
- Messagebox 7: ARBID 0x1F5 LWS1 Steering Angle Sensor
Siemens MS43 sends the following messages:
- Messagebox C: ARBID 0x545 DME4 Engine Control Unit
- Messagebox D: ARBID 0x329 DME2 Engine Control Unit
- Messagebox E: ARBID 0x316 DME1 Engine Control Unit
Engine
DME1 0x316
Refresh Rate: 10ms
- Byte 0 - Bitfield
- Bit 0 - LV_SWI_IGK
- Ignition Key Voltage State
- 0 = terminal 15 off detected
- 1 = terminal 15 on detected
- Bit 1 - LV_F_N_ENG
- Crankshaft Sensor State
- 0 = no CRK error present
- 1 = CRK error present
- Bit 2 - LV_ACK_TCS
- Traction Control State
- 0 = either ASC1 was not received within the last 500 ms or it contains a plausibility error
- 1 = the ASC message ASC1 was received within the last 500 ms and contains no plausibility errors of the requirements TQI_ASR_CAN / TQI_MSR_CAN
- Bit 3 - LV_ERR_GC
- Gear Change Error State
- 0 = gear change not or partly possible
- 1 = gear change possible
- Bit 4 - SF_TQD [0]
- Bit 5 - SF_TQD [0]
- Charge Intervention State
- 0 = the required intervention can be performed completely or if there is no ASC requirement.
- 1 = the required intervention cannot be performed completely because the IGA retard limit is reached.
- 2 = the required intervention cannot be performed completely because the charge actuators are fully closed (this case is not possible with MTC without break-away mechanism)
- 3 = "limited vehicle dynamics" is active (MTC/ISA error)
- Bit 6 - Unused
- Bit 7 - LV_F_SUB_TQI
- MAF Error State
- 0 = MAF ok
- 1 = MAF error present
- Bit 0 - LV_SWI_IGK
- Byte 1 - TQI_TQR_CAN
- Indexed Engine Torque in % of C_TQ_STND (including ASR/MSR/ETCU/LIM/AMT/GEAR intervention)
- Byte 2 - N_ENG [LSB]
- Byte 3 - N_ENG [MSB]
- Engine Speed in rpm
- Calculation = HEX[MSB] * 256 + HEX[LSB]
- Byte 4 - TQI_CAN
- Indicated Engine Torque in % of C_TQ_STND (based on PVS, N, AMP, TIA ,TCO, IGA, PUC)
- Byte 5 - TQ_LOSS_CAN
- Engine Torque Loss (due to engine friction, AC compressor and electrical power consumption) in % of C_TQ_STND
- Byte 6 - TQI_MAF_CAN
- Theorethical Engine Torque in % of C_TQ_STND after charge intervention (based on MAF, IGA)
- Byte 7 - Bitfield
- Bit 0 - ERR_AMT_CAN
- Bit 1 - ERR_AMT_CAN
DME2 0x329
Refresh Rate: 10ms
- Byte 0 - Multiplexed Information
- Bit 0 - MUX_INFO [0]
- Bit 1 - MUX_INFO [1]
- Bit 2 - MUX_INFO [2]
- Bit 3 - MUX_INFO [3]
- Bit 4 - MUX_INFO [4]
- Bit 5 - MUX_INFO [5]
- MD_NORM = Refactored C_TQ_STND from 0x3FF (0-1023Nm) to 0x3F (0-1008Nm) with decreased resolution of 16Nm
- Bit 6 - MUX_CODE [0]
- Bit 7 - MUX_CODE [1]
- 0 = CAN_LEVEL
- 2 = OBD_STEUER
- 3 = MD_NORM
- Byte 1 - TEMP_ENG
- Engine (Coolant) Temperature in °C
- Calculation = (HEX * 0.75) - 48°C
- Init: 0xFF
- Min: 0x01 (-48°C)
- Max: 0xFF (142.5°C)
- Byte 2 - AMP_CAN
- Ambient Pressure in hPa
- Calculation = (HEX * 2) + 598hPa
- Init = 0x00
- Min = 0x01 (600hPa)
- Max = 0xFE (1106hPa)
- Error = 0xFF
- Byte 3 - Bitfield
- Bit 0 - LV_SWI_CLU
- Clutch Switch State
- 0 = released
- 1 = depressed
- Bit 1 - LV_LEVEL_IS
- Idle Regulator State
- 0 = idle above threshold
- 1 = idle below threshold
- Bit 2 - LV_ACK_CRU_AD_ECU
- Acknowledge of ACC1 CAN Message
- 0 = nACK
- 1 = ACK
- Bit 3 - LV_ERU_CAN
- Engine Running State
- 0 = engine stopped
- 1 = engine running
- Bit 4 - (STATE_CRU_CAN)???
- Bit 5 - STATE_MSW_CAN [0]
- Bit 6 - STATE_MSW_CAN [1]
- Bit 7 - STATE_MSW_CAN [2]
- 0 = No Button Pressed (Init Value)
- 1 = Set / Acceleration (tip-up)
- 2 = Deceleration (tip-down)
- 3 = Resume
- 4 = Deactivate (I/O)
- 7 = Error Condition
- Bit 0 - LV_SWI_CLU
- Byte 4 - TPS_VIRT_CRU_CAN
- Byte 5 - TPS_CAN
- Accelerator Pedal Position in % of PVS_MAX
- Calculation = HEX / 2.56
- Init = 0x00
- Min = 0x01 (0%)
- Max = 0xFE (99.2%)
- PVS Error = 0xFF
- Byte 6 - Bitfield
- Bit 0 - LV_BS
- Brake Switch State
- 0 = brake not actuated
- 1 = brake actuated
- Bit 1 - LV_ERR_BS
- Brake Switch System State
- 0 = brake switch system OK
- 1 = brake switch system faulty
- Bit 2 - LV_KD_CAN
- Kick Down State
- 0 = kick down not active
- 1 = kick down active
- Bit 3 - STATE_CRU_CAN [0]
- Bit 4 - STATE_CRU_CAN [1]
- Bit 5 - STATE_CRU_CAN [2]
- 0 = LV_CRU_ACT = 0
- 1 = LV_CRU_ACT = 1, constant drive (or tip-up / tip-down)
- 3 = LV_CRU_ACT = 1, resume
- 5 = LV_CRU_ACT = 1, set / acceleration
- 7 = LV_CRU_ACT = 1, deceleration
- Bit 6 - REQ_SHIFTLOCK [0]
- Bit 7 - REQ_SHIFTLOCK [1]
- 0 = no actuation is active
- 3 = actuation ISA, MTC or N_SP_IS is active
- Bit 0 - LV_BS
- Byte 7 - Unused
DME4 0x545
Refresh Rate: 10ms
- Byte 0 - Bitfield
- Bit 0 - DDE: Pre-Glow Active
- Bit 1 - LV_MIL - Check Engine Light
- Bit 2 - Unused
- Bit 3 - LV_MAIN_SWI_CRU - CRU_MAIN_SWI
- Bit 4 - LV_ETC_DIAG - EML Light
- Bit 5 - DDE: Boost Control Failure
- Bit 6 - LV_FUC_CAN - Fuel Tank Cap Light
- Bit 7 - DDE: Battery Count
- Byte 1 - FCO - Fuel Consumption LSB
- Byte 2 - FCO - Fuel Consumption MSB
- Byte 3 - Bitfield
- Bit 0 - Oil Level Error LED M5 Cluster
- Bit 1 - Oil Level Warning LED Every Other Cluster
- Bit 2 - Oil Level Error LED M5 Cluster
- Bit 3 - LV_TEMP_ENG - Coolant Overheating Light
- Bit 4 - M-Cluster Warm-Up LEDs
- Bit 5 - M-Cluster Warm-Up LEDs
- Bit 6 - M-Cluster Warm-Up LEDs
- Bit 7 - DDE: Gear Change Request
- Byte 4 - TOIL_CAN - Oil Temperature
- Byte 5 -
- Byte 6 - MSS54HP: Oil Level
- Byte 7 - Unused
Automatic Transmission
SSG1 0x43D
Refresh Rate: 10ms
- Byte 0 - Bitfield
- Bit 0 - GEAR_INFO - Active Gear
- Bit 1 - GEAR_INFO - Active Gear
- Bit 2 - GEAR_INFO - Active Gear
- Bit 3 - LV_GS - Gear Shift Active
- Bit 4 - STATE_AMT - Status Shift Process
- Bit 5 - STATE_AMT - Status Shift Process
- Bit 6 -
- Bit 7 - LV_AMT_ES - Engine Stop Request From SMG TCU
- Byte 1 - Bitfield
- Bit 0 - GEAR_SEL_DISP
- Bit 1 - GEAR_SEL_DISP
- Bit 2 - GEAR_SEL_DISP
- Bit 3 - GEAR_SEL_DISP
- Bit 4 - STATE_AMT_OBD
- Bit 5 - STATE_AMT_OBD
- Bit 6 - STATE_AMT_OBD
- Bit 7 - STATE_AMT_OBD
- Byte 2 - Bitfield
- Bit 0 -
- Bit 1 -
- Bit 2 -
- Bit 3 - LV_CITY
- Bit 4 -
- Bit 5 - LV_HPA
- Bit 6 - bitfield_FD20_20
- Bit 7 -
- Byte 3 - TQI_AMT_CAN
- Byte 4 - TQI_MAF_AMT_CAN
- Byte 5 - Bitfield
- Bit 0 - LV_GP - Gearbox Protection
- Bit 1 -
- Bit 2 - CTR_AMT - Message Counter For AMT TQI Request
- Bit 3 - CTR_AMT - Message Counter For AMT TQI Request
- Bit 4 - CTR_AMT - Message Counter For AMT TQI Request
- Bit 5 - CTR_AMT - Message Counter For AMT TQI Request
- Bit 6 - STATE_CLU_AMT - State SMG Clutch
- Bit 7 - STATE_CLU_AMT - State SMG Clutch
- Byte 6 - TQI_AMT_CPL_CAN
- Byte 7 - N_MAX_AMT_CAN - Engine Speed Limiter Override During Gearshift
EGS1 0x43F
Refresh Rate: 10ms
- Byte 0 - Bitfield
- Bit 0 - GEAR_INFO [0]
- Bit 1 - GEAR_INFO [1]
- Bit 2 - GEAR_INFO [2]
- Current Active Gear
- Bit 3 - LV_GS - Gear Shift Active
- Bit 4 - OBD_F - OBD-relevant DTC Active
- Bit 5 - LV_GP_CAN - Gearbox Protection
- Bit 6 - S_KUPPL / STATE_CC - State Converter Clutch
- Bit 7 - S_KUPPL / STATE_CC - State Converter Clutch
- Byte 1 - Bitfield
- Bit 0 - GEAR_SEL_DISP [0]
- Bit 1 - GEAR_SEL_DISP [1]
- Bit 2 - GEAR_SEL_DISP [2]
- Bit 3 - GEAR_SEL_DISP [3]
- Positionswählhebelanzeige
- Bit 4 - STATE_ETCU_OBD [0]
- Bit 5 - STATE_ETCU_OBD [1]
- Bit 6 - STATE_ETCU_OBD [2]
- Bit 7 - STATE_ETCU_OBD [3]
- OBD-Status Transmission Control Unit
- Byte 2 - Bitfield
- Bit 0 - SMG_WHL_ANZ - SMG-Wählhebelstellung
- Bit 1 - SMG_WHL_ANZ - SMG-Wählhebelstellung
- Bit 2 - Unused
- Bit 3 - Unused
- Bit 4 - Unused
- Bit 5 - PRG_INF_ANZ - Programminformationsanzeige
- Bit 6 - PRG_INF_ANZ - Programminformationsanzeige
- Bit 7 - PRG_INF_ANZ - Programminformationsanzeige
- Byte 3 - TQI_ETCU_CAN - Momenteneingriff der GS bezogen auf das indizierte Motormoment
- Byte 4 - N_ABTR - Abtriebsdrehzahl
- Byte 5 - Bitfield
- Bit 0 - L_GS - Störanzeige
- Bit 1 - L_GS - Störanzeige
- Bit 2 - TCU_TYP - Steuergerätetyp EGS/SMG
- Bit 3 - S_EGW - Schalter Getriebeölthermostat
- Bit 4 - LV_TOIL_GEAR_CAN - Schalter Getriebeölübertemperatur
- Bit 5 - Unused
- Bit 6 - DT_REINF - Drivetrain Reinforcement
- Bit 7 - DT_REINF - Drivetrain Reinforcement
- Byte 6 - DT_REINF - Drivetrain Reinforcement
- Byte 7 - TQ_CONV_CAN - Momentaufnahme Getriebe
SMG2 0x43F
The SMG2 CAN message for the E46 chassis CAN is sent from the MSS54 ECU instead of the TCU.
MSS54 has a secondary CAN bus that is completely seperated from the rest of the powertrain and acts as a gateway for the SMG2 unit.
Refresh Rate: 10ms
- Byte 0 - Bitfield
- Bit 0 - DESIRED_GEAR [0]
- Bit 1 - DESIRED_GEAR [1]
- Bit 2 - DESIRED_GEAR [2]
- Desired Gear After Shift
- 0 = Neutral
- 1 = 1st Gear
- 2 = 2nd Gear
- 3 = 3rd Gear
- 4 = 4th Gear
- 5 = 5th Gear
- 6 = 6th Gear
- 7 = Reverse
- Bit 3 - LV_GS
- Gear Shift Active
- 0 = no
- 1 = yes
- Bit 4 - Unused
- Bit 5 - GEAR_SEL_AUTO
- Gear Selector Auto Position
- 0 = no
- 1 = yes
- Bit 6 - STATE_CLUTCH [0]
- Bit 7 - STATE_CLUTCH [1]
- State Converter Clutch
- 0 = opened
- 1 = closed
- 2 = opening
- 3 = closing
- Byte 1 - Bitfield
- Bit 0 - GEAR_INFO [0]
- Bit 1 - GEAR_INFO [1]
- Bit 2 - GEAR_INFO [2]
- Bit 3 - GEAR_INFO [3]
- Current Gear Display Information
- 0 = Clear Screen
- 1 = 1st Gear
- 2 = 2nd Gear
- 3 = 3rd Gear
- 4 = 4th Gear
- 5 = Auto / D
- 6 = Neutral
- 7 = Reverse
- 9 = 5th Gear
- 10 = 6th Gear
- Bit 4 - Unused
- Bit 5 - Unused
- Bit 6 - Unused
- Bit 7 - Unused
- Byte 2 - Bitfield
- Bit 0 - GEAL_SEL [0]
- Bit 1 - GEAL_SEL [1]
- Bit 2 - GEAL_SEL [2]
- Bit 3 - GEAL_SEL [3]
- Gear Selector Indicator
- 0 = Display Off
- 1 = "0"
- 2 = "R"
- 3 = "A+"
- 4 = "A-"
- 5 = "A+/-"
- 6 = "S+"
- 7 = "S+"
- 8 = "S+/-"
- 9 = "+"
- 10 = "-"
- 11 = "+/-"
- 12 = "A"
- 15 = Display Segment Test
- Bit 4 - PRG_INF_ANZ [0]
- Bit 5 - PRG_INF_ANZ [1]
- Bit 6 - PRG_INF_ANZ [2]
- Bit 7 - PRG_INF_ANZ [3]
- Drive Logic Speed Indicator
- 0 = Drive Logic Indicator Hidden
- 1 = DSC Off Frame Extension Only
- 2 = Standard Frame and Speed 1
- 3 = Extended Frame and Speed 1
- 4 = Standard Frame and Speed 2
- 5 = Extended Frame and Speed 2
- 6 = Standard Frame and Speed 3
- 7 = Extended Frame and Speed 3
- 8 = Standard Frame and Speed 4
- 9 = Extended Frame and Speed 4
- 10 = Standard Frame and Speed 5
- 11 = Extended Frame and Speed 5
- 12 = Standard Frame and Speed 6
- 13 = Extended Frame and Speed 6
- 14 = unused
- 15 = unused
- Byte 3 - CHKSM_GEAR_INFO
- Checksum and life counter for current gear shown in cluster display
- There is a COUNTER with an initialization value of 0x00
- Calculation:
- CHKSM_GEAR_INFO = Xor COUNTER, GEAR_INFO
- CHKSM_GEAR_INFO = Negate CHKSM_GEAR_INFO
- CHKSM_GEAR_INFO = And CHKSM_GEAR_INFO , 0x0F
- CHKSM_GEAR_INFO = Lsh CHKSM_GEAR_INFO , 4
- CHKSM_GEAR_INFO = Or CHKSM_GEAR_INFO , GEAR_INFO
- COUNTER is incremented every time after the CAN message has been sent
- Byte 4 - LNG_ACC
- Longitudial Acceleration
- Calculation: (HEX / 10) - 12.7m/s²
- Min: -12.7m/s²
- Max: 12.7m/s²
- Byte 5 - Bitfield
- Bit 0 - L_GS [0]
- Bit 1 - L_GS [1]
- SMG Error State
- 0 = No Error
- 3 = Error Active (Gear Of Death)
- Bit 2 - Unused (Always 1)
- Bit 3 - TC_ACT
- Traction Control Intervention
- 0 = no
- 1 = yes
- Bit 4 - Unused
- Bit 5 - GONG
- Bit 6 - DT_REINF [0]
- Bit 7 - DT_REINF [1]
- Byte 6 - DT_REINF [2-9]
- Torque Factor On Wheels
- Calculation = HEX / 2.56
- TQ_CLU / TQ_ENG * SMG_I_HA * SMG_I_GEAR / SMG_R_RAD_DYN
- Byte 7 - TQ_CLU
- Torque On Clutch
Instrument Cluster
ICL2 0x613
Refresh Rate: 200ms
- Byte 0 - KM_CTR_CAN - Odometer LSB
- Byte 1 - KM_CTR_CAN - Odometer MSB
- Byte 2 - FTL_CAN - Fuel Tank Level (Bits 0-6)
- Bit 7 - FTL_RES_CAN - Fuel Tank Level Reserve Switch
- Byte 3 - T_REL_CAN - Running Clock LSB
- Byte 4 - T_REL_CAN - Running Clock MSB
- Byte 5 - FTL_CAN_L - Fuel Tank Level Driver Side (Bits 0-5)
- Bit 6 - Unused
- Bit 7 - Unused
- Byte 6 - Unused
- Byte 7 - Unused
ICL3 0x615
Refresh Rate: 200ms
- Byte 0 - Bitfield
- Bit 0 - TQ_ACCIN_CAN - Torque Offset For Air Conditioning Compressor (Bit 0)
- Bit 1 - TQ_ACCIN_CAN - Torque Offset For Air Conditioning Compressor (Bit 1)
- Bit 2 - TQ_ACCIN_CAN - Torque Offset For Air Conditioning Compressor (Bit 2)
- Bit 3 - TQ_ACCIN_CAN - Torque Offset For Air Conditioning Compressor (Bit 3)
- Bit 4 - TQ_ACCIN_CAN - Torque Offset For Air Conditioning Compressor (Bit 4)
- Bit 5 - LV_REQ_TCO_L - Request For Lowest Cooling Temp (c_tco_bol_ect)
- Bit 6 - LV_ACCIN - Air Conditioning Compressor Status (0=off, 1=on)
- Bit 7 - LV_ACIN - Air Conditioning Request
- Byte 1 - Bitfield
- Bit 0 - LV_REQ_HEAT - Increased Heat Request
- Bit 1 - LV_TOW - Trailer Operation Mode
- Bit 2 - LV_LGT - Day / Night Lighting
- Bit 3 - LV_HS - Hood Switch
- Bit 4 - N_ECF - Electric Cooling Fan Level (Bit 0)
- Bit 5 - N_ECF - Electric Cooling Fan Level (Bit 1)
- Bit 6 - N_ECF - Electric Cooling Fan Level (Bit 2)
- Bit 7 - N_ECF - Electric Cooling Fan Level (Bit 3)
- Byte 2 -
- Byte 3 - TAM_CAN - Ambient Temperature
- Byte 4 - Bitfield
- Bit 0 - LV_DOOR - Door Switch
- Bit 1 - LV_HBR - Hand Brake Switch
- Bit 2 -
- Bit 3 -
- Bit 4 -
- Bit 5 - LV_REQ_TCO_L -
- Bit 6 - LV_ACCIN - Air Conditioning Compressor Status (0=off, 1=on)
- Bit 7 - LV_ACIN - Air Conditioning Request
- Byte 5 -
- Byte 6 -
- Byte 7 -