M-Drive and MDM in non M cars

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
Kind off topic but does anyone have any clues to where the "Power" status of the ECU (MSS60) and/or the DSC status (On/Off/MDM) are on CAN? I've tried logging the usual suspects (19E and 1D0) and came up empty. Something is telling the NFRM to turn the Power light on, and the KOMBI to turn the DSC/MDM lights on/off, I just can't sniff it out.
 

carabuser

Lieutenant
Oct 2, 2019
884
1
783
0
UK
Ride
Z4 35i & 335i
Has anyone tried using these tables?

1610825640507.png


The value in those tables is written to St_mdrv_dsc, St_mdrv_mod_grb and St_mdrv_grb_stg respectively when the sport button is active.

Those are IKC0S addresses but I can find the INA0S addresses if anyone wants to try.
 
  • Like
Reactions: aus335iguy

aus335iguy

Colonel
Nov 18, 2017
2,251
805
0
Down under
Ride
335i DCT 2009
i logged from the szl and the wheel angles are actualyl correct without changing to a m3 szl but... on the m-dsc program its in the coding

View attachment 48141

however, this implies the brake pressure calculations in the dsc will be off if a m-dsc or m-dsc program running on a non-m dsc
another thing would be the different sized valving in the m dsc hardware compared to non m, different master cylinder, different caliper diameters, and the list goes on and on........

tldr; it is possible when mdm kicks in, too much brakes get applied and make things worse, but then it might not be a problem especially for guys with bbk since most kits out thre throw all of these considerations out the window

Does that option exist in non M DSC though?
 

aus335iguy

Colonel
Nov 18, 2017
2,251
805
0
Down under
Ride
335i DCT 2009
Has anyone tried using these tables?

View attachment 48146

The value in those tables is written to St_mdrv_dsc, St_mdrv_mod_grb and St_mdrv_grb_stg respectively when the sport button is active.

Those are IKC0S addresses but I can find the INA0S addresses if anyone wants to
I’d need IJEOS or IKMOS and completely stock 335 DCT hardware ... I don’t have a can logger do you think it’ll be an obvious change ?
 

carabuser

Lieutenant
Oct 2, 2019
884
1
783
0
UK
Ride
Z4 35i & 335i
I’d need IJEOS or IKMOS and completely stock 335 DCT hardware ... I don’t have a can logger do you think it’ll be an obvious change ?

From the looks of it you just use this table to choose values:
1610826560833.png


So a value of 5 in K_SPORT_MDRV_DSC should put DSC into "DTC M-track-mode"

I don't understand how the DKG tables would work though. From our testing with Olza on the drivelogic levels within the DCT we know that the 335i level is just fixed to change when in sport mode and the Z4 DCT takes the levels from the mode selector switch which is DL1 in Normal, DL2 in sport and DL3 in sport+. Maybe the DCT software for the M3 takes the drivelogic level from the DME in addition to the SZL when MDRV is active? If so that would mean the DSC module would probably need to be flashed using the M3 software to get it to listen to this command from the DME.
 

Olza

Corporal
Feb 2, 2020
231
230
0
Minsk, Belarus
Ride
BMW M240 xdrive
Has anyone tried using these tables?

View attachment 48146

The value in those tables is written to St_mdrv_dsc, St_mdrv_mod_grb and St_mdrv_grb_stg respectively when the sport button is active.

Those are IKC0S addresses but I can find the INA0S addresses if anyone wants to try.
this is tables or constants? or variables? because when you put m-button that values distributed and forced to setup in DCT.
it works for sure only in m3 flash of DCT and M3 program DME.
 

AzNdevil

Lieutenant
Staff member
Nov 4, 2016
566
269
0
Hong Kong
Kind off topic but does anyone have any clues to where the "Power" status of the ECU (MSS60) and/or the DSC status (On/Off/MDM) are on CAN? I've tried logging the usual suspects (19E and 1D0) and came up empty. Something is telling the NFRM to turn the Power light on, and the KOMBI to turn the DSC/MDM lights on/off, I just can't sniff it out.

try these... http://www.loopybunny.co.uk/CarPC/k_can.html some of them apply to our cars
the lights and stuff, i believe the kombi is listening for the 0x399 message...

Has anyone tried using these tables?

View attachment 48146

The value in those tables is written to St_mdrv_dsc, St_mdrv_mod_grb and St_mdrv_grb_stg respectively when the sport button is active.

Those are IKC0S addresses but I can find the INA0S addresses if anyone wants to try.
i think @RSL tried playing with them a while ago but it these unfortunately dont touch byte 1 bit0-1
iirc its in one of the xdfs he shared a long while ago

Does that option exist in non M DSC though?

yes, in fact the non-m dsc has more options compared to the m-dsc
take a look in ncsdummy for mk60_87.c0a and mk60_m3.c08, and compare the data in each wert, you will understand see what i mean

