E46 Fanatics Forum banner

Communicate with the CAN-BUS

36K views 43 replies 9 participants last post by  thefrog1394  
#1 ·
Hey guys,

I'm working on a new mod.

I would like to 'copy/emulate' some of the switches on the nav screen. I want some new switches on the steering wheel and on the center console, that have the same function as some switches/buttons on the Nav screen.

I know the codes the original buttons on the nav screen send to through the CAN-BUS network. Now there's a problem. How can i make new switches/buttons, to send the code of the original button via the CAN-BUS network.

Does anyone know how I can get new switches/buttons to do this?
 
#3 ·
a lot of times, the buttons on the steering wheel are simply analog. i.e. a supply voltage is given to the common side of a button, then the button has a pair of resistors hooked up to drop the voltage to a certain level, thus pressing the button would return a specific voltage, see here:

http://www.mp3car.com/vbulletin/rr-.../rr-released-plugins/88552-velleman-k8055-usb-i-o-board-extension-plugin-3.html

yes e46 has a can bus. that doesn't do anybody ANY good as that's just a communication standard, you'd have to know the protocol the ecu/device speaks when sending these messages, which probably >COULD< be obtained with a logic analyzer...
 
#5 ·
No CAN bus (There is K-bus. Which is different and does not follow the standards for a CAN bus. But it works similarly, a high and low line bus. And serves the same purpose as CAN bus in newer cars.)

And yes thats how some steering wheel buttons work but NOT the e46, it uses the Ibus as stated above. I'm sure I could get something to work but I'm also a computer engineer. And I don't think it would be worth the effort just to add a few buttons. OP: If you think you can figure it out good luck :thumbsup: but I'm not holding my breath
There is a CAN bus, it's just not used as a diagnostics bus like in the newer cars. DME and DSC modules definitely communicate with each other over CAN, there are probably more.
 
#6 ·
You need to research more on the type of "BUSes" and their "destination". You took the wrong bus. The CAN bus does not connected to Nav unit. You need to take the K-bus..:thumbup:

It's not as simple as just adding some buttons or switches you need some eprom and microprossessor to convert the on/off signal into K-bus protocol signal. Unless you already have in-car PC installed...
 
#21 · (Edited)
No. Thats I-BUS.



Although what you said is still true, I just fixed that one letter K->I ;).
K-bus and I-bus are identical and use same protocol. In E46, the I-bus (Information Bus) and K-Bus (Body Bus) are joined together and labelled as I/K-Bus. In E46's WDS these BUSses are labelled as K-Bus only...you won't find the I-Bus. Details are in here.....
 

Attachments

#11 ·
Is reserve engineering a propriatary protocol actaully legal ? I am sure BMW must have copyrighted their protocol, and should come down like a ton of bricks on anyone who uses the protocol without permission for commercial purposes. I am curious as I am looking into a bit of reverse engineering myself.
 
