Siemens MS43 DME
From BMWeb Wiki
| Unit | Engine computer (DME) |
|---|---|
| Cars | E46 six-cylinders, 2001-2003 |
| CPU | Infineon C167 |
| Software read | MS430069 |
| Gearbox messages | 0x43D AMT1, 0x43F EGS1 |
| Faults covered | 134, 129 |
The engine computer of the 2001-2003 E46 six-cylinders. This page covers its side of an automated gearbox: the 0x43D frame, fault 134, and how it learns which gearbox it has. Read from software MS430069 with a stock calibration.
CAN messages
The DME's message objects fix what it can hear. Anything else on the bus is ignored, under any name. firmware
| Direction | Identifiers |
|---|---|
| Receives | 0x43F EGS1 (automatic), 0x613 and 0x615 (cluster), 0x153 and 0x1F3 (DSC), 0x43D AMT1 (automated manual), 0x1F5 (steering angle) |
| Sends | 0x316, 0x329, 0x545 |
Which gearbox it thinks it has
The DME is not coded for a gearbox and never reads the vehicle order. It learns the variant from the bus and keeps it.
- One bit is all diagnostics show. ECU_CONFIG's EGS_VORHANDEN and GE_VORHANDEN are the same bit (response byte 3, mask
0x10): a CAN gearbox is present. Nothing in the diagnostic description says whether it is an automatic or an automated manual, and no job writes it. BMW data - With 0x43F on the bus it learns a CAN gearbox; take 0x43F away, clear the learned variants with ADAPT_VARIANTEN_LOESCHEN, and after a power cycle the bit reads 0 again. field report
- Once learned it is kept until ADAPT_VARIANTEN_LOESCHEN clears it. field report
Fault 134
"SSG-Eingriff unplausibel" is three monitors under one code. The fault-type byte says which. BMW data
| Type | Text | OBD |
|---|---|---|
0x7D | SSG-Eingriff unplausibel: the frame's state is impossible | P1670 |
0x7E | SSG-Moment unplausibel: the torque request does not fit | P1653 |
0x7F | Timeout Message Counter: the alive counter stopped | P1654 |
A missing 0x43D is a different fault, 129 "Timeout SSG-Botschaft". So 134 means the frame arrives and its content is rejected.
The freeze frame stores STATE_AMT (0x8F), STATE_ERR_AMT
(0x90), the DME's own torque TQI (0x91) and the
gearbox's torque TQI_AMT (0x92). The two torques are stored at
4.01176 Nm per bit, which is the freeze frame's scale, not the frame's.
BMW data
STATE_ERR_AMT
One routine writes it every 10 ms from the last 0x43D. The fault sets after about 0.2 s in an error state. firmware
| Value | Cause |
|---|---|
0x00 | Plausible |
0x01 | No shift flagged, but STATE_AMT is not 0, or the torque byte is 10 Nm or more |
0x11 | Shift flagged with STATE_AMT 0 and byte 0 bit 7 clear |
0x10 | Shift flagged, STATE_AMT 0, bit 7 set, but torque above 0 or road speed above about 15 km/h |
0x20 | Shift state held too long: state 1 or 3 over 2.3 s, state 2 over 5.8 s |
0x21 | State 1 or 3: requested torque more than 60 Nm above actual for over 0.35 s |
0x22 | State 2: clutch field 3 for over 0.2 s |
0x30 | Byte 6 checksum wrong |
0x40 | Frame missing |
0x50 | Counter unchanged for 0.25 s |
Other values, such as 0x48, are not written by this routine.
The 0x43D frame
As the DME reads it. firmware
| Byte | Bits | Meaning |
|---|---|---|
| 0 | 0-2 | Gear |
| 0 | 3 | LV_GS, shift in progress |
| 0 | 5-6 | STATE_AMT, the shift state (read as (byte0 >> 5) & 3) |
| 0 | 7 | Checked together with LV_GS, see 0x10 and 0x11 above |
| 3 | all | Requested torque, absolute, 1.5625 Nm per bit (400 Nm full scale) |
| 5 | 0 | LV_GP, gearbox protection: invokes the road-speed limit c_vs_max_amt |
| 5 | 2-5 | Alive counter, one step per frame |
| 5 | 6-7 | Clutch state |
| 6 | all | Checksum: 0xFF - min(0xFF, byte3 + counter) |
When no shift is in progress
Every 10 ms. This clears fault 134 with the engine off and running. field report
- Byte 0: gear in bits 0-2, LV_GS 0, STATE_AMT 0.
- Byte 3:
0x00. A "neutral"0xFFreads as about 398 Nm and gives a permanent0x01. - Byte 5: the counter in bits 2-5, the clutch state in bits 6-7.
- Byte 6:
0xFFminus the counter, since byte 3 is 0.
During a shift
- Byte 0 = gear |
0x08| (STATE_AMT << 5), with STATE_AMT 1, 2 or 3. LV_GS and STATE_AMT go up together and down together; LV_GS on its own is never valid. - Byte 3 = the torque wanted, never more than 60 Nm above what the engine makes for longer than 0.35 s.
- Byte 6 recomputed every frame.
- Finish inside 2.3 s in states 1 and 3, 5.8 s in state 2, and in state 2 do not report clutch state 3 for more than 0.2 s.
See also
- Diagnostics and the K line - How the E46-era units talk on the K line, what their answers mean, and what the cables and adapters in between can carry