1610827362043.png


1610827407401.png
 

carabuser

Lieutenant
Oct 2, 2019
884
1
783
0
UK
Ride
Z4 35i & 335i
i think @RSL tried playing with them a while ago but it these unfortunately dont touch byte 1 bit0-1
iirc its in one of the xdfs he shared a long while ago

I could try it on INA0S. Those values aren't used unless "CW_SPORT_SZL" is set to 1.

In the 1M bin that is set to 1. In INA0S it's 0.
 
  • Like
Reactions: amg6975

aus335iguy

Colonel
Nov 18, 2017
2,251
805
0
Down under
Ride
335i DCT 2009
My theory is that the Idrive writes those values when the user selects them. Then when “sport” is active each module in turn looks for these and they are broadcast by the DME
 

aus335iguy

Colonel
Nov 18, 2017
2,251
805
0
Down under
Ride
335i DCT 2009
try these... http://www.loopybunny.co.uk/CarPC/k_can.html some of them apply to our cars
the lights and stuff, i believe the kombi is listening for the 0x399 message...


i think @RSL tried playing with them a while ago but it these unfortunately dont touch byte 1 bit0-1
iirc its in one of the xdfs he shared a long while ago



yes, in fact the non-m dsc has more options compared to the m-dsc
take a look in ncsdummy for mk60_87.c0a and mk60_m3.c08, and compare the data in each wert, you will understand see what i mean

View attachment 48148

View attachment 48149
Great, how many people who’ve done a servotronic/M3 rack retrofit know that this needs changing ???
 

carabuser

Lieutenant
Oct 2, 2019
884
1
783
0
UK
Ride
Z4 35i & 335i
My theory is that the Idrive writes those values when the user selects them. Then when “sport” is active each module in turn looks for these and they are broadcast by the DME
Very possible. I've defined everything in INA0S, should be really obvious if they work or not as I can have it change the gearbox into sequential mode (manual) and turn DSC off when sport is pressed.

Might test tomorrow. It's cold, wet and dark outside at the moment!
 

carabuser

Lieutenant
Oct 2, 2019
884
1
783
0
UK
Ride
Z4 35i & 335i
this is tables or constants? or variables? because when you put m-button that values distributed and forced to setup in DCT.
it works for sure only in m3 flash of DCT and M3 program DME.
Those are variables in DME.
 

carabuser

Lieutenant
Oct 2, 2019
884
1
783
0
UK
Ride
Z4 35i & 335i
I know I'm filling the thread a bit with random stuff but I found something in addition to CW_SPORT_SZL that will stop those mode selectors working. It also requires St_mdrv_taster to be active. The description for that signal is:

The signal indicates whether the M-Drive button has been pressed. In the M vehicles, this is fixed on the special function 2 button placed.

So it might be that unless the M-Drive button is pressed these tables will be ignored. This could be easily patched out with a logic change, I can just change the AND to an OR so it will active M-Drive when the sport button is active.
 

Olza

Corporal
Feb 2, 2020
231
230
0
Minsk, Belarus
Ride
BMW M240 xdrive
Those are variables in DME.
so i guess COMBI stores or reads that variables from DME, shows and make changes via menu. after pressing mdrive - values peeked and broadcasting to DCT, EPS and DSC. right?

look please for
DME - That request N for KOMBI DISP_RPM_ENG broadcasted from DME in 0x175 DISP_ENGDAT (100ms) CAN message and ruled via calibration value C_N_DISP_DYN_ENA (condition for sending, 0:do not send, 1:=N_DISP_DYN, 2:=N_CAN). So dynamisated N for KOMBI display is broadcasted from DME after TCU request! Im pretty sure it is TRUE in M3 calibration, but NOT sure it is TRUE in our x35/Z4 DME. Who can check in disassembly value of c_n_disp_dyn_ena (0xa080c96e)?
 

carabuser

Lieutenant
Oct 2, 2019
884
1
783
0
UK
Ride
Z4 35i & 335i
so i guess COMBI stores or reads that variables from DME, shows and make changes via menu. after pressing mdrive - values peeked and broadcasting to DCT, EPS and DSC. right?

look please for
DME - That request N for KOMBI DISP_RPM_ENG broadcasted from DME in 0x175 DISP_ENGDAT (100ms) CAN message and ruled via calibration value C_N_DISP_DYN_ENA (condition for sending, 0:do not send, 1:=N_DISP_DYN, 2:=N_CAN). So dynamisated N for KOMBI display is broadcasted from DME after TCU request! Im pretty sure it is TRUE in M3 calibration, but NOT sure it is TRUE in our x35/Z4 DME. Who can check in disassembly value of c_n_disp_dyn_ena (0xa080c96e)?
That is set to 1. "N_DISP_DYN"
 
  • Like
Reactions: Olza

RSL

