Coding M modules in a non M car

RSL

Lieutenant
Aug 11, 2017
937
501
0
@aus335iguy posting here to keep it chronological for if/when they move it.

@Olza "ST_MDRV_ACT_GRB" (B1 2 lowest) is unused per IKM0S docs and always broadcasts 11 for the two bits, and for any unused bits. B0 is counter/checksum, anything else greyed below is unused bits/bytes per docs just to make it easier to read.

I can't remember which stage of the game these logs were taken, but last row I pasted in from another CAN log and had to be post-SZL swap because I didn't have a Kombi light before it (B4). Top 4 rows with timestamps would be no M Drive active on IKM0S.

399_log.png


B2 4 lowest is trans stage level set in DME (3), which does NOT set 3 on the trans (nor does DME setting actually turn off DSC, but CIC shows it does). If B1 2 lowest is what allows the external settings to flow to the trans/DSC, that could be problematic. If we can catch it and replace with 01 or 02 though, maybe it will take it.

@amg6975
399.png


399-2.png
 

RSL

Lieutenant
Aug 11, 2017
937
501
0
What does the trans use it for? I'll try to log more often and see if there's ever anything except 11 in it.
 
  • Like
Reactions: aus335iguy

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
I did a bunch of logging last night going through the M Drive iDrive menus and button presses and all that. Some interesting thing going on but I don't think that documentation above is 100% accurate for my [2013] M3. I have to digest the logs and all that so I'll more info in a bit.

For B1 of 0x399 0x11 corresponds to DSC mode= MDM, M Drive off, and DriveLogic in "unchanged." Setting DriveLogic to S or D definitely changes the upper nibble of B1, which isn't documented above.

B2 The lower nibble is DL level 1-6, and the upper nibble is Power mode.

I do agree bit 4 of Byte 4 is the M dash light, bits 0-1 of Byte 1 also go from 0b01 to 0b10 when turning M Drive off and on respectively.

Also one of the most interesting things I saw is 0x399 is only transmitted once, when you push the M button, and still has a counter... totally unique from what I've seen
 
Last edited:

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
hard to understand, but i guess it is as i said above very likely: 2 - activates mdrive stage and mode, 1 - rollback, 0 - inactive, 3 - error.
This is what I see on the M3. 0b01 is M Drive off, 0b10 is M Drive on.
 
  • Like
Reactions: RSL and Olza

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
While I go through my data I do want to note that 0x315 is present on the M3, but does nothing. B0 is the alive counter and B1 is 0xF1 no matter what mode the car is in.

Very interesting that it exists since it does not exist in my 135. I'm not sure where it's coming from but if I had to guess, I'd guess the JBBF.
 

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
Alright, So the 0x399 above must be for IKM0S in the 1M right? It's very similar to what I'm seeing, I just have more stuff:

1610646415078.png


Of note, 0x399 is only transmitted once when the M button is pressed, or the iDrive settings (0x3CA) is updated
 
Last edited:
  • Agree
Reactions: RSL

RSL

Lieutenant
Aug 11, 2017
937
501
0
I did a bunch of logging last night going through the M Drive iDrive menus and button presses and all that. Some interesting thing going on but I don't think that documentation above is 100% accurate for my [2013] M3. I have to digest the logs and all that so I'll more info in a bit.

For B1 of 0x399 0x11 corresponds to DSC mode= MDM, M Drive off, and DriveLogic in "unchanged." Setting DriveLogic to S or D definitely changes the upper nibble of B1, which isn't documented above.

B2 The lower nibble is DL level 1-6, and the upper nibble is Power mode.

I do agree bit 4 of Byte 4 is the M dash light, bits 0-1 of Byte 1 also go from 0b01 to 0b10 when turning M Drive off and on respectively.

Also one of the most interesting things I saw is 0x399 is only transmitted once, when you push the M button, and still has a counter... totally unique from what I've seen
The docs above are for 1M and may not crossover directly to M3, but the M3 info is good so we know what transplanted M3 bits need/use.

While I go through my data I do want to note that 0x315 is present on the M3, but does nothing. B0 is the alive counter and B1 is 0xF1 no matter what mode the car is in.

Very interesting that it exists since it does not exist in my 135. I'm not sure where it's coming from but if I had to guess, I'd guess the JBBF.
Have you verified no change with power button, DSC, M wheel button, drive logic levels? DCT looks for it, something seems like it must change data on it :confused:
 

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
Have you verified no change with power button, DSC, M wheel button, drive logic levels? DCT looks for it, something seems like it must change data on it :confused:
I tried every combination of settings through iDrive and manually and there was no difference. I bet it's an artifact from a different model, and something would throw a shadow code if it didn't see the alive counter so they just left it in for the M3. It's really baffling it doesn't exist at all in the 135 though, I would assume it wouldn't exist in the 335 then, and the 1M doesn't have a DCT so who knows, maybe it's just a Z4 thing because it has the Comfort/Sport/Sport+ modes.
 

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
For completeness of the thread here are more packets:

0x3CA:
1610646941888.png


0x1D9:
1610646968333.png


I forgot to log 0x19E to get DSC status and 0x1D2 for DSC modes

I also need to figure out what the counter frequency/checksum is in 0x399 is.
 
Last edited:
  • Like
Reactions: Olza

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
Ok so I'm having a think about this and if you have the M steering wheel and M SZL you should be getting 0x1D9 no problem, which I think is true since someone said that they can get the M light to light up in an M3 KOMBI. And, for some reason IKM0S has the DCT DL settings. I would have thought if you had the M3 GWS and ran M3 DCT software, and ran M3 software on the DSC module, everything should work. BUT looking back at RSL's 0x399 packet from IKM0S vs what I recorded in the M3, the big difference is what I call "M_ACT" which is what actually activates the M Drive settings in the JBBF, DSC, and DKG.

I'm thinking that's why it all appears to be working and M shows up in the KOMBI but the M Drive modes are never actually activated. The 1M modules must be looking at something else to activate M Drive.

Does it sound like I'm on the right track? Someone can datalog 0x399 from IKM0S and verify that the "M_ACT" parameter isn't actually doing anything.
 

RSL

Lieutenant
Aug 11, 2017
937
501
0
While I go through my data I do want to note that 0x315 is present on the M3, but does nothing. B0 is the alive counter and B1 is 0xF1 no matter what mode the car is in.

Very interesting that it exists since it does not exist in my 135. I'm not sure where it's coming from but if I had to guess, I'd guess the JBBF.
I looked for it A LOT and finally came to the conclusion sport button EGS just doesn't have it, at least out on K or PT/to EGS. ISTA once complained about comm on 0x315 with IKM0S and 1M DSC flashed, but DSC not coded and M drive SZL. That's the only single time I've seen anything about it anywhere on my car and think it was specifically the wheel button to DME comm. I have a screen somewhere.

I hope Z4 uses it. I ordered a button, so we'll see once it's warm enough to get in the garage. For all I know, enabling dynamic drive will send it out and I will try that first. I've tried it before, but I don't think I hit all the modules for it.
 

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
I looked for it A LOT and finally came to the conclusion sport button EGS just doesn't have it, at least out on K or PT/to EGS. ISTA once complained about comm on 0x315 with IKM0S and 1M DSC flashed, but DSC not coded and M drive SZL. That's the only single time I've seen anything about it anywhere on my car and think it was specifically the wheel button to DME comm. I have a screen somewhere.
That sounds like exactly my theory that it's just there to satisfy some alive counter check. You enabled something somewhere that is looking for 0x315's alive counter and couldn't see it, because it's not there so it threw a shadow code.

If it's used for the Z4 buttons then it will be coming from the JBBF and will be on K-CAN and PT-CAN.
 
  • Like
Reactions: RSL

RSL

Lieutenant
Aug 11, 2017
937
501
0
Ok so I'm having a think about this and if you have the M steering wheel and M SZL you should be getting 0x1D9 no problem, which I think is true since someone said that they can get the M light to light up in an M3 KOMBI. And, for some reason IKM0S has the DCT DL settings. I would have thought if you had the M3 GWS and ran M3 DCT software, and ran M3 software on the DSC module, everything should work. BUT looking back at RSL's 0x399 packet from IKM0S vs what I recorded in the M3, the big difference is what I call "M_ACT" which is what actually activates the M Drive settings in the JBBF, DSC, and DKG.

I'm thinking that's why it all appears to be working and M shows up in the KOMBI but the M Drive modes are never actually activated. The 1M modules must be looking at something else to activate M Drive.

Does it sound like I'm on the right track? Someone can datalog 0x399 from IKM0S and verify that the "M_ACT" parameter isn't actually doing anything.
That sounds exactly right. M button pretty much does everything where DME is involved (sport mode, EPS, etc), but doesn't talk to M3 GWS/EGS. I have IKM0S and 1M DSC BTW, but M3 DSC was no different when I tried.

Perhaps since 1M is MT only production, M_ACT wasn't added/used in CAN. Would seem odd though since everything else for DCT, including specific logic enables, are in IKM0S.
 

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
I can write modified program code to DCT TCU. Maybe this will be useful for patching some CAN routines.

That sounds exactly right. M button pretty much does everything where DME is involved (sport mode, EPS, etc), but doesn't talk to M3 GWS/EGS. I have IKM0S and 1M DSC BTW, but M3 DSC was no different when I tried.

Perhaps since 1M is MT only production, M_ACT wasn't added/used in CAN. Would seem odd though since everything else for DCT, including specific logic enables, are in IKM0S.

Ok, so yeah. MDM in the 1M is activated by an "MDM" button on the dash, not by the M button. The M button in the 1M is just for the "Power" throttle response. So, you definitely want to run the M3 DSC software to activate MDM via 0x399.

This also lends more credibility to my theory about 0x399 since the 1M would have no reason to use those two bits to trigger M Drive since "M Drive" is just the throttle curve. I would bet a couple beers that the reason the whole thing doesn't work with IKM0S is the two bits in 0x399 "M_ACT."

Maybe @Olza could have the DKG trigger M Drive settings using Byte 4's M_ACT instead of Byte 1's? The DSC still wouldn't get triggered to MDM though.
 
Last edited:

Olza

Corporal
Feb 2, 2020
232
234
0
Minsk, Belarus
Ride
BMW 320d
Maybe @Olza could have the DKG trigger M Drive settings using Byte 4's M_ACT instead of Byte 1's? The DSC still wouldn't get triggered to MDM though.
That kombi light act_2? Sure i can, but o guess its not suitable because it permanently switched to 01 if mdrive enabled? We need two short statuses - set and roll back at least.
 

amg6975

Sergeant
Oct 27, 2019
278
187
0
Ride
2012 135, 2005 ZHP, 2009 fJCW
That kombi light act_2? Sure i can, but o guess its not suitable because it permanently switched to 01 if mdrive enabled? We need two statuses - set and roll back at least.
Yes, when M Drive is active it's 0b01 and when it's not active it's 0b00. Those would be your "set" and "roll back" settings.