Coding M modules in a non M car

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
To summarize my whole M Drive in non-M car as of right now you need:
  • M3 Steering wheel buttons
  • M3 SZL
  • IKM0S
  • M3 GWS (or 135/335 GWS with Olza software)
  • M3 DKG software (with Olza software for enabling M Drive)
  • M3 DSC software (still don't know how to trigger MDM here)
  • M3 JBBF software for Servotronic Sport mode (again, don't know how to trigger this)
Assuming it doesn't, If IKM0S could be modified to output the M_ACT signal I think the Drive Logic settings, MDM settings, and Servotronic settings would work just fine.
 
  • Like
Reactions: derekgates

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
No. We need momentum set (2) or rollback (1) for a sec, then (0) again. But i am not sure. I can give to @RSL modified code.
Interesting. I never saw the M_ACT go to zero in my logs. It was always 1 or 2. 0x399 only popped up when the M button was pressed, it wasn't continuously advertising like I would have expected.
 

aus335iguy

Colonel
Nov 18, 2017
2,258
809
0
Down under
Ride
335i DCT 2009
A can shield producing the right combination for testing would help here. We can use Superwoofys sketch as a start. Once we figure out how it works we can look at how we implement it more permanently
Another fun fact Non M SZL can work with M3DSC but when installing it can take a couple of goes for the DSC to accept. I still struggle to understand why a specific button block and SZL is required... it makes no sense but then again nothing else does either
 

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
Keeping this here to continue my string of thoughts. Not sure why there are two threads for this now...

I did more data logging, focused on 0x399 and making sure it could be reproduced accurately and found some interesting things. It's transmitted three time each time the M button is pressed, 160ms apart, and then again every 10 seconds (I wasn't being patient enough.) There is a counter that increments 0 -> E, in the upper nibble of Byte0, every time the packet is transmitted, and what the IKM0S docs calls a "checksum" in the lower nibble of Byte0 that I can't figure out. Any thoughts?

1610730827158.png


I also looked around for a while and couldn't find the status of the DSC (on/off/MDM) or the status of the Power (normal/sport/sport+.) I would have through they would have been transmitted by the DSC and DME respectively but 0x19E (DSC Status) doesn't have the DSC mode, and 0x1D0 (Motor Data) doesn't have the Power mode.
 
Last edited:

aus335iguy

Colonel
Nov 18, 2017
2,258
809
0
Down under
Ride
335i DCT 2009
Keeping this here to continue my string of thoughts. Not sure why there are two threads for this now...

I did more data logging, focused on 0x399 and making sure it could be reproduced accurately and found some interesting things. It's transmitted three time each time the M button is pressed, 160ms apart, and then again every 10 seconds (I wasn't being patient enough.) There is a counter that increments 0 -> E, in the upper nibble of Byte0, every time the packet is transmitted, and what the IKM0S docs calls a "checksum" in the lower nibble of Byte0 that I can't figure out. Any thoughts?

View attachment 48112

I also looked around for a while and couldn't find the status of the DSC (on/off/MDM) or the status of the Power (normal/sport/sport+.) I would have through they would have been transmitted by the DSC and DME respectively but 0x19E (DSC Status) doesn't have the DSC mode, and 0x1D0 (Motor Data) doesn't have the Power mode.
This thread was specifically for flashing and coding of modules the other will be for MDrive/MDM. The mods will move it eventually. @doublespaces
 

jakeg

Specialist
Apr 29, 2020
80
31
0
Read through the post, successfully converted my dsc software over to the m3. The issue that Im having now, is that I cant figure out how to use the dtc button to turn off dtc... I ran a wire from pin 41 on the pump to the button between the dash vents. Nothing worked, do I have to have the M3s dedicated dsc button?

09/09 build date e92 335i.
 

aus335iguy

Colonel
Nov 18, 2017
2,258
809
0
Down under
Ride
335i DCT 2009
The pin on the DSC.... let me find it for you hold on

Edit you were right it Pin 41 on DSC should work
 
Last edited:

jakeg

Specialist
Apr 29, 2020
80
31
0
The pin on the DSC.... let me find it for you hold on

Edit you were right it Pin 41 on DSC should work
What do i wire it to? I tried pin 41(from dsc) to the dtc button (pins 1&3 below the blinkers) but it did nothing. From what was said earlier in the post, the dtc button had to be wired to the dsc directly.
 

jakeg

Specialist
Apr 29, 2020
80
31
0
The DTC button and I believe it pulls to ground when pressed but I’d need to check that
Im pretty sure its on a bus. When I plugged the dsc commection to the dtc pin 3, inpa kept recognizing it changing (pressed/not pressed). Im assuming the m3s dtc button is just a normal +/out/ground?

(Disregard) edit well i coded it back to stock, and tomight when I went to go out all of the abs lights were on and the windshield wipers were on... checked the frm module and it seemed fine. The dsc pump doesnt show up on inpa so thats probably the culprit. Tomorrow Ill resurrect it and just keep it on the stock software...
 
Last edited:

jakeg

Specialist
Apr 29, 2020
80
31
0
That’s right. The button on a 335 goes to the JB. You need to disconnect and reconnect to a ground and pin 41
Lol is there a forum on saving fried modules? I think my dsc died. It was fine earlier after i coded back to stock.

edit again: it just wasnt plugged in all the way. lol.
 
Last edited:

Olza

Corporal
Feb 2, 2020
233
236
0
Minsk, Belarus
Ride
BMW 320d
Lets talk about Display RPM Dynamization. Ive read that DME docs.

KOMBI - DZM_DISP_RPM (source) wert_01 and DZM_UMRECHNUNG (conversion?) wert_02. This is what M3 requested. Without it your displayed RPM falls to zero while stand still. This is OK.

DCT - That request RQ_GRB_DYNS_DISP_RPM_ENG (LV_N_DISP_DYN) (2 bits) broadcasted from TCU in 0x10A and 0x1A2 GETRIEBEDATEN CAN messages. And here is all clear: in both M3/GTS and x35/Z4 versions that trigger calculated via common calibration data BUT in x35/Z4 flash condition value for broadcasting this status is NOT enabled (i can change it and i did in my M3 KOMBI coding with big numbers on standart 135is flash and GWS). So this is true and works only in M3/GTS. OK.

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 @AzNdevil ?
 
Last edited:

jakeg

Specialist
Apr 29, 2020
80
31
0
What makes you think it’s fried ?
Update: it wasnt fried. I reflashed it to the m3 dsc flash again and it worked fine,just like before. I connected the dtc button to ground and no lights come up on the dash. I check the continuity and its fine. Does the m3 have a different light than the standard 335 kombi? If thats true, how would I check to see if dtc is on or not?
 

RSL

Lieutenant
Aug 11, 2017
937
501
0
No. We need momentum set (2) or rollback (1) for a sec, then (0) again. But i am not sure. I can give to @RSL modified code.
I wouldn't necessarily be opposed to testing program changes, but I've had mixed results, so I'd want to be really, really sure it isn't going to corrupt or leave TCU stuck in boot loop before flashing anything.

It will probably be a few weeks before I'm able to spend time out there messing with anything in-depth or that might become in-depth though.
 
  • Agree
Reactions: Olza