Lieutenant
Aug 11, 2017
937
501
0
My theory is that the Idrive writes those values when the user selects them. Then when “sport” is active each module in turn looks for these and they are broadcast by the DME
It does update CIC to reflect when coded with M3/DKG, the problem is, none of the actual functions respond to it (with M3 GWS and bin).

I'm pretty sure I tried everything set on in INA0S same as IKM0S, including SZL, but the logic switches don't align between roms and I had to make some best guesses on it without a decompile. @carabuser if you find the INA0S addresses for them all, please post so I can confirm mine.

Z4 may be different, but without 1M/M3 DSC+M drive SZL, neither IKM0S or INA0S did squat with the button. The logic change may resolve that. You may have to use CAN. I haven't tried setting rng_l manual switch in DME, but I'm not sure it will hit everything.

Without M drive SZL, INA0S did squat, after SZL, at least the light came on Kombi, but it was also still switching media source. Might've had some coding mismatches still.

so i guess COMBI stores or reads that variables from DME, shows and make changes via menu. after pressing mdrive - values peeked and broadcasting to DCT, EPS and DSC. right?

look please for
DME - That request N for KOMBI DISP_RPM_ENG broadcasted from DME in 0x175 DISP_ENGDAT (100ms) CAN message and ruled via calibration value C_N_DISP_DYN_ENA (condition for sending, 0:do not send, 1:=N_DISP_DYN, 2:=N_CAN). So dynamisated N for KOMBI display is broadcasted from DME after TCU request! Im pretty sure it is TRUE in M3 calibration, but NOT sure it is TRUE in our x35/Z4 DME. Who can check in disassembly value of c_n_disp_dyn_ena (0xa080c96e)?
I don't have a good decompile, but value comes from LV_N_DISP_DYN and is passed on 0x1A2 (Getriebedaten_2) IIRC.
 
  • Like
Reactions: aus335iguy

carabuser

Lieutenant
Oct 2, 2019
884
1
783
0
UK
Ride
Z4 35i & 335i
It does update CIC to reflect when coded with M3/DKG, the problem is, none of the actual functions respond to it (with M3 GWS and bin).

I'm pretty sure I tried everything set on in INA0S same as IKM0S, including SZL, but the logic switches don't align between roms and I had to make some best guesses on it without a decompile. @carabuser if you find the INA0S addresses for them all, please post so I can confirm mine.

Z4 may be different, but without 1M/M3 DSC+M drive SZL, neither IKM0S or INA0S did squat with the button. The logic change may resolve that. You may have to use CAN. I haven't tried setting rng_l manual switch in DME, but I'm not sure it will hit everything.

Without M drive SZL, INA0S did squat, after SZL, at least the light came on Kombi, but it was also still switching media source. Might've had some coding mismatches still.


I don't have a good decompile, but value comes from LV_N_DISP_DYN and is passed on 0x1A2 (Getriebedaten_2) IIRC.

CW_SPORT_SZL = 0x75101
K_SPORT_MDRV_DSC = 0x75102
K_SPORT_MDRV_DKG = 0x75103
K_SPORT_MDRV_DKG_STG = 0x75104

I'm putting together some RAM addresses for logging so I can see what the DME logic is doing in realtime. The DME needs to see "St_mdrv_taster = 2" before it will action those tables but from looking at the logic St_mdrv_taster should be set to 2 when the sport button is pressed.
 

Olza

Corporal
Feb 2, 2020
231
230
0
Minsk, Belarus
Ride
BMW M240 xdrive
That is set to 1. "N_DISP_DYN"
In 335/z4 dme? Strange, if so, dme broadcast dyn rpm, but control signal should come from tcu! And stock tcu did not send control for it.
maybe then non-m coded kombi didnt use n-disp-dyn, and use other source because of wert_02...
 

RSL

Lieutenant
Aug 11, 2017
937
501
0
CW_SPORT_SZL = 0x75101
K_SPORT_MDRV_DSC = 0x75102
K_SPORT_MDRV_DKG = 0x75103
K_SPORT_MDRV_DKG_STG = 0x75104

I'm putting together some RAM addresses for logging so I can see what the DME logic is doing in realtime. The DME needs to see "St_mdrv_taster = 2" before it will action those tables but from looking at the logic St_mdrv_taster should be set to 2 when the sport button is pressed.
Thanks, that's what I have and maybe would've worked fine if I corrected the coding.

St_mdrv_taster goes to 2 momentarily each time the wheel button is pressed from my logs, _anz (light) goes to 2 while it's on.

st_mdrv.png
 

aus335iguy

Colonel
Nov 18, 2017
2,251
805
0
Down under
Ride
335i DCT 2009
So looping back around
Driver sets values
Values written to DME
M button pressed
Status M drive alive
Values broad cast from DME
Perhaps the KMOBI is the one sending the status and that’s what the other modules are listening for in addition to the values to switch to and the DME m drive active ?