I'm in the early stages of adding a carputer to my car. I'd like to integrate the MID function.
I have found an excellent write up on the E31 I-Bus but it appears to be still work in progress.
http://www.8er.org/files/Entwicklung...D_BMW_IBUS.pdf
I started to decode the initial message from the EKM to MID at start up (below) and soon realized that many of the message ID's (table 3.2) are still not understood.
Does any one know of more complete information?
logic.pdf
I once started analysing the I-bus traffic to improve support for the E31 in NavCoder. Due to lack of time I did not pursue this but below you can download the first analysis I sent to the NavCoder author and which covers several of your unknown messages:
Logging and analysis of BMW E31 8 Series I-bus - part 1 (157 kB)
Please note the document was written to improve the parsing of NavCoder so it's not structured as an E31 I-bus reference. Nevertheless you may find quite a bit of useful information in there.
From your list (with references to my document):
- 02 05 FF F8 43 00 43 - Ignition key position (log 0044)
- 02 05 FF FB 07 06 02 - I'm not exactly sure about this, but since it's sent exactly once every minute I guess it's some sort of heartbeat for the other modules (log 0002)
- 02 04 01 AC 01 AA - MID code lock (log 0048-0051)
- 02 06 FF BC 00 82 A0 65 - Unit coding (log 0001 and many others)
- 02 05 FF FC 07 12 11 - K-Zahl or the number of impulses per kilometer (log 0001)
- 02 05 FF BD 00 00 45 - Language and unit coding (log 0001)
- 02 07 01 86 00 00 00 00 82 - Timer (log 0036-0043)
- 02 07 01 87 00 00 00 00 83 - Freeze timer (log 0038-0040)
- 02 05 FF 83 28 11 42 - Time (log 0003-0009)
- 02 07 FF 82 27 12 05 02 4A - Date (log 0005-0006)
- 02 04 01 9C 00 9B - Speed limit status (log 0030-0035)
- 02 05 01 9D FF FF 9B - Factory-coded speed limit (log 0031-0032)
- 02 05 01 98 FF FF 9E - Default speed limit (log 0031-0035)
- 02 05 01 99 FF FF 9F - Speed limit (log 0030-0032)
- 02 05 01 8E FF FF 88 - Park ventilation/heating timer (briefly mentioned in log 0001)
- 02 05 01 8F FF FF 89 - Park ventilation/heating timer (briefly mentioned in log 0001)
- 02 05 FF A0 05 C0 9D - Outside temperature (log 0017-0018)
- 02 05 01 92 95 83 82 - Fuel consumption 1 (log 0011-0015)
- 02 05 01 93 36 01 A2 - Fuel consumption 2 (log 0011-0016)
- 02 05 01 A2 99 89 B4 - Distance (log 0022-0027)
- 02 07 01 88 FF FF FF FF 8C - Time of arrival (log 0022-0027)
- 02 05 01 96 34 03 A7 - Range (log 0028-0029)
- 02 05 01 90 17 07 86 - Average speed (log 0019-0021)
- 02 07 01 C0 00 00 0B 06 C9 - Service interval indicator (briefly mentioned in log 0005)
CB42366 - 1991 850i 6-speed. Brilliantrot & Black Nappa Leather
CD00144 - 1994 850CSi. Hellrot & Black Nappa Leather
My other projects:
Supercharged Tbirds, V8 Tbirds, V8 Mustang Convertible, Audi V8 Quattro & Audi S8
Is Rolf Resler's solution not applicable to E31s?
He offers I-Bus to USB and I-Bus to serial adapters but that is easily accomplished with a couple of transistors (PC serial version). What is not fully understood is the protocol of the messages on the E31 I-Bus. I'm interested in understanding this to add some of the MID capabilities to a car PC mounted in its place.
- - - Updated - - -
Will do, but I plan to add a back up camera (much easier).
Last edited by BMSman; 11-08-2016 at 08:38 PM.
A box that was developed for controlling vanos cams in the Up Before Six project incidentally has two I-bus friendly ports, allowing it to either snoop or split the bus, along with associated code allowing for the capture and dump of sessions much as you see from Revtor.
Clockwise form northwest: MID, scope trace of I-bus traffic, hex conversion on character display, ETV guts.
ETV display & key panel.
ETV box, to be mounted in the e-box of the 840
Here a typical detail from a session dump, this one showing the use of endian BCD (binary coded decimal) while EKM (02) general broadcasts (FF) ambient temperature (A0) to anyone who cares.
MID will care and update its local memory, ready for display when operator selects.
I was heading towards gutting the MID except for the pixel driver, so that we can write to the screen.
A quaint and nostalgic fantasy. Never made it.
A modern color display with MID/OBC info and camera feeds would be a nice substitute.
Wow! So much useful info. Wish I had those documents when I was doing my setup, could save me a lot of time.
Here is my 2 cents:
I-BUS
Function 0xF8 EKM->broadcast // Ignition
0x00: "OFF"
0x01: "ACC"
0x03: "ON"
0x07: "START" // starter runs
0x47: "RUN" // starter runs & engine runs
0x43: "Running" // engine runs
MFL commands
MFL address: 0x50
Radio address: 0x68
Telephone address: 0xC8
MFL->RAD/TEL: 0x32 0x10 // Vol down button press
MFL->RAD/TEL: 0x32 0x11 // Vol up
MFL->RAD/TEL: 0x3B 0x01 // Seek > press
MFL->RAD/TEL: 0x3B 0x11 // Seek > long press
MFL->RAD/TEL: 0x3B 0x21 // Seek > release
MFL->RAD/TEL: 0x3B 0x08 // Seek < press
MFL->RAD/TEL: 0x3B 0x18 // Seek < long press
MFL->RAD/TEL: 0x3B 0x28 // Seek < release
MFL->TEL: 0x3B 0x80 // phone button press
MFL->TEL: 0x3B 0x90 // phone button long press
MFL->TEL: 0x3B 0xA0 // phone button release
MFL->TEL: 0x3B 0x00 // Radio/Telephone switch
MFL->TEL: 0x3B 0x40 // Radio/Telephone switch
Fully applicable. I have 2 his adapters in my setup one for EKM<->MID another for MFL steering wheel connection.
WBR, Tony
This is awesome!
I did some fairly extensive exploration in this area a year or two ago, but the project landed on the back-burner. Revtor, you got way further in your analysis than I did. I'll have to dig out my old notes and see if I have anything to contribute that hasn't been discovered already.
I'm replacing the MID in my 91 850i with a computer. I wrote a simple Python program to decode the I-bus messages. It time stamps each message and the output can be easily imported into Excel for manipulation. There are still a few messages I've not been able to decode but everything of use to me is understood. Most of the knowledge for this has been gleaned from other places but there is some new info in here as well (such as vehicle mileage) that I've not seen posted before. I've run it for an hour or so and never skipped a beat.
If interested you can download it here http://km5tz.com/E31_IBUS.py (right click and 'save as' *.*)
Here is a short sample of the output (~ 30 secs).
2017-02-12 17:40:14.312000 02:05:ff:a0:15:06:4b EKM to ALL outside_temp= 61.5 degF
2017-02-12 17:40:14.328000 02:05:01:92:40:81:55 EKM to MID MPG_1= 14.0
2017-02-12 17:40:14.343000 02:05:01:93:ff:7f:15 EKM to MID Reset;_MPG_2= --.-
2017-02-12 17:40:14.359000 02:05:01:a2:ff:ff:a4 EKM to MID distance= ff:ff
2017-02-12 17:40:14.375000 02:07:01:88:ff:ff:ff:ff:8c EKM to MID time_of_arrival= ff:ff
2017-02-12 17:40:14.390000 02:05:01:96:34:02:a6 EKM to MID Range= 234 miles
2017-02-12 17:40:14.406000 02:05:01:90:82:02:16 EKM to MID Average_speed= 28.2 MPH
2017-02-12 17:40:14.421000 02:07:01:c0:00:00:ff:ff:c4 EKM to MID inspection= ff:ff:00:00
2017-02-12 17:40:14.437000 02:0b:01:be:56:7a:43:82:ff:ff:ff:ff:5b EKM to MID unknown2= ff:ff:ff:ff:82:43:7a:56
2017-02-12 17:40:14.453000 02:05:ff:fc:07:12:11 EKM to ALL impulses_per_Km= 12:07
2017-02-12 17:40:14.468000 02:05:ff:a0:15:06:4b EKM to ALL outside_temp= 61.5 degF
2017-02-12 17:40:21.406000 02:04:ff:fa:01:02 EKM to ALL i_am_here= 01
2017-02-12 17:40:21.453000 02:05:ff:f8:00:00:00 EKM to ALL ign_key_position= OFF
2017-02-12 17:40:21.500000 02:05:ff:fb:07:06:02 EKM to ALL heartbeat= 06:07
2017-02-12 17:40:21.546000 02:04:08:81:00:8f EKM to unk unknown
2017-02-12 17:40:25.437000 02:05:ff:a0:10:06:4e EKM to ALL outside_temp= 61.0 degF
2017-02-12 17:40:25.484000 02:05:01:92:40:81:55 EKM to MID MPG_1= 14.0
2017-02-12 17:40:25.531000 02:05:01:93:ff:7f:15 EKM to MID Reset;_MPG_2= --.-
2017-02-12 17:40:25.578000 02:05:01:a2:ff:ff:a4 EKM to MID distance= ff:ff
2017-02-12 17:40:25.609000 02:07:01:88:ff:ff:ff:ff:8c EKM to MID time_of_arrival= ff:ff
2017-02-12 17:40:25.625000 02:05:01:96:34:02:a6 EKM to MID Range= 234 miles
2017-02-12 17:40:25.640000 02:05:01:90:82:02:16 EKM to MID Average_speed= 28.2 MPH
2017-02-12 17:40:25.656000 02:07:01:c0:00:00:ff:ff:c4 EKM to MID inspection= ff:ff:00:00
2017-02-12 17:40:25.671000 02:0b:01:be:56:7a:43:82:ff:ff:ff:ff:5b EKM to MID unknown2= ff:ff:ff:ff:82:43:7a:56
2017-02-12 17:40:25.687000 02:06:ff:a4:f0:0b:82:26 EKM to ALL Mileage= 134128 miles
2017-02-12 17:40:25.703000 02:04:ff:a5:00:5c EKM to ALL unknown3= 00
2017-02-12 17:40:25.718000 02:05:ff:fc:07:12:11 EKM to ALL impulses_per_Km= 12:07
2017-02-12 17:40:25.734000 02:04:01:ac:01:aa EKM to MID codelock= 01
2017-02-12 17:40:25.750000 02:05:01:ae:00:00:a8 EKM to MID unknown1= 00:00
2017-02-12 17:40:25.765000 02:06:ff:bc:fd:5f:20:c5 EKM to ALL unitcoding= 20:5f:fd
2017-02-12 17:40:25.781000 02:05:ff:bd:01:01:45 EKM to ALL language= 01:01
2017-02-12 17:40:25.796000 02:07:01:86:00:00:00:00:82 EKM to MID timer= 00:00
2017-02-12 17:40:25.812000 02:07:01:87:00:00:00:00:83 EKM to MID freezetimer= 00:00
2017-02-12 17:40:25.828000 02:05:ff:83:38:26:65 EKM to ALL time= 06:38PM
2017-02-12 17:40:25.843000 02:07:ff:82:02:12:17:07:78 EKM to ALL Date= 02:12:17
2017-02-12 17:40:25.859000 02:04:01:9c:00:9b EKM to MID speed_limit_status= 00
2017-02-12 17:40:25.875000 02:05:01:9d:ff:ff:9b EKM to MID factory_speed_limit= ff:ff
2017-02-12 17:40:25.890000 02:05:01:98:ff:ff:9e EKM to MID default_speed_limit= ff:ff
2017-02-12 17:40:25.906000 02:05:01:99:ff:ff:9f EKM to MID speed_limit= ff:ff
2017-02-12 17:40:25.921000 02:04:01:8c:00:8b EKM to MID unknown4= 00
2017-02-12 17:40:25.937000 02:05:01:8e:ff:ff:88 EKM to MID park_vent_heater_1= ff:ff
2017-02-12 17:40:25.953000 02:05:01:8f:ff:ff:89 EKM to MID park_vent_heater_2= ff:ff
2017-02-12 17:40:25.968000 02:05:ff:a0:15:06:4b EKM to ALL outside_temp= 61.5 degF
2017-02-12 17:40:29.078000 02:05:ff:83:39:26:64 EKM to ALL time= 06:39PM
2017-02-12 17:40:32.906000 02:04:ff:fa:01:02 EKM to ALL i_am_here= 01
2017-02-12 17:40:32.968000 02:05:ff:f8:00:00:00 EKM to ALL ign_key_position= OFF
2017-02-12 17:40:33.015000 02:05:ff:fb:07:06:02 EKM to ALL heartbeat= 06:07
2017-02-12 17:40:33.062000 02:04:08:81:00:8f EKM to unk unknown
2017-02-12 17:40:36.953000 02:07:01:c0:00:00:ff:ff:c4 EKM to MID inspection= ff:ff:00:00
2017-02-12 17:40:37 02:0b:01:be:56:7a:43:82:ff:ff:ff:ff:5b EKM to MID unknown2= ff:ff:ff:ff:82:43:7a:56
2017-02-12 17:40:37.031000 02:06:ff:a4:f0:0b:82:26 EKM to ALL Mileage= 134128 miles
2017-02-12 17:40:37.078000 02:04:ff:a5:00:5c EKM to ALL unknown3= 00
2017-02-12 17:40:37.125000 02:05:ff:fc:07:12:11 EKM to ALL impulses_per_Km= 12:07
2017-02-12 17:40:37.140000 02:04:01:ac:01:aa EKM to MID codelock= 01
2017-02-12 17:40:37.156000 02:05:01:ae:00:00:a8 EKM to MID unknown1= 00:00
2017-02-12 17:40:37.171000 02:06:ff:bc:fd:5f:20:c5 EKM to ALL unitcoding= 20:5f:fd
2017-02-12 17:40:37.187000 02:05:ff:bd:01:01:45 EKM to ALL language= 01:01
2017-02-12 17:40:37.203000 02:07:01:86:00:00:00:00:82 EKM to MID timer= 00:00
2017-02-12 17:40:37.218000 02:07:01:87:00:00:00:00:83 EKM to MID freezetimer= 00:00
2017-02-12 17:40:37.234000 02:05:ff:83:39:26:64 EKM to ALL time= 06:39PM
2017-02-12 17:40:37.250000 02:07:ff:82:02:12:17:07:78 EKM to ALL Date= 02:12:17
2017-02-12 17:40:37.265000 02:04:01:9c:00:9b EKM to MID speed_limit_status= 00
2017-02-12 17:40:37.281000 02:05:01:9d:ff:ff:9b EKM to MID factory_speed_limit= ff:ff
2017-02-12 17:40:37.296000 02:05:01:98:ff:ff:9e EKM to MID default_speed_limit= ff:ff
2017-02-12 17:40:37.312000 02:05:01:99:ff:ff:9f EKM to MID speed_limit= ff:ff
2017-02-12 17:40:37.328000 02:04:01:8c:00:8b EKM to MID unknown4= 00
2017-02-12 17:40:37.343000 02:05:01:8e:ff:ff:88 EKM to MID park_vent_heater_1= ff:ff
2017-02-12 17:40:37.359000 02:05:01:8f:ff:ff:89 EKM to MID park_vent_heater_2= ff:ff
2017-02-12 17:40:37.375000 02:05:ff:a0:15:06:4b EKM to ALL outside_temp= 61.5 degF
2017-02-12 17:40:37.390000 02:05:01:92:40:81:55 EKM to MID MPG_1= 14.0
2017-02-12 17:40:37.406000 02:05:01:93:ff:7f:15 EKM to MID Reset;_MPG_2= --.-
2017-02-12 17:40:37.421000 02:05:01:a2:ff:ff:a4 EKM to MID distance= ff:ff
2017-02-12 17:40:37.437000 02:07:01:88:ff:ff:ff:ff:8c EKM to MID time_of_arrival= ff:ff
2017-02-12 17:40:37.453000 02:05:01:96:34:02:a6 EKM to MID Range= 234 miles
2017-02-12 17:40:37.468000 02:05:01:90:82:02:16 EKM to MID Average_speed= 28.2 MPH
2017-02-12 17:40:37.484000 02:05:ff:a0:15:06:4b EKM to ALL outside_temp= 61.5 degF
2017-02-12 17:40:41.734000 09:04:02:81:02:8c ZKE to EKM passenger door open
2017-02-12 17:40:41.781000 02:03:09:01:09 EKM to ZKE message_acknowledge= 09
Last edited by BMSman; 02-12-2017 at 10:12 PM.
Most interesting and I assume you are using a Raspberry Pi computer but what are you using for display. I have had a wish to do very much the same thing since I bought my 850i -92 in the summer 2014. So far all my work have been to make the engine to work which it didn't from beginning. I wanted to get rid of the OBC and make a graphic user interface that looks the same as the OBC and use a touch screen to implement the push buttons and also all the usual radio/cd/usb/SD/navi, but so far I have not got any were with my project. Unfortunately there seems to be some error in the link you have given, I get a Error 500 server error.
BTW, your 850 looks absolutely astonishing, very nice.
Last edited by peake; 02-13-2017 at 08:56 AM.
Here's an update on my car computer project...
I'm using a Raspberry pi running Linux/Kodi with custom addons for MID, HD Radio and OBD.
LCD is an 8" touch panel.
It integrates with the existing audio amplifier but I may upgrade this in the future.
Everything shown is working and next steps are to add additional OBD capability; if anyone has any detailed info on the KW71 protocol please let me know?
Here is the HD Radio display (ambient light level sensor in the accessory panel)
The MID
The main (boot-up) screen
OBD
More details and better pics are on my website here http://www.km5tz.com/BMW%20850iP10.htm
Last edited by BMSman; 05-14-2017 at 02:12 AM.
Pics don't work for me
Should be fixed now
Last edited by BMSman; 05-08-2017 at 04:16 PM.
its showing Unsecured website, but i do see pictures.. WOW!! that's amazing!
That looks sweet!
1998 BMW M3 3.2 Cabrio • Alpinweiß III on Schwarz • German spec • 1 of 12
SMG • SRA • PDC • AUC • OBC • GSM • HK • UURS • IHKA • FGR • MFL
IG: https://www.instagram.com/iflok/
This I want in my 850, it is what will bring the car into the next millennium and make the interior up to date, very nice I think and very impressive. Please, tell us more about the programming you have done, was it complicated.
Your link thou is giving an error, " 500 Internal Server Error " if left-clicking but works properly when right-clicking!
Last edited by peake; 05-10-2017 at 05:51 AM.
Fuel pressure..... how did you get that reading/number ? (because as far as I know... not in DIS and not in INPA).
BMW 850 CSI march 1994 (EU spec), SOLD. https://www.classiccars-forsale.com/...94-bmw-850csi/
BMW 850 CSI november 1994 (EU spec)
The pressure shall be between 42-53 psi when the motor is running. The reading shown is with the engine off, is it not? What is wrong with the navigator system ?
Last edited by peake; 05-10-2017 at 10:59 AM.
http://www.km5tz.com/BMW%20850iP10.htm open that link with a new tab.. the're some pictures of pressure sensors that he modified to have the pressure reading..
BMW 850 CSI march 1994 (EU spec), SOLD. https://www.classiccars-forsale.com/...94-bmw-850csi/
BMW 850 CSI november 1994 (EU spec)
I updated the pics (in my post above). Now it is shown just after turning off the car. I'm seeing between 38 and 44psi on both pumps.
Navigation works but it is not nearly as easy to use as my phone. It uses Navit software. Everything else about the system works great and has exceeded my expectations.
I have spent many hundreds of hours working on this. Bear in mind I had no prior experience programming in Python, had never seen a Rasberry pi, and never used or programmed Kodi before. It took a lot of time to get up to speed with Python and learn the ins and outs of programming kodi. Now that I've done it, making modifications and adding additional functionality will be relatively easy. It has been a very rewarding project... I learned a lot. And it is not finished yet; I have just finished reverse engineering the DME TXD/RXD protocol and will be adding this (error codes reading/clearing and digital/analog value display). The EML as well but it is proving a little more challenging...
I should add that this was not an expensive project (other than time). Total cost of the hardware was only about $250 and I got 2 of just about everything in case of failures but so far it has proven to be very reliable and stable too!
Last edited by BMSman; 05-14-2017 at 02:35 AM.
Bookmarks