E90s have all kinds of can bus. It just may not be at the obdii socket.
Guess this should be in its own thread as it's e90. But we picked up a e90 cluster to play with. Everything but the outside air temp is can bus.
Last edited by Thaniel; 11-16-2015 at 02:12 PM.
The brake line pressures is present on the K-Bus by requesting the function call 21 06, and the brake line pressure offsets in 21 02. The formats are:
Status sensors (21 06):
Positive pressure:
B8 29 F1 02 21 06 45
B8 F1 29 0F 61 06 00 00 C3 DC 14 8F 14 A4 00 00 00 00 11 06
BrakeLinePressureFront = hex2dec('148F')/100 = 52.63 [bar]
BrakeLinePressureRear = hex2dec('14A4')/100 = 52.84 [bar]
BrakeLinePressureFront = hex2dec('1D31')/100 = 74.73 [bar]
BrakeLinePressureRear = hex2dec('1D1C')/100 = 74.52 [bar]
Neg. pressure by twos complement:
B8 29 F1 02 21 06 45
B8 F1 29 0F 61 06 00 00 C3 DC F7ED F783 00 00 00 00 11 06
BrakeLinePressureFront = (hex2dec('F7ED')-65536)/100 = -20.67 [bar]
BrakeLinePressureRear = (hex2dec('F783')-65536)/100 = -21.73 [bar]
BrakeLinePressureFront = (hex2dec('FFA5')-65536)/100 = -0.91 [bar]
Status sensor offset (21 02):
B8 29 F1 02 21 02 41
B8 F1 29 0C 61 02 FA89 FF18 1E81 FE5D 0000 A7
B8 F1 29 0C 61 02 xxxx yyyy 1E81 FE5D 0000 A7
xxxx = hex value in telegram of Offset Front
yyyy = hex value in telegram of Offset Rear
BrakeLinePressureFrontOffset = 0.000625*x + 2.3315e-15
BrakeLinePressureRearOffset = 0.000625*y + 2.3315e-15
where x is twos complement of xxxx (or yyyy) if neg value in xxxx (or yyyy) (msb set), otherwise pos value of xxxx (or yyyy).
Example: 0xFA89 => neg value since msb=1. Twos complement of 0xFA89 = -1399 => -0.87438 [bar].
Happiness isn't around the corner - happiness is the corner!
Hooked up my Raspberry Pi2 to the K-Bus and logged the brake pressure.
The results verifies that the brake line pressure is the same for front and rear.
By using the logged brake pressure into the brake model calculation, the average bias for this car is 65.12% while the theory says 65.1%. Close enough ...
Happiness isn't around the corner - happiness is the corner!
Nice
What model year is the car specifically? And an E46 M3? I have an AiM SoloDL and a North American E46 M3 2005 and cannot get a reading for brake pressure. It just reads zero. I'm sure it's in there.
Peter Carroll - http://www.driversmeeting.com/pcarroll
BMW Club Instructor & Club Racer, 1997 BMW M3 GTR #321
2008, 2009, & 2011 BMW CCA National C-Mod Champion
Videos channels at:
http://vimeo.com/pcarroll/videos
http://www.youtube.com/user/pc270
The car shown in the previous post is an MY2002 e46 325ti (M54B25) with MK60.
Below is from an MY2003 e46 M3 MK60. Measured bias is in average 66.74% while modelled bias for the e46 m3 is 66.9%.
All e46 m3, my2003 and later, has MK60 and hence the brake pressures can be read from the K-Bus. The AiM SoloDL has probably no support for the brake pressure from the K-Bus?
Last edited by e36 323ti; 12-05-2015 at 07:12 AM.
Happiness isn't around the corner - happiness is the corner!
I've used the great information in this and other threads from Thaniel to drive virtual instrument clusters from E46 CAN messages. Most of the decoding has been straightforward, but the vehicle speed information that should in in the ASC1 messages does not appear to match this:
I see messages like this:
vcan0 (can0) 153 [8] 09 42 27 C1 00 FF C1 80
vcan0 (can0) 153 [8] 09 2A 27 C1 00 FF C1 80
vcan0 (can0) 153 [8] 09 2A 27 C1 00 FF C1 80
vcan0 (can0) 153 [8] 09 3A 27 C1 00 FF C1 80
vcan0 (can0) 153 [8] 09 3A 27 C1 00 FF C1 80
vcan0 (can0) 153 [8] 00 30 27 FF 00 FF FF 80
vcan0 (can0) 153 [8] 00 30 27 FF 00 FF FF 80
vcan0 (can0) 153 [8] 00 30 27 FF 00 FF FF 80
vcan0 (can0) 153 [8] 00 30 27 FF 00 FF FF 80
vcan0 (can0) 153 [8] 00 30 27 FF 00 FF FF 80
vcan0 (can0) 153 [8] 00 30 27 FF 00 FF FF 80
vcan0 (can0) 153 [8] 00 49 27 FF 00 FF FF 80
vcan0 (can0) 153 [8] 00 49 27 FF 00 FF FF 80
vcan0 (can0) 153 [8] 00 59 27 FF 00 FF FF 80
Can anyone confirm the above decoding of speed? If so, can you clarify exactly what it means, because I am been unsuccessful in extracting good data.
One thing I have found useful is to download AiM RaceStudio and look at the BMW/Mini config file. It's all defined in XML. The terms in the file are in Italian but it's not that hard to decipher...
Peter Carroll - http://www.driversmeeting.com/pcarroll
BMW Club Instructor & Club Racer, 1997 BMW M3 GTR #321
2008, 2009, & 2011 BMW CCA National C-Mod Champion
Videos channels at:
http://vimeo.com/pcarroll/videos
http://www.youtube.com/user/pc270
Thanks for the quick response! I saw you mention the XML files from RaceStudio in an earlier post. I've installed both RaceStudio2, which has no XML files I can see, and RaceStudio3, which has XML files including a couple for the Mini. However, I don't see anything in them giving information about CAN formats. Am I looking in the wrong file or just too addled to discern the right information?
Italian aside, this doesn't appear to describe a CAN message:
<p n="IDFisicoStart">1</p>
<p n="TipoMetaCanale">201</p>
<e c="ElencoCanaliMetaCanale" i="">
<e c="Canale" i="">
<p n="CHID">ECU 2</p>
<p n="ChAbil">1</p>
<p n="ChC">0</p>
<p n="ChCC">0</p>
<p n="ChFmt">20</p>
<p n="RawFmt">1</p>
<p n="ChMemo">1</p>
<p n="ChModif">1</p>
<p n="ChVisib">1</p>
<p n= "FID">426000</p>
<p n="FwChTyp">3</p>
<p n="FwFlags">2</p>
<p n= "IDFis">1</p>
<p n="IuS">100000</p>
<p n= "MaxFreqIus">20000</p>
<p n="MinFreqIus">1000000</p>
<p n="LongName">SPEED_BMW</p>
<p n= "ShortName">SPD</p>
<p n="SwTipoCanale">22</p>
<e c="SENS" i="SN_ECU_VEL_KMHX10">
<p n= "Hi">700</p>
<p n="In">mV</p>
<p n= "PhysicalQuantity">FID_PHI_SPEED</p>
<p n= "MeasuredObject">FID_OBJ_UNDEFINED</p>
<p n= "Lo">0</p>
<p n="Type">undef</p>
<p n="UIB">km/h</p>
<p n="gettext_NAME">SN_ECU_VEL_KMHX10</p>
<e c="ConvFunc" i="polyn">
<p n="1">0.1</p>
</e>
</e>
</e>
It could be I misremembered it because i don't see what you need there now either. Oops...Sorry
Peter Carroll - http://www.driversmeeting.com/pcarroll
BMW Club Instructor & Club Racer, 1997 BMW M3 GTR #321
2008, 2009, & 2011 BMW CCA National C-Mod Champion
Videos channels at:
http://vimeo.com/pcarroll/videos
http://www.youtube.com/user/pc270
Your scanner software should tell you that 153 (hex) is the ARBID. 8 is the number of data bytes. Hopefully it is ordering them 0 to 7. If so the speed would be 59 (lsb) and 27 (msb). Looking at the last line of code. Convert those to decimal multiply the msb by 256 then add together. Then divide by
If it matched the actual values then yes :-) Sorry for not completing typing. I was on my ipad and if i click the wrong place it won't let me type further. Anyway From my notes I have "MSB shift left 8 bits add it to LSB. Shift whole mess 3 bits right, subtract 10. divide by 16 to remove gain" This would then be in Km and would need additional conversions to go to Miles.
I haven't messed with the speed values much personally (on the list of things to do that I don't get to). What you are doing fitting the data to what you read on the actual values is the best way to verify the formulas.
Thaniel
This is amazing news that you are now experimenting with this cluster. I sold my e90 after I gave up hopes on an LS swap because I didn't know anyone who could deal with the can issues that would arise. I see now a shop in Australia has successfully completed the swap and solved the problem and you are starting to get into it. I would surely love to see a thread on that. Let me know if you make one.
Yah driving the E90 guages is no problem. A lot of the can messages have already been discovered by someone else. Some fine details to work out to get the modules happy as we have with the E46. Once we get some swapped cars to test with I expect that can be worked out. Now we know what to look for.
I'll start an E90 thread. Been meaning too but get busy with other things.
Thaniel
Thaniel
Just found this thread. This is amazing work!
I'd like to attempt to make an e-diff of sorts by taking the rear wheel speed data and applying the abs accordingly to the rear wheels. How does the ABS module operate? I'm assuming it is getting the can data and using the wheel speed sensor data. Any insight on the matter?
The abs/dsc module takes in the wheel speeds from the speed sensors. If it is a dsc module it also listens to the yaw sensor and steering angle sensor from on the can bus. The brake modulation program is done inside the abs/dsc computer. It outputs the individual wheel speeds and some torque reduction requests over can.
an e diff would be great. The car is already suppose to do this though. However the brake pressure I fell is too weak and the torque reduction from the DME is too great. Seems to accomplish your goals it would require reprogramming the asc/dsc. It would be a very nice thing to do if someone could sort it out.
thaniel
Yeah it does do it when the dsc activates, but it also cuts throttle. Which is undesirable when auto-crossing/racing. My thought was to take apart the ABS unit and use an arduino or microchip to run the actuators.
From the research I've done on programming modules and such it seems it would be very difficult/impossible to custom program the existing module.
At least on the MSS54, you can configure the DME to ignore torque reduction requests.
Can arduino be programmed to tell the E90 electronics that cluster is present? For example in your E90 you want to install some aftermarket digital cluster and use Arduino to run it, I wonder if E90 electronics demand some special matching code from E90 cluster?
MSR is actually requests for torque increase (used when engine braking would cause slippage for example). In the MSS54, you can either completely turn off ASC interventions, or you can set a minimum torque before intervention (default is 0 Nm)
On another note, bought myself a Z4M cluster to play with. The DME <-> KMB messages appear to be the same as the E46 (with one quirk being that the oil temp gauge won't register a value above 0ºC unless there's some RPM coming in). What I do not yet know is whether or not the DSC messages are the same. If they are, MK60e5 retrofit to the E46 may be feasible.
Last edited by TerraPhantm; 02-18-2016 at 09:43 PM.
So is LogicalConstant_SingleCylinderCut_ASR
Bookmarks