Coding M modules in a non M car

superwofy

Corporal
Jan 18, 2021
105
140
0
Interesting... Why off a seperate button and not off the steering wheel/arduino you already have ?

The EDC button should have two indicator leds. I didn't have a way of displaying this anywhere so I'm using the Z4 button's built in LED and another just below the button to indicate sport+.
Couldn't/wouldn't get an M3 console since LCI CIC + manual + RHD is beyond rare - also didn't want to bother making a switch input to the CAN module (M POWER).


I also wanted to control the dampers separately from the steering wheel button. The funny bit is that the SVT module will look at EDC status to switch assistance curves which means I'm inevitably still tying up more than one thing to that button. At least steering+dampers makes sense.
 

Mr Rage

Lurker
Feb 12, 2020
40
21
0
27
Crewe
Ride
2009 E92 335i M-DCT IKM0S 2.81
can’t wait to hear more about the edc retrofit. Well done on your progress so far.
 

dzid_

Specialist
Feb 22, 2018
54
35
0
US
Ride
135i 2011 DCT
Yes, the DSC button and MDM button are wired exactly the same. They go to the JBBF then over F-CAN to the DSC. The steering wheel buttons go to the SZL which then goes over F-CAN to the DSC.

You may have to code the JBBF to send a different button press message to the DSC but that would surprise me, I'd think the 1M DSC firmware would just interpret the press command differently.
Read a bit back in this thread; in short as I understood the difference:

- M3 - MDM mode is achieved via a message send from the DME to the CANbus picked up by SZL, Gearbox and DSC
- 1M - DSC receives signal via physical button on dash send via a direct wire attached to the DSC module

A) The 1M DME did not has this logic onboard so workaround was chosen via the cable
B) The M3 MDM includes more and is governed in essence by the DME

Last, the M3 DSC firmware is best, the 1M is better then the rest but it's designed around a not so super suspension of the 1M and is more intrusive and is also designed to compensate the flaws of the 1M setup
Ok, who is telling the truth regarding 135i vs 1M ? :)

Assuming it is on CAN... then basically we still don't know which message controls MDM traction on 1M ?
Perhaps 0x399 from DME or even 0x3CA from CIC? Was there1M without CIC?

Or is it the problem that 0x316 doesn't even trigger from JBBF for some unknown reason? But then how would long-press work? wtf
 

RSL

Lieutenant
Aug 11, 2017
937
501
0
Amg is telling the truth.

IIRC, 0x3CA is M3 only. It allows the settings via CIC to be read and applied, but they don't work without M3 DME. 1M doesn't even have an MDrive menu for adjustable settings. E8x/E9x CIC with M3 M Drive coded in can read the setting values to populate them when enabled, but CIC can't be used to change or save the settings with MSD81. At least not with stock programming.

For me, long press was DSC off and seemed like short press did nothing. Maybe short was triggering something I wasn't aware of, but the Kombi light/cluster warning only came on with long press. I don't think I specifically have any CAN logs to see if short changed any messages at all. In short, no idea what triggers short press/MDM traction control, but hopefully, that answered something lol

I'm 335is, but non-M just the same, and can't imagine there are any significant differences in how things operate on a non-M 1er.
 

amg6975

Sergeant
Oct 27, 2019
278
184
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
Ok, who is telling the truth regarding 135i vs 1M ? :)

Assuming it is on CAN... then basically we still don't know which message controls MDM traction on 1M ?
Perhaps 0x399 from DME or even 0x3CA from CIC? Was there1M without CIC?

Or is it the problem that 0x316 doesn't even trigger from JBBF for some unknown reason? But then how would long-press work? wtf

We both are MDM and M-Drive are two different buttons on the 1M. MDM is where the DSC button is in the 135, and does in fact have a wire directly to the DSC module, just like the DSC button on the M3. The M-Drive button on the steering wheel that only changes the pedal map in the DME. This button goes to the SZL which the sport version of sends a CAN message 0x1D9 with the button's status.

In the 1M nothing else happens with the steering wheel button, there is no long press, there is nothing to configure, the CIC has nothing to do with any of it. In the M3 the DME updates packet 0x399 to change the car's settings based on the M-Drive button.

Edit: there is nothing on the CAN in the 1M that controls the traction control settings, it's purely the MDM button on the dash. 0x399, 0x3CA, and 0x316 do not exist in the 1M.