#12 ·
Reverse engineering is legal. But it has to be done in a "clean room environment" (i.e. you usually can't legally reverse engineer something if you had access to inside information about the original product, you are 'tainting' the knowledge).

You also have to watch out for patents.

In this case I don't think there is anything really to worry about, K-line is basically a CAN bus but using BMW messages. And i don't think they are trying to "hide" anything, more just haven't specifically made the standards public knowledge.

But then again the usual "I am not a lawyer" applies
 
#26 ·
Wow, I just can't believe the amount of misinformation in this thread. Y'all really shouldn't just say stuff if you don't actually know.

Pg. 300-15 of the Bentley states: "The CAN-bus is a system of wiring that functions like a computer network, allowing different components to communicate over the same data line, at the same time, by varying electronic signals. Component communication dialogs take place over the CAN-bus between multiple control units such as:

ECM; ABS; ASC/DSC"



The functions of the I-bus on earlier series 3 modules have been subsumed into the K-bus. Technically there is no I-bus on the E46, but I-bus functions are combined with K-bus functions and called "K-bus" by BMW and Bentley. That's why you won't see "I-bus" in the Bentley wiring diagram index, but you will see "K-bus" (pg. ELE-38 to 40 describing connector X10116).

Some modules which communicate over this K-bus are:
Instrument Cluster (A2); Park distance control unit (A81); Sunroof (A33); Rain sensor (B57); Headlight control (A3); Heating and A/C (A11); General Module (A1); Driver's seat memory (A21); Tire pressure (A85); Mirror memory (A212 &A213); Restraint system control i.e. seat belt stuff (A12).

The K-bus Connector X10116 splices into other parts of the wiring harness such as X18344 (Nav computer, radio and TV) and X18355 that splits into X18180 (the proverbial CD changer plug) X18801 (On-board NAV monitor) X4545 (phone), and X10170 (steering wheel button controller - on the other side of the volute spring).

I have not yet made a table of every device on the K-bus, but I'm working on it, and I have seen a chart that describes the data packet of 1's and 0's sent over the K-bus.

Personally I don't care if you call it the Greyhound bus, but....
 
#29 · (Edited)
Wow, I just can't believe the amount of misinformation in this thread. Y'all really shouldn't just say stuff if you don't actually know.
I can't believe all the INCORRECT information in this thread. It's insane!

According to this page they are. I disagree with your statement "2 busses Can and K". K-bus and I-bus are BOTH CAN busses. (Thats why I didn't like calling the K bus the CAN bus earlier in the thread). But in e46 they are combined. So from what I understand at this point There is a single CAN bus on the e46, called the I/K bus. It connects to pretty much every controller in the car.

I got myself confused earlier, so I apologize if I posted any misleading information. I have tried to go back and edit my posts to point out where I was incorrect and add the correct information.
I see thefrog1394 has posted a link to one of my web sites.

The K-Bus is a singled ended bus. The K-Bus is NOT the CAN bus. The CAN bus is a differential (two wire) bus that ONLY connects the DME, transmission controller, instrument cluster, steering angle sensor and ABS/ASC/DSC. The picture on my website that thefrog1394 has posted a link to do NOT show the DME connected to the K-Bus. It does NOT shot the ABS connected to the K-Bus. It does NOT show the ABS connected to the K-Bus. It does NOT show the Steering Angle sensor or the transmission connected to the K-Bus.

In the E39 5-series there are at least 5 completely seperate busses: I-Bus, K-Bus, P-Bus, M-Bus and CAN bus. They are not connected together. In the E46 there is a CAN bus, but, not an M-Bus, no P-bus, and the I-Bus has been combined with the K-Bus and just called K-BUS in the WDS. You can call it I-Bus, K-Bus or I/K-bus. In the E46 it doesn't matter, but, PLEASE don't call it a Greyhound bus!


Bottom line if you want to play around with the steering wheel buttons you will find them on the K-Bus. The protocol is well defined and messaging protocol has been decoded a long time ago. Just search for I-BUS on the internet. It's the same. I have a module on my web site IBUSMODULES.com that captures the steering wheel messages and translates them into Sony/Pioneer wired remote format for using factory steering wheel to control Sony or Pioneer head units.
 
#39 ·
Hey Scott,

Just read the page on your interface bus reader. I was looking at kind of the same thing, but was surprised you didn't use the mode button to trigger device changes:

Messages to Radio (68H)
Mode Button:
48 23 - Push Message
48 63 - Push More 1 Sec.
48 A3 - Release Message

Then again, Your solution puts the mode button on the steering wheel. Never thought of that. Kudo's.
 
#40 ·
E46 NAV Codes:

Left side

F0 05 FF 47 00 38 75 <Info> press
F0 05 FF 47 00 78 35 <Info> hold (0x40 added)
F0 05 FF 47 00 B8 F5 <Info> release (0x80 added)

F0 04 68 48 30 E4 <cassette> Press
F0 04 68 48 70 A4 <cassette> Hold
F0 04 68 48 B0 64 <cassette> Release

F0 04 68 48 31 E5 <FM> press
F0 04 68 48 71 A5 <FM> hold
F0 04 68 48 B1 65 <FM> release (0x80 added)

F0 04 68 48 21 F5 <AM> press
F0 04 68 48 61 B5 <AM> hold
F0 04 68 48 A1 75 <AM> release (0x80 added)

F0 04 68 48 23 F7 <Mode> press
F0 04 68 48 63 B7 <Mode> hold
F0 04 68 48 A3 77 <Mode> release

F0 04 68 48 11 C5 <1>
F0 04 68 48 51 85
F0 04 68 48 91 45

F0 04 68 48 02 D6 <4>
F0 04 68 48 42 96
F0 04 68 48 82 56

F0 04 68 48 01 D5 <2>
F0 04 68 48 41 95
F0 04 68 48 81 55

F0 04 68 48 13 C7 <5>
F0 04 68 48 53 87
F0 04 68 48 93 47

F0 04 68 48 12 C6 <3>
F0 04 68 48 52 86
F0 04 68 48 92 46

F0 04 68 48 03 D7 <6>
F0 04 68 48 43 97
F0 04 68 48 83 57

F0 04 68 32 10 BE <left nob> Left turn
F0 04 68 32 11 BF <left nob> Right turn
F0 04 68 48 06 D2
F0 04 68 48 46 92
F0 04 68 48 86 52




Right side

F0 04 68 48 24 F0 <Eject> Press
F0 04 68 48 64 B0 <Eject> Hold
F0 04 68 48 A4 70 <Eject> Release

F0 04 FF 48 08 4B <Phone>
F0 04 FF 48 48 0B
F0 04 FF 48 88 CB

F0 04 68 48 10 C4 <****
F0 04 68 48 50 84
F0 04 68 48 90 44

F0 04 68 48 00 D4 ****>
F0 04 68 48 40 94
F0 04 68 48 80 54

F0 04 68 48 14 C0 <rev>
F0 04 68 48 54 80
F0 04 68 48 94 40

F0 04 FF 48 07 44 <clock>
F0 04 FF 48 47 04
F0 04 FF 48 87 C4

F0 04 68 48 04 D0 <tone>
F0 04 68 48 44 90
F0 04 68 48 84 50

F0 05 FF 47 00 0F 42 <select>
F0 05 FF 47 00 4F 02
F0 05 FF 47 00 8F C2

F0 04 FF 48 34 77 <menu> press
F0 04 FF 48 74 37 <menu> hold
F0 04 FF 48 B4 F7 <menu> release

F0 04 3B 49 81 07 <right nob> Left turn
F0 04 3B 49 01 87 <right nob> Right turn
F0 04 3B 48 05 82 <right nob> push
F0 04 3B 48 45 C2 <right nob> hold
F0 04 3B 48 85 02 <right nob> rel