Hello All,
Many of you are familiar with the E46 Can bus work My son and I have done. Well.....we started playing a bit with the E90. Looks like we have waded into the E90 Can bus.
Here is the video we posted of a test we did before:
Last night we added another E90 bit to our collection. Here seen on top of our existing bench test E46 bench test setup.
IMG_1910.JPG
We now have a E90 instrument cluster and an E90 IHKA. And have been poking at the combination a bit.
Before I go further I must give Credit to Trevor Cook and his wonderful Website: https://www.loopybunny.co.uk/CarPC/k_can.html His website is a great resource. But what he has, for the most part, is K-CAN bus messages. For engine swapping we are interested in faking out the car due to the Engine/DME being removed. The DME being on the PT-Can bus.
The E90 has several bus systems and the Junction box is the gateway (In the E46 the IKE was the Gateway). The K-Can and PT-Can also operate as different Baud rates. But, and here is the exciting part, from the logs I've received and found from the K-bus and PT buses it appears that the Junction box (gateway) is only acting as a filter and a bridging between the 2 different speed busses. The Junction box does not appear to reform messages. At least I haven not found any evidence of this. Or in other words if the message is seen on both the PT-Can bus and the K-Can bus the message is the same. It is just passed through. Don't forget though that not all messages are passed from one bus to another. Oh.... now armed with this information we can look at Trevor's website "loopybunny" and decode some of what is going on in the PT-Can bus. Pretty cool. At least it is a good start.
Now we need to take the information and form it into something useful for car swaps. And hunt down a few more Can bus messages that are needed. Made some progress on this and will post more later. Just wanted to get a thread going so I can start spreading the joy and perhaps get some help and input from some other forum members. Like what we did for the E46. I though we were quite successful there.
Let me know what you think.
Thaniel
Edit. A link from user rusefi that looks quite useful too:https://github.com/HeinrichG-V12/E65_ReverseEngineering
Last edited by Thaniel; 04-18-2022 at 03:27 PM.
I have access to an E60 535xi auto with a convenient tap into the PT-CAN bus. Also have a couple E60 clusters on the bench. Let me know if there's anything I can do to help
There is a lot of information in regards to the buses. And many many messages. So many messages. :-) I've done a bit of analysis to sort out what might be important. Still working on the best way to present it. In the mean time I'll put a some information into the posts so it is available and I don't loose it :-)
Thought I'd start this post with some information I obtained from my IHKA on the bench that was not posted in the Loopybunny site. For Engine swaps we want the AC on and off switch status. Using the IHKA on the bench it didn't take long and I had it isolated.
ARBID 0x242:
in Byte0. The first bit (I'll call it Bit0). When it is Zero AC off, 1 is AC on. Max AC, Recirculate Auto and Recirculate are also on this byte
Byte0
Bit0 AC on, off
Bit1
Bit2 Max AC on, off
Bit3
Bit4 Recirculate Auto
Bit5 Recirculate
Byte1 has Normal or Defrost. Looks like bit2 is what is toggled (ours goes from F1 for Normal and F5 for Defrost).
I've also captured the can messages that the Kombi unit sends when it is alone. And the Kombi and IHKA unit together. This is great for identifying which messages come from which unit. Though there are occasional ones that can come from multiple. It's not common. And I also have a data sample from a TCU unit from another forum member. I've also taken some PT ca data samples and compared them to KCan. Would be good have a data sample to a lone DME and DSC to verify a few things.
I'm still hunting the error light messages. My thoughts are this. It has to be a DME message (PT CAN) that reaches the KOMBI (KCAN). So has to be in one of the messages that is on both K Can and PT Can that originates from the DME. To me it looks like a likely candidate is 3B4. I've tried to verify but my test bench set up still needs some work. I can't get the error lights to stay on when they should :-). Funny problem to have.
A few other things I've noticed with this newer bus is the data rate which the messages are sent varies a lot more. In some messages it appears that if there is no change then the message is not sent often. 3B4 for example. In a log the interval between sends is 4 to 30 seconds! One taking a short data sample could easily miss this message altogether. Another message I've seen starts off sending at 100 ms and after about 4 messages drops to 1000 ms. The ones at 100ms have change between the messages and then when the message stops changing it goes to 1000 ms. We will need to manage the message timing a bit more on this new style bus more than we had to on the E46.
Lets see what else. Oh it appears that the KOMBI once it receives the terminal 15 on message stays on until it receives a shut down message. Or maybe it just waits a long time (and I don't). Where the IHKA I have will shut down on it's own if it doesn't get messages it likes. I can verify this more later. oh and something seems different about the physical layer of the K Can. Somethings we've done with the E46 don't seem to work with the 2 units I have. I need more time to play with it to know for sure what is going on.
I think that is it for today.
Great. Thank you for your offer. I'll PM you a few logs that could be handy.
Learn something new everyday. Yesterday I mentioned:
Last night I re-read a number of documents I had read read during the E46 project. Funny how things look different reading it again. The parts of about K-Can I skimmed before now mean a lot more. The K-Can Physical layer is most definitely different. The E46 can bus and the E90 PT-Can bus are "high speed" can bus following the 11898-2 spec. The K-Can is "Low Speed" or "Fault Tolerant" Can. Best I can tell it follows the 11898-3 Spec. So who cares?
The signals for the Fault tolerant bus are different than the high speed bus. Though the message formatting is the same. The Terminating resistors and line voltages for a bit of data are different. Long story short and one that most people don't care about is: It takes a different Can Transceiver to interact with the K-bus properly. Since in engine swaps we really just want to work on the PT bus side then we don't really care. Problem for me is that the modules I'm testing with are K-can modules. If I had a JBE I could just connect to that. Guess what's on the top of my wish list right now
Oh In the BMW documents it also promises that it combines some PT can messages when transmitting them to the KBus. So it must happen. Not sure which ones. It may not be important. Once I get some more equipment I'll do some testing and see what I can find.
All for today.
Thaniel
Awesome job and impressive as usual
Rob
Prior projects:
1998 540i with 6.6 LS2/T56 Chevy Power
- pictures and details
1992 325i with 6.6 LS2/T56 Chevy power - pictures and details
1995 M3 with 6.6 LS2/T56 Chevy power - pictures and details
For today's installment. I'll announce that I have a E90 Junction box and connectors on its way to me. Thank you e-bay for making it easier to buy used parts. :-)
With the junction box I will be able to connect my test equipment to the PT-Can side. The high speed side. And connect my KOMBI and IHKA to the K-Can side like it would be in the car. This will make a more accurate simulation of what is really going on. I can also send individual messages to the JBE with nothing connected to it and see what morphing it does to them. If any. And i can listen to it's messages with it on the bus by itself to see which ARBID's it sends. All very handy. But it'll be about 2 weeks before I get to try any of that as I'm going out of town on Saturday.
Yesterday my son spent more time with the K-Can to see more exactly what was going on. As mentioned before the PT-Can runs on a "High Speed" Can bus 11898-2. Where K-Can is "Low Speed" or "Fault Tolerant" more like 11898-3. And our can transceiver says it is compatible with 11898 but doesn't say which "-". And all it's instructions seemed aimed -2. I thought this link explains why the MCP2551 doesn't work well with the "Fault Tolerant" can bus.
http://www.microchip.com/forums/m723876.aspx
To Summarize
High Speed Can bus (11898-2):The Can Low is the inverse of Can high. The idle voltage is around 2.5 and the spikes go up for Can H and while down for Can L. Can H is a mirror of Can low. Comunication stops is Can L or Can H is disconnected.
Low Seed or Fault tolerant Can Bus (11898-3) basically acts like 2 single wire can bus's being run at the same time. With Can H being the inverse of can L. The communication will continue if one line is still connected. Fault tolerant signals look like this:
download.axd?file=0;723876&where=&f=citroen%u002520lowsp...png
Spikes swing full range (0 to 5 V). Idle for Can H is 0 V and idle for Can L is near 5 V. So a very different signal from High Speed can bus. I'm surprised the MCP2551 is able to communicate on the Fault tolerant bus at all. But it does. Sort of. We did it and did communicate but once we started adding more components things went badly. This is what we found:
ONE MCP2551 put on the bus works if there are NO TERMINATING resistors. Once we put on terminating resistors (120 ohms) it ruined the bus communication. I mentioned before the terminating resistors in Fault tolerant Can is very different. Since they are acting more as independent buses they don't hook them together. Therefore one broken or shorted line doesn't ruin communication on the other. Cleaver design. But even using the MCP2551 with no terminating resistors things are not quite right. The idle voltage is not what the MCP2551 is looking for. And if 2 MCP2551's are put on the bus then communication goes weird again. This may not bother too many people but we often use one to simulate other car modules and another to simulate our new "dummy" Messages. And even with one MCP2551 I would worry about it missing message or causing bus errors on the car (K-can). It is just not designed for the Fault Tolerant can bus messaging.
For Engine swaps we can stick with the MCP2551 as the PT-Can is a High Speed bus just like what we used in the E46. The above is just for information of those that like to play with things or those trying to connect directly to the K-Can bus
Thank you.
Thaniel
Last edited by Thaniel; 02-06-2017 at 10:19 AM.
I've heard of people being able to communicate with single-wire CAN busses by having CAN-high connected to the single wire, and CAN-low to ground. Never tried myself since I was more interested in the PT-CAN side
Interesting. Yah the PT bus is where the engine swapping fun is. Though I think we'll order a Fault tolerant transceiver chip just so I can cover all the bases :-) I'm interested in sending messages on to the JBE on the PT-Can side and seeing what, if anything, changes when it comes out on the K-Can side.
Hello All,
Sorry for not updating anything for awhile. Went out of town for a couple of weeks. Figured since I was out of town I'd have time to catch up on computer type stuff in the evenings. Update the thread, analyze data etc. Well my traveling companion didn't like this plan. You see the result Anyway we are back home now. Look what I found in the mail
JBE.JPG
If you can't tell it's a JBE or the module that's in the Junction box. Which in the E90 is the gateway between the PT-Can and K-Can and in pre 2007 between the diagnostic bus. Anxious to connect it up and see what it says. I've already thought of some fun tests to try with it.
More later.
Thaniel
Ok it took a couple of tries to get the JBE working. To communicate it needs at a minimum the following connected:
Power supply (fused via F63) from the distribution box via the internal connector X04010.
Power supply (unfused) from distribution box via the internal connector X04010.
Ground connection via connector X14270
Then to talk to it via inpa Diagnostic lead via connector X14271
2 problems with that.
1. The X4010 (internal) connector, which is between the fuse box (JB) and the Junction box module (JBE) is not detailed in the WDS. At least I couldn't find it. But in one .pdf describing the power system I finally found it. And was able to identify the pins needed.
2. The .PDF has the pins mislabeled. After much time trouble shooting I started thinking something might be wrong there as the image and the part didn't look quite the same. Looking in the connector I thought maybe the pins would be numbered. As is often is the case. no luck. Then my son gave it a try. He looks in the connector and says "yah they are labeled". Where? I feel old as i could not make the numbers out even after being told where they were. No matter he pointed out where Pin 3 was and I put the wire on the right pin and Volia. We were in business.
We connected up the k-can to our KOMBI and IHKA and an Arduino and the PT can to a different set of can chips on an Arduino. Then sending the Terminal 15 on message we were able to get the Kombi to come on and we could send RPM and speed messages on either the K-Can or PT-Can and make the gauges work. Oddly the IHKA didn't want to come on. Probably a wiring issue. Things are not very tidy at the moment. I need to go back and solder up some connections now that we know what works. Ran out of time and so didn't do a lot of testing.
We did listen to the PT-Can side of the JBE with no other modules turned on. this resulted in 2 ARBID's. So we know for sure these come from the JBE.
34F and 480.
I also have a data sample from a bare TCU and it gave out ARBID's
1A2, 1D2, 498, 598, 0B5, 0BA
This is very handy to have when looking at data streams. That's all for today.
Thaniel
For todays installment of "what is the nut doing today"
As mentioned the MCP2551 isn't the correct transceiver to interface with a fault tolerant Can bus. K-Can for instance. I looked at ordering a proper Transceiver. Looked like a NXP TJA1055 chip would do the trick. Sadly they don't supply it in a through hole design only surface mount. I couldn't find any fault tolerant chips that weren't surface mount. Humm. Maybe I could just solder on some leads on and use it anyway. Ended up buying TJA1054AT as I could get 10 really inexpensively. Didn't need 10 but maybe I'd ruin one or two trying to solder on such a small thing. And it is really SMALL.
Smaller than I was expecting.
IMG_2003.JPG
I was about to give up but on my second try I managed to get some header pins to solder to it and then some leads to the header pins and then attach it to a bread board. After all that, honestly I didn't have much faith it would work.
IMG_1996.JPG
BUT IT DID!!
Before when I'd send the turn off message I'd often get the big red service light on the KOMBI indicating bus errors. With this new setup the red service light has not appeared and I now get other errors to show. And important feature since I was hunting for the ARBID that controls the error lights. FYI the low coolant and low washer light messages come from the JBE (along with fuel level).
IMG_1998.JPG
Here is the Fault tolerant chip wired in place of one of the MCP2551's on our Dual can bus board. Which is sitting on the JBE.
IMG_1999.JPG
With this setup I can send messages on one bus and see the result on the other bus. Or listen to both the PT and K-Can buses at the same time. This way I can see which messages the JBE delays, modifies or filters. Which is interesting. Just need to edit up the program that runs through all the ARBID's and watch the results.
Hours of fun still to come
Thaniel
Cool!
1989 535i - sold
1999 M3 Tiag/Dove - sold
1998 M3 Turbo Arctic/black - current
2004 Built motor TiAg/Black - Sold
2008 E61 19T Turbo-Wagon - current
2011 E82 135i - S85 Swap - current
1998 M3 Cosmos S54 swapped Sedan - current
1998 Turbo: PTE6870 | 1.15 ar | Hp Cover, Custom Divided T4 bottom-mount, 3.5" SS exhaust, Dual Turbosmart Compgates, Turbosmart Raceport BOV, 3.5" Treadstone Intercooler, 3.5" Vibrant resonator and muffler, Arp 2k Headstuds | Arp 2k Main studs | 87mm Je pistons | Eagle rods | 9.2:1 static compression, Ces 87mm cutring, Custom solid rear subframe bushings, Akg 85d diff bushings, 4 clutch 3.15 diff, , Poly engine mounts, UUC trans mounts W/ enforcers, 22RPD OBD2 Stock ECU id1700 E85 tune, 22RPD Big power Transmission swap w/ GS6-53
Played some more with the JBE and Kombi together. Attached is a data sample from that combination. In the left hand column the program marked which bus the message was found on.
Yes the error lights appear to work as they should. Yesterday was able to turn the washer low light and coolant level low light on and off consistently. Found they are on ID 580. I'll add some resistors to turn off the fuel level low light and then I can try and get the check engine light to come on :-) Which is something I've been interested in.
These 12 ARBID's are shown on the PT-bus. So they must either be from the JBE or KOMBI.
ARBID
5E0 - Unknown
252 - JBE, Windscreen wiper status
310 - JBE
330 - KOMBI, Odometer reading (oddly mine says FF though it reads on the Odometer), Fuel level repeated, range
480 - JBE
1B4 - KOMBI, Speed repeated, counter, handbrake status repeated.
2C0 -
2F8 - Date time status
34F - JBE, Hand brake status
3B9 - JBE, Window Status
Most messages are the same if it is on both buses. But not all. Message 480 is different on the PT Can than when it is sent on the K-can. Not that it matters all that much to the engine swapping. But it is interesting.
Oh a birthday present came in the mail :-)
IMG_2005.JPG
How did my in-laws know I wanted an E90 DME? Oh they didn't they gave me money but this is what it turned into :-)
Thaniel
Schmartboard makes SMT to DIP adapters. They have 1.27 mm adapters that might work with the NXP TJA1055 chip.
Great tip thanks. I just ordered something very similar. I can then try my hand at soldering a surface mount chip. Until then my rats nest is working
Got all the error lights off now on the KOMBI. Even the orange exclamation point right above the mileage. So it's happy. But I can not get the check engine light to come on by sending messages... Something in my DME simulation must be off. Time to hook up the DME I think. Now that should turn on the Check engine light :-)
Attached are a few data samples I took earlier that I had forgotten to post. This is listening to the Cluster and the IHKA individually and together. If anyone else is into look at that sort of thing.
The data stream is Time(ms);length;ARBID;extended; ;B0;B1;B2;B3;B4;B5;B6;B7 except for the cluster only which is length;ARBID;extended; B0 B1 B2 B3 B4 B5 B6 B7
Off to start wiring up the DME now.
Got the DME connected and it streams data just fine. I was going to put the data collected in the post but the .txt files are too large...... I took data from the DME only, DME and JBE, DME with the JBE, KOMBI and IHKA all together. With that it I was able to identify which messages are coming from where. For the most part. Below is a list of the PT-CAN messages and which module they came from. Also notied if the message was also seen on the K-Can.
ARBID Module from on bus
175 DME PT-CAN
1D0 DME PT-CAN & K-CAN
332 DME PT-CAN & K-CAN
337 DME PT-CAN
492 DME PT-CAN
592 DME PT-CAN
A8 DME PT-CAN & K-CAN
A9 DME PT-CAN
AA DME PT-CAN & K-CAN
AC DME PT-CAN
B4 DME PT-CAN
3B4 DME-JBE? PT-CAN & K-CAN
242 IHKA PT-CAN & K-CAN
1B5 IHKA PT-CAN & K-CAN
310 JBE PT-CAN
480 JBE PT-CAN & K-CAN
580 JBE PT-CAN & K-CAN
1A6 JBE PT-CAN & K-CAN
1B6 JBE PT-CAN & K-CAN
34F JBE PT-CAN & K-CAN
3B3 JBE PT-CAN & K-CAN
5F8 KOMBI-IHKA? PT-CAN & K-CAN
5E0 KOMBI PT-CAN & K-CAN
202 KOMBI PT-CAN & K-CAN
330 KOMBI PT-CAN & K-CAN
1B4 KOMBI PT-CAN & K-CAN
2C0 KOMBI PT-CAN
2F8 KOMBI PT-CAN & K-CAN
22A DME-IHKA-KOMBI-JBE? PT-CAN & K-CAN
Edit: Truncated the data samples and attached.
Last edited by Thaniel; 06-30-2016 at 08:55 AM.
PM me or e90Unicorn on e46fanatics. I can help, ive also got different hardware.
Well I have a bit more to test on. My son crashed one of our E46's and I needed another car. Was tempted by this E90 in a salvage auction and bought it.
IMG_1521.jpg
Last edited by Thaniel; 08-22-2016 at 12:03 PM.
Sub'd, since we're planning a e92 ls3/7 swap
Edit: You're brilliant Thaniel
Wow... All this PT-CAN, BUS, JBE, and KOMBI talk is making my head spin..lol But I am eager to see the outcome! You're a genius @Thaniel. 9 years a member and you're the first to ever make me post.
Does this mean that you will be able to successfully swap a LSX motor into an e90 in the near future? I wouldn't mind being a guinea pig.
Last edited by LuSt4Boost; 09-26-2016 at 10:31 PM.
With Thaniel's kind help and advice I designed a simple fault tolerant CAN shield for the Arduino Due and was able to wake up my E87 cluster.
Bookmarks