Edit Edit: now I don't know. Maybe the 1M MDM does go to the JBBF then to the DSC like the non-M E82/E9x.... If I wrote that before I probably looked it up.

Edit Edit Edit: I was telling the truth before. The MDM button goes to the JBBF then over CAN to the DSC.
1631575572199.png
 
Last edited:
  • Like
Reactions: RSL and dzid_

RSL

Lieutenant
Aug 11, 2017
937
501
0
To clarify any confusion from my post, 335is with 1M DSC program/coding and other modules 1M coded, the MDM/DSC button in the dash was never touched and deactivated DSC completely with long press, I didn't rewire anything to the DSC module.

0x399 is another story.
 
  • Like
Reactions: dzid_ and amg6975

amg6975

Sergeant
Oct 27, 2019
278
184
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
To clarify any confusion from my post, 335is with 1M DSC program/coding and other modules 1M coded, the MDM/DSC button in the dash was never touched and deactivated DSC completely with long press, I didn't rewire anything to the DSC module.

0x399 is another story.
Short press should activate MDM and illuminate the light if you have an M3 KOMBI.
 

dzid_

Specialist
Feb 22, 2018
54
35
0
US
Ride
135i 2011 DCT
Edit Edit: now I don't know. Maybe the 1M MDM does go to the JBBF then to the DSC like the non-M E82/E9x.... If I wrote that before I probably looked it up.
That's funny. :) I think you still may be right.
You were also speculating at the time, that perhaps a simple coding (in DSC or JBBF) could re-enable the single press functionality.

Even though stock 1M doesn't have 0x399, DSC may still listen to it (like the M3's DSC?). I think it was suggested that 1M DSC still listens to modes on the CAN:
1M programming still listens to the bus, and the DSC button still works to turn traction control completely off without re-wiring. I do not believe anyone has been able to get MDM working with the 1MDSC flash yet though.
(Btw, if 0x399 only appears on button presses on M3 then maybe is easy to miss it in general - could 1M have it nevertheless?).


To sum up, my goal is to change the firmware of the 135i DSC to M and nothing else. But not lose DSC button.
Basically now I am thinking, that if there is no coding trick on DSC, then what are the options. ...arduino with 0x399 or rewire the button to DSC (but will we loose long-press then, haha)

I will have to investigate the electrical schematic in ISTA-D to see if it is hardwired or what :)
 
Last edited:

amg6975

Sergeant
Oct 27, 2019
278
184
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
It is not hardwired. I screenshotted the diagram. 0x399 is broadcast when the button is pressed as well as every 10 seconds in the M3. I guarantee 0x399 is not in the 1M, 135, or 335. I think if you read farther back in this thread there was a discussion about enabling it in the 135/335 DME but it never went anywhere.
 
  • Like
Reactions: dzid_

amg6975

Sergeant
Oct 27, 2019
278
184
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
Also as a data point, with the M3 DSC in a 135 the dash DSC button does nothing no matter how it's coded.
 
  • Like
Reactions: dzid_

dzid_

Specialist
Feb 22, 2018
54
35
0
US
Ride
135i 2011 DCT
Also as a data point, with the M3 DSC in a 135 the dash DSC button does nothing no matter how it's coded.
So if it is not 0x399, then perhaps some other message to be present or some value set in order to allow a single press to work. How strange.
Maybe some engine condition from 135i DME is inhibiting the single press.
Though that would mean we may not be able to use arduino to allow the DSC MDM, because we cannot change values of existing CAN messages. ;)

At least we "know" it is a network/software issue.
 

dzid_

Specialist
Feb 22, 2018
54
35
0
US
Ride
135i 2011 DCT
Also as a data point, with the M3 DSC in a 135 the dash DSC button does nothing no matter how it's coded.
Do you know how that happens? Is it like this:
DTC Button --> JBBF (fcan) -> DSC (ptcan)-> JBBF (kcan)-> Kombi ? In that case, this observation wouldn't prove anything. I think.
1631578412554.png
 
Last edited:

amg6975

Sergeant
Oct 27, 2019
278
184
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
So if it is not 0x399, then perhaps some other message to be present or some value set in order to allow a single press to work. How strange.
Maybe some engine condition from 135i DME is inhibiting the single press.
Though that would mean we may not be able to use arduino to allow the DSC MDM, because we cannot change values of existing CAN messages. ;)

At least we "know" it is a network/software issue.

Yes, it's a different message that the JBBF sends that the DSC reads the button status from. Unless the 1M has different JBBF software that changes this then the button should work just as the 1M. Seeing how the latest 135/335 JBBF has the option to turn on Servotronic then I'd guess the button is the same as the 1M. You'll [probably] need a 1M (maybe M3) KOMBI to see the MDM indicator though.
 

amg6975

Sergeant
Oct 27, 2019
278
184
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
Do you know how that happens? Is it like this:
DTC Button --> JBBF (fcan) -> DSC (ptcan)-> JBBF -> Kombi ? In that case, this observation wouldn't prove anything. I think.
View attachment 59150

Neither the button status nor the status would be on F-CAN. All communication would be on the PT-CAN.

DSC status/mode should be in 0x19E

Button -> JBBF -(PTCAN)-> DSC -(PTCAN)-> JBBF -(KCAN)-> KOMBI
 

dzid_

Specialist
Feb 22, 2018
54
35
0
US
Ride
135i 2011 DCT
Neither the button status nor the status would be on F-CAN. All communication would be on the PT-CAN.

Button -> JBBF -(PTCAN)-> DSC -(PTCAN)-> JBBF -(KCAN)-> KOMBI
You are right. I didn't notice in my log it was PT-CAN !

That opens it up to a lot of bad possibilities, such as direct handshaking with DME, before it is actually enabled in DSC.
In other words, DTC message 0x316 being on PT-CAN implies that engineers had some reason to think that other powertrain modules may need to register the press before the DSC...

Edit:
But did we have people here running IKM0S (1M DME firmware) together with 1M DSC? Did the button not work for them either?
 

dzid_

Specialist
Feb 22, 2018
54
35
0
US
Ride
135i 2011 DCT
Are we actually sure MDM doesn't work??????????
What if it is just the Kombi not showing it?

I think that on 135i, the DSC-off confirmation is sent on 0x19E.
The 0x19E is on PTCAN, but I think it is mirrored by JBBF to KCAN. I don't know because I am only logging fcan and ptcan.
1631580580760.png


On 135i the status changes in Byte1 / bit4 of 0x19E:
1631581733033.png


Can someone with 1M DSC check if anything changes on 0x19E after short-pressing the button? Perhaps MDM is getting enabled but has a different bit and that is why non-M Kombi doesn't display anything.
 

amg6975

Sergeant
Oct 27, 2019
278
184
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
That's what I said. There's no reason it won't work, the KOMBI just won't show it.
 

RSL

Lieutenant
Aug 11, 2017
937
501
0
I didn't see what the bytes/bits were in any quick search, but 2 and 7 seem obvious counter/checksum. 1 is the only one changed immediately before and after press, but then changes again later with no press logged. Not sure why 5 changes at different times, unless there were additional presses that weren't logged, but 6 (timer?) clearly coincides with 5. It's an old log, no recollection on how long the press was, but doubtful it was a short. It would've been full off by the second record after press for sure (E4).

DSC_can.png
 

dzid_

Specialist
Feb 22, 2018
54
35
0
US
Ride
135i 2011 DCT
On stock 135i, only that one bit goes low and stays there after short-press.

(Byte5 is set to 0x41 when you press foot brake. Byte 6 is brake pressure or rather master cylinder pressure.)

So it seems, you had for one sample byte 1 = 0xF0 !! - that is what 135i shows after DTC was pressed. But in 135i it stays like that, while 1M sets that bit immediately back to 0 and then plays with bits in the lower half of Byte1. My interpretation is as follows so far:
1631624268589.png

Though it could be wrong because as you said it might have been the long-press...
One day I will make sure all of these bits correspond correctly to DSC ON, DTC ON, DSC OFF, MDM ON, or something like that.

Btw, I was stupid. In all these BMW messages I always thought there are two counters. Of course, it is probably one counter and second one is a checksum that looks like a counter for mostly static messages. I thought the offset between them is the checksum - well I guess that is one way of thinking actually. :)



I think, once I flash 1M DSC, I will want to synchronize DTC status with the DCT sport button (hopefully via 0x315 message) to have an LED indicator that DTC is on + Sport. If both-way sync is not possible, the one-way sync is (via 0x316). Unless that will be causing me to lose Sports accelerator pedal mapping, as it does in stock 135i, then I wouldn't want that.
 
Last edited: