I would think so. If the can bus codes are correct the other modules can't tell the difference.
Just so I'm on the same page your suggesting there is a value in the DME we can edit to change the amount of intervention? That might be worth working on.
Seems like the engine temp doesn't change on the E46 without RPM. It's been a long time but I think that is a requirement for it as well. I know it doesn't move after the engine is off (to keep it from spiking due to heat soak). And I belive the RPM is what is used to tell if the engine is off.
I did some work with a couple different Z4. The Can bus codes seemed to be the same.
On one I know the DSC error light went off when simulating the DME just as it does for me in the E46. (Car was modified to be an EV so no DME) And we found the EPS didn't work unless there was some RPM being sent as well. Seems like it had to be at least 300 RPM.
You can set it so that the DME doesn't cut throttle/ignition unless it's making X torque, which I assume also means that the DME will not allow DSC to command torque below that value. I haven't played with it a lot since M-track mode seems sufficient on the E46 M
Strange, my E46 clusters (all from 04 or 05 models) don't seem to care about RPM and engine/oil temp.
So one thing that makes me unsure about the mk60e5 working with the E46 is that the MK60e5 only came on 2006+ Z4s, and they all used the new-generation DMEs. BMW obviously programmed those new generation DMEs to use the old CAN-bus messages, but what I'm not 100% sure about is whether or not there are any new ARBIDs that would be used only by the DME and DSC modules. Can't know for sure without logging a 2006+ Z4, which is easier said than done. From what I can tell, the cluster is looking for ASC1 and ASC3, telling me that at least some of the messages are the same as the old DSC modules.
Main reason I'm interested in retrofitting the newer MK60e5 module is that it has a couple cool features, including hill hold for manual transmissions. Clutch switch data, brake pedal sensor data, and throttle position are all transmitted over even the old-generation CAN bus, so perhaps the module won't be looking for any new messages
Last edited by TerraPhantm; 02-20-2016 at 01:08 AM.
Happiness isn't around the corner - happiness is the corner!
Just wanted to expand on this; the MS43 seems to cycle through 3 bytes instead of 4. 11h, 80h, and D9h (C0h | 19h). This is with the DME on the bench with pretty much no inputs hooked up. I don't know if that cycle tells the DSC module anything, or if it just doesn't matter beyond broadcasting the "standard torque" at the right interval.
As I understand, E46 (and also z4) IKE doesn't show real oil temp, it just shows a temp calculated using some formula that depends on coolant temp, rpm, running time, etc. Correct me if I'm wrong. That's why E46 M3 IKE shows oil temp even with MS43 connected instead of MSS54.
The IKE does not make a calculation for oil temp. It displays whatever value is in the Oil Temp byte of the can bus message from the DME. I can make and have made the coolant temp gauge read totally different from the oil temp gauge.
The reason the MS43 DME will show oil temp on the E46 M3 IKE is because an MS43 DME (at least some of them. I have can data logs) broadcasts the oil temperature byte. The Non M cluster just ignores the data. Some E46 DME's do not broad cast the Oil Temp data. The Can version on the DME's does make a difference :-)
Thaniel
Where did you get that information out of curiosity? Going to the MSS54 example, 11h (0b00010001), 40h (0b01000000), and 80h (0b10000000) are hardcoded
Based on what I remember from the deleted message, 329 byte 0 is a multiplexed message. The value of bits 6 and 7 dictate what information the DME is trying to broadcast, and bits 0-5 contain the actual data.
If 7, 6 = 00, then the DME is trying to broadcast whether or not the CAN-bus is okay. The deleted message mentioned 00 was "okay" and "11h" was not, but I think it's the other way around since 11h is the only value I've ever seen any DME broadcast
If 7, 6 = 01, then the DME is trying to broadcast the engine type (with 000000 being petrol, and I forget the other combos). So that explains the 40h we saw in all our logs
If 7, 6 = 10, then the DME is trying to broadcast the transmission type (000000 being manual, and i forget auto and SMG... though it should be noted that the M3 doesn't seem to bother broadcasting whether or not it has an SMG). 80h if manual, and perhaps other functions since the MS45 seems to change values based on certain conditions.
If 7, 6 = 11, then the DME is trying to broadcast torque according to to the formula we already figured out (x * 16 = standard torque)
Thaniel,
I'm interested in your solution if you can message me.
Then I would guess the DSC looks for whatever has bits set to 1 in 7,6 and uses that value, and ignores everything else - though I read in some BMW docs that it sends out a bit to the "AGS" (auto trans controller) to keep it in gear during a DSC intervention.
So engine type is missing from the MS43 broadcast on the bench. Hmm.
Thaniel - your cars are MS43 right? Do you see 40h as a value for 0x329 byte 0?
Here the Message, that have been deleted. Found in notification mail
---Quote (Originally by TerraPhantm)---
Just wanted to expand on this; the MS43 seems to cycle through 3 bytes instead of 4. 11h, 80h, and D9h (C0h | 19h). This is with the DME on the bench with pretty much no inputs hooked up. I don't know if that cycle tells the DSC module anything, or if it just doesn't matter beyond broadcasting the "standard torque" at the right interval.
---End Quote---
I assume this is about 0x329. The format of 0x329 byte 0 is:
Bit 0-5: 6 bit mulitplexed info
Bit 6-7: 2 bit multiplexed code
Bit 6-7 (binary):
00: can status
01: info about engine/gear box
10: obd control
11: md_norm
Multiplexed format belonging to each code is:
00: can status
multiplexed_info: can_ok (00h?), can_not_ok (11h)
01: info about engine/gear box
multiplexed_info:
bit 0:
0: petrol engine,
1: diesel engine
bit 1-2:
00: gerbox manual
01: gerabox smg
10: auto
11: ?
bit 3-4:
00: engine type 1-4 cylinders
01: engine type 5-7 cylinders
10: engine type 8-11 cylinders
11: engine type 12 or more cylinders
bit 5:
0: the provided info is not valid
1: valid info
10: obd control
multiplexed_info: in accordance with the obdII standard
11: torque interface scaling factor (md_norm)
0-99.6094% of md_norm
multiplexed_info: range 00h-3fh
value = 16*hexValueOf(bit0-5) [Nm]
I have a few MS42 and MS43. I'm looking at a data log from an MS43 and it shows on ARBID 329 byte 0
11
86
D9
On an MS42 log I have
11
88
D9
Hum a log from a z4
11
40
85
D9
One more. From a 318i MS42 (Australian)
11
40
88 or 8C (from different data samples of same car)
D0
In our modules we use
11
80
D9
and we get no errors in the other modules in the car. I forget what we thought the 86 and 88 were in Byte 0. error status?
Thaniel
Last edited by Thaniel; 03-08-2016 at 05:40 PM.
Okay, so looks like I mixed up a couple things. So if I'm reading it correctly:
If bits 6-7 are 00, the CAN status is sent (and everything seems to send 11h, so I'm guessing 11h really means can okay)
If bits 6-7 are 01, then the engine type, gearbox type, and # cylinders are sent. But not every DME seems to bother actually sending anything here (MS43 skips it altogether, and MSS54 is hardcoded to 0x40)
If bits 6-7 are 10, then some OBD data is apparently sent
If bits 6-7 are 11, then the standard torque is sent, and this is the only one that seems to be consistently applied.
Been digging through more can disassembly stuff and figured out where the DME processes received messages. So here's some more information on ARB 615 since that one's pretty easy (bold is stuff I added):
ARBID: 0x615 sent from the instrument cluster.
-B0 AC signal. Hex 80 when on (10000000) Other bits say something else (Load, Aux fan speed request? system pressure?). AC torque is in bits 0-4 (value can be between 0 and 1F; unit is Nm). Bits 5 and 6 are unknown
-B1 Bits 4-7 = AC Fan-speed request (can be 0-15). Bit 2 = Headlights/Parking lights on. Bit 0,1,3 unknown.
-B2
-B3 Outside Air Temperature: x being temperature in Deg C, (x>=0 deg C,DEC2HEX(x),DEC2HEX(-x)+128) x range min -40 C max 50 C
-B4 Bit 0 set = driver door open, Bit 1 set = handbrake engaged
-B5 Bits 3, 4 = CAN_EKP_CRASH (probably whether or not the car is crashed and whether or not fuel pump should be turned off). Bit 1 set = Left turn signal, Bit 2 set = Right turn signal. Hazards = Bits 1 and 2 set.
-B6
-B7 Bit 1 = Key Information (if 1, key information available); Bits 2 and 3 = Key number (00 = Key 1, 01 = Key 2, 10 = Key 3, 11 = Key 4)
Last edited by TerraPhantm; 04-16-2016 at 12:34 PM.
has anyone tapped into the canbus and adapted a bluetooth elm 327 onto it? something like canbus > arduino > bluetooth > bluetooth phone/tablet app like harrys laptimer
Using the free/cheap data logging tools over kline is very very slow if we could get the canbus data instead it would be able to keep up with 10hz gps instead of only 1hz
The term badge whores is not allowed on bimmerforums, because badge whores don't like it
Yah I did something like that. We did
e46 can bus>mcp2551>mcp2515>arduino>mcp2515>mcp2551>Blueto oth elm obdii adapter>iPad using some obdii app that allowed custom gauges.
Everything to the left of the arduino was BMW can bus messages. In the arduino we converted to obdii standard messages so the Bluetooth module would understand it. It was amusing and we did it at the request of a ev builder that wanted to display some data on a tablet. But speed wise it is limited to the max speed of the Bluetooth module. Would probably be faster than getting messages via the iso protocol.
Hi
I have read a lot of this and am trying to understand it.
I have got this far and would like to get it all working as oem in the car.
This thread gave me hope that it would be possible for this to work.
Have the complete engine and ecu I took out is there an option of just leaving the wiring and sensors from the removed parts to make it work?
All the hardware is done gearbox exhaust mounts everything
- - - Updated - - -
Here is the engine
- - - Updated - - -
The original engine was 4 cylinder the car is 2002 bmw e46 318ci
Last edited by hk1828; 05-20-2016 at 06:07 PM.
New member alert!!!!!! I have a Ls swapped 325 Ci. I have just about everything for the swap but I can't figure out what ECU to buy that talks to the stock ECU . Any suggestions?
Last edited by BlueDevil204; 05-31-2016 at 09:33 PM.
Bookmarks