![]() |
CAN BUS - for DIY swappers, HELP! Engineers / shops welcome
3 Attachment(s)
EDIT: I WILL NOT HAVE THIS THREAD TURN INTO YET ANOTHER ARGUMENT ABOUT SWAP COST OR BUDGET. START THAT ELSEWHERE. BETTER YET, MAKE YOUR OWN PRODUCTIVE, REALISTIC, HELPFUL THREAD ABOUT BUDGET. TOO MANY SWAP THREADS MAYE BEEN HIJACKED :threadjacked: LURK, CONTRIBUTE, OR GET OUT
EDIT: This thread is a rushed mess right now, I typed it on the way out the door. Plans to clean it up and add appropriate content. Hi everyone, It is common knowledge that the ft86 has a CAN BUS to control various systems. There is no comprehensive documentation on the forums regarding the CAN BUS. It is the single biggest obstacle to getting any engine swap working correctly. I hope to create a resource here for people who want to do DIY engine swaps, but can't seem to get over the CAN BUS hurdle. I don't think that should be a $6000+ hurdle. I also don't think that a do-it-all-yourself engine swap should be a $25000 affair. They never have been before. People who have swaps complete with all systems working are encouraged add information on this topic. Overview: A controller area network (CAN bus) is a multi-master serial bus designed to allow microcontrollers and devices to communicate with each other in applications without a host computer. It is a message-based protocol; Units [ECUs] on the network are known as nodes. The node may also be a gateway allowing a standard computer to communicate over a USB or Ethernet port to the devices on a CAN network. The DLC3 (D10) node in the Toyobaru is the OBD port, and is an example of such a node. All nodes are connected to each other through a two wire bus. (CANH and CANL) CAN data transmission uses a lossless bit-wise arbitration method of contention resolution. This arbitration method requires all nodes on the CAN network to be synchronized to sample every bit on the CAN network at the same time. Each transmission on a modern CAN BUS network begins with an 11-bit identifier. The CAN specifications use the terms "dominant" bits and "recessive" bits where dominant is a logical 0 (actively driven to a voltage by the transmitter) and recessive is a logical 1 (passively returned to a voltage by a resistor). The idle state is represented by the recessive level (Logical 1). If one node transmits a dominant bit and another node transmits a recessive bit then there is a collision and the dominant bit "wins". This means there is no delay to the higher-priority message, and the node transmitting the lower priority message automatically attempts to re-transmit six bit clocks after the end of the dominant message. Tl-Dr - All the CAN devices talk onto an open network like people on a radio channel, and they only grab the specific signals they want to listen to. The network is not dependent on a central hub, so any system can be pulled off the network without destroying it. The only downside is the devices listening for certain signals will stop receiving those signals and hence stop working. Confirmed Swaps: Vorshlag: GM ECM -> Factory ECM -> CAN BUS, LS-Series engine Manji: Motec M150, 1UZ-FE VVTi I want a longer list here! I know there's working examples of other Subaru engines and a few Toyota 2jz's at the very least I'm personally working on a 1uz swap while I fiddle around with this little FA20 4-banger and wait for my turbo to blow it up. There's great documentation out there on getting it running on a standalone ECU. As much as I'd like a $6K ecu solution that'll make my F****** coffee for me, I'd rather not almost double the cost of the swap with the ecu and wiring alone. Motec, then, is off the table for most people. Many other aftermarket standalone wire-in ECU's have CAN outputs. LiNK (some models) MegaSquirt (some models) - has been used to drive OEM CAN gauges with modifications to source code. Porsche 996tt AEM (some models) Hydra EMS (confirmed working, on the market with support for FA20 on this platform - looking into capabilities for swaps) Why can't these be used? I hope this thread will help us figure out what CAN signals the ECM sends and receives, and how to replicate those with an aftermarket standalone ECU. Attached is an accurate wiring diagram of the FR-S / BRZ CAN BUS. I slapped it together from a few pages of the service manual. The D43 junction connector is just a simple wiring junction near the firewall, and need not be F***ed with. With a suitable CAN capable ECU, only 2 wires (pins 19 and 18) from the factory ECM need to be plugged into the aftermarket ECM to retain full CAN BUS functionality. Next post will list the CAN BUS signals required from the ECM, by system, and the signals required by the ECM, from each system. I have a partial list, I'll post tomorrow. Updated as people chime in. Following post will also include guidance on DIY CAN-BUS setup. The ECM, labeled MOTOR (A33 in the manual) is the engine ECU. This is the ECU everybody will change out in a swap I'd REALLY like to hear from some EcuTeK tuners on this topic, as they have documented use of the CAN controls for map switching, LC, etc. using cruise control switches and rear window heat switches, and using the Tachometer as a selected map display. at least one of which is not connected directly to the ECM, and required CAN sorcery |
Partial list - I'll throw it up now and fix it later
According the the wiring diagrams, -Gauge cluster receives the following signals via CAN from the ECM - crankshaft position (tach) and ECT. -The VSC / ABS ECU receives a crankshaft position sensor signal and a signal from the throttle body sensor. -The CAN network signals can be monitored via the OBDII port on pins 6 and 14 as shown in the wiring diagram above. This can / will be useful in reverse - engineering the system Data needed: OEM CAN baud rate (assumed 500k for now) OEM CAN ID length (assumed 11-bit standard, but could be 29 [unlikely]) 11 bit confirmed. ECM Broadcast interval (milliseconds) (assumed 250 for now) VSC / ABS traction control signals from VSC ECU. (ignition cut? fuel cut? throttle cut?) IMPORTANT! Please cite source and include specific data if able. CAN ID's for each transmission |
It's amazing how versitile CAN BUS is. We actually have a couple pieces of equipment that use it in the Navy.
I wish I had something to contribute to this, but I can say I'm very curious about this topic. Do you know if, for example, crank shaft position, would be the same word on the FA20 ECU's bus as on the LSx ECU's bus? What about IP's for the various inputs and outputs? Is there an industry standard for these, or are those details left to the OE? A little off topic, but have you ever used a CAN BUS to USB converter? (An industrial one that doesn't plug into the OBD2 port but just has terminals for wires.) Do you know if one would work to talk with an android OBD2 app, or could an industrial one require a different protocol? |
Hmmm.... I really should take some time looking at the CANBuS on the FRS. At work I'm in the mobile hydraulics industry and I program trucks to work with electronic hydraulic applications using Parker IQAN software using canbus Signals. I will revisit this thread after I do some further reading. I almost wonder if one of the modules I use could be used between the devices and the ECM to convert all required signals.
|
If you are really interested, there are a number of sites around that have been working on listing out different OEM CAN bus values.
Also of interest is the Canbus triple. Little device that can log and edit canbus values on the fly. Should be really useful for figuring out what system values control what. |
1 Attachment(s)
Quote:
As far as the signals go, they are proprietary per manufacturer. However, any device with a CAN output can be tricked into throwing out the appropriate type of signal. It doesn't matter if the raw sensor data doesn't match, i.e. if GM cps has more teeth on the crank sensor ring than Toyota. Or if they use hall-type or optical sensors. There are two ways to do this, modify the firmware of the CAN controller, this has been done successfully with a 996tt on MegaSquirt, for example. The second way is to have a translator box, several examples for e36 BMW's exist using arudino boards. Quote:
This whole operation depends on a few things. If the engine ECM only broadcasts data and never receives, this will be super-easy and probably cheap. If the engine ECM receives data, or receives data requests, it will be less easy. Example - if the ABS / VSC ECU is telling the the engine when to kick on the traction control (ECUTEK tuners please chime in, I'm 99.9% sure you know the answer because you can mess with the TC settings.) Then you add another layer of complexity, unless you just don't care about TC, like me.:confused0068: Quote:
EDIT: this is where it started |
This topic interests me, but right now I don't have much to add.
However, I have a background in computer engineering and a MS1 laying around for another project. I could possibly be convinced to upgrade it to, say, a MS3 and do some testing. |
Subbed
|
The Tactrix logs CAN BUS data. I believe the values listed here are the addresses:
http://www.ft86club.com/forums/showthread.php?t=62332 CAN BUS is really easy to play with using microcontrollers, such as the arduino. Here's a few projects I've done with it and megasquirt: http://grassrootsmotorsports.com/for...s/87878/page1/ http://grassrootsmotorsports.com/for...s/88593/page1/ |
I got my tach running via Arduino with Canbus.
message.id = 0x141; message.header.rtr = 0; message.header.length = 8; message.data[0] = 0x8F; message.data[1] = 0x26; message.data[2] = 0xDF; message.data[3] = 0x28; message.data[4] = (RPM % 256); message.data[5] = (RPM / 256) + 0x80; message.data[6] = 0xA7; message.data[7] = 0x00; It's nice but I still have CEL, ABS, TRAC, AIRBAG lights on. I assume ABS and AIRBAG are not functioning which I'd like them to. I don't care about CEL or TRAC although I'd like the lights off. |
Quote:
|
Quote:
|
I'm doing the programming to make a third party ECM talk to the OEM ECM to make swaps easier. We'll debut it on Rick's V8 swap.
|
Couple of things that stand out here already.
Comment I saw about not wanting to spend money on a motec, because it will double the cost of the swap. All I'll say here is that you are biting of more than you can chew if you think the rest of the swap will be done for $6.5k. You can itemise and forum mechanic it all you like, but if you want my advice, double that budget; at least. Another thing I noticed, "I'm going to blow my fa20 up and then do this". This mentality has never made sense to me. Why not sell it while its worth money? I sold my fa20, gearbox, and turbo kit for $12k. Sure I realise this is because I'm in NZ and was the only person to have these parts for sale, and I had to wait a year for someone to blow their motor and need mine, but point is still valid. Either way, not knocking what you are trying to do. 10 years ago in my 20's I was looking to DIY all the things with car projects. Now I'm a little older, a little wiser, and a lot busier with work to even entertain this type of thing. The effort in doing so is better spent at work, earning money, so I can pay others to do a better job than I could ever do. It's one of those things, I paid for the motec (I also paid well less than $6.5k, though we get a much better deal on them here) because it was the only option that worked. I could've waited 5 years for guys like yourself to have sorted a way to do it (as you are trying to now) for next to nothing. But I accepted I paid early adopter tax. FWIW, I approached Link (they are based here) about whether they wanted to write a gt86 canbus platform and use my car to do so (of course I was still going to pay, but I already have a Link in my racecar and was familiar with them). To my surprise they weren't even slightly interested and didn't believe there was enough of a market there. (Which in NZ is true, Christchurch has 400,000 people and I'm the only one do have done anything major like forced induction or motor swap) but they clearly have not realised the popularity of the car internationally. |
At least in USA, a 'cheap' engine swap is possible. Just swap in a 6.0L & T56 from the late model GTO. It fits, hood closes, oil pan clears, shifter is in right location. There's one on ebay for $6500. Use the money from the sale of the FA20 for any other pieces you need, mounts, ECU, fuel hoses, driveshaft, etc.
|
You could run a can bus monitor and see what messages the oem system is sending to reverse engineer the system. You might have to gather some info for arbitrary id.
|
what if i swap 3uz and connect swap ecu with fa20 ecus with CANBUS
do you guys think it can hear each other? or if i use OP2 or ecutek to take off the cel code ?? is it work? |
I was planning on decoding the can bus and have the ecu manufacturer write a new firmware with the information I suplied for a swap. The customer suplied the ecu, they wanted probably around $2500 usd for the firmware to integrate the ecu. Good luck with your plan and hope you get it worked out as it will help others later down the line.
|
I've done considerable research into this topic. When you get passed all of the hardware and wiring requirements, this is the first step in what it's going to take to seamlessly integrate the two CANBUS networks.
You will need to reflash the stock FRS/BRZ ECU and change the CAN lookup table. Change CANID 0x141 to 0x142. Then, have your controller listen for 0x142, read the values, change what you need (such as putting the LS engine RPM from the LS PCM in the correct byte), and rebroadcast your modified byte string on 0x141. This will make sure no other components are listening to the Suby ECU except your controller. Your controller will broadcast on 0x141 and fool the entire network. Rinse and repeat for any other IDs you need. |
Quote:
|
There are numerous values the main ECU spits out on to the CANBUS that other control modules rely on. I was never able to fully map the CAN IDs but I think it would be almost impossible to synthesize all of them.
|
Quote:
Quote:
Quote:
That said, would you care to share what you did spend on your Motec? because your only other comment on the issue was a vague "9k on Motec, wiring, and sensors" in another thread. Also, I can get the box cheaper, as the Pontiac Solstice transmission is externally identical to the R154 and bolts right up to r154 bellhousing. Small issue with input shaft being too long can be solved with a 1" spacer. And the shifter is already far enough back on the Pontiac derivative. Quote:
Anyway, this whole idea came from curiosity about how hard the CAN BUS stuff really is. People have had success driving CAN gauges with megasquirt on their own, can bus sniffing and broadcasting devices are cheap. (see CAN BUS Triple.) Also, digging through the wiring diagrams, it seems like most of the essential CAN functions are done by other devices, such as the main body ECU, and the engine ECM does very little can-related stuff. (It initially seems that way, I could be wrong, but that's what this thread is FOR!!!) Quote:
Quote:
Quote:
|
Some more information that was requested via PM. Figured I would share it here. I was never able to spend a lot of time on CANBUS discovery, but it should help some.
http://i.imgur.com/JogDdjK.jpg |
For anyone doing CANBUS work, as a rule of thumb, listening to the bus for the information you need is ALWAYS better than requesting it. And chances are, the information you need is already being broadcast.
|
Our Synergy powered V8 car uses a package that we worked with Motec to develop. We can run pretty much any port injected engine in the 86 / BRZ platform with all gauges, power steering, fuel pump working as factory. Currently we are working on a Lexus V8 and a Toyota V6 installation.
http://www.speedhunters.com/2015/06/...y-at-11600rpm/ http://www.speedhunters.com/2015/01/...ynergy-brz-v8/ Have no idea where the USD6,500 price comes from. Would be under USD4,000 including the adapter loom to go between the M150 and the original factory OEM ECU connector. |
Love the Synergy BRZ! <3
|
Quote:
Please feel free to correct any of the following statements as well: "Under 4000" is still a lot of money, considering many other aftermarket ECU's with CAN connections sell for under $2000. The patch loom is great and all, but anyone swapping is going to have to wire up the new engine as well, which would involve another patch loom and adapted harness on the engine side. I was under the impression that re-pinning the few factory wires that need to be kept to the new ECU plug, wiring in the engine, and stripping out any unnecessary factory wires was a much cleaner way to do it. |
No development license is required. We have our own partner package so the package to run what we call the 86 Engine Swap costs the same as Motec's standard Toyota 86 package. Synergy used the 86 Engine Swap package on both those cars. They sell it as part of a complete kit with their engine and all the other parts to get their engine into the car. When Jun got their kit, their original engine was out of the car and they were driving down the road with their Synergy engine installed 8 hours later. Not a single hole drilled in the chassis or any cutting or welding.
For the wiring in those cars we used the connectors off the factory engine looms. The standard engine has so many inputs and outputs (8 injectors, 4 x cam control, 4 x cam sensors etc) that between the two connectors you have enough pins to wire most engines. We used an adapter loom between the Motec ECU and the factory ECU connector then made our own engine loom using the two connectors off the factory engine loom (54-way and 8-way). Yes there are plenty of other ECUs selling on the market for USD2,000 but the two missing factors are how configurable the ECUs CAN-bus is (I have not seen a $2,000 ECU which lets you put timers on the CAN-bus) and do you have the time and resources to reverse engineer the OEM CAN-bus? Also, who many ECUs have enough pins to do what you want to do? If you are building a race car and gutting the car, then yes, make new wiring looms. If the car is going to be used on the road and you want everything to work as per factory then I felt the adapter looms were the right way to go. I hope this answers your questions. |
Gday guys,
I have just stumbled across this thread and believe I may be able to offer a solution. I have recently got the Subaru FB20 and FA20 engines running stand alone outside of the car by emulating the canbus of all the other canbus computers (apart from the ECU and BCU units). I did this 6months ago for the EJ series engines and from this, developed the Subatronics Canbus Emulator. The CANid's and data posted above match up with my findings for the FB20 and FA20turbo which is great. From what I can gather in current conversions you are still using the FA20 ECU as well as the new engine ECU a the same time? I think we can get rid of the FA20 ECU entirely, and emulate the FA20 ecu using signals from the new engine, this would then make the rest of the car work like it did from the factory, but with the new engine, particularly the instrument cluster. What I am thinking is having a little "black box", somewhere between the size of a matchbox to a box of playing cards. This box will sit on the CANbus network, and read the engine data from the GM ecu, it would then resend the data in the appropriate format back onto CANbus using the FA20 ECU format (0x140,0x141,0x144,0x360,0x361 etc). I would also consider having hardwired inputs to allow non-canbus engines to be fitted, so accept a tacho signal, analog coolant etc. I believe I can do this relatively easily, as I already know all the data from the FA20, have a program on a custom micro-controller and have a pcb board ready to go (although would probably make it smaller by removing a few components). The only issue is working out the CAN from the GM ECU. I have a few contacts with GM cars and have done some canbus logs (on Australian models), however could be different to USA GM, so ideally I would need someone to send me a US ECU so i can hook up and see the CAN it is outputting, also a pushbutton start computer as the WRX does not have this. Let me know what you think. Feel free to msg me here, or my website with email contact details is http://agtengineering.com.au Regards, Andrew. |
So we start a small pool to fund the sending of a US ECU to this Man!
ComeOn? |
Quote:
|
Getting a GM ECU and a few other bits sent to me. There is not much info on the GM side of things (they call it GMLAN High Speed), however a bit of reverse engineering and I am fairly confident we can get it happening.
Andrew. |
I have been working on a DIY data logger for Autocross and track days. It is currently Arduino based, but I am planning to port it over to Beaglebone black. I am an embedded engineer and have access to a Canalyzer at work.
So far, I have decoded the following parameters: Brake Pedal Position: CAN ID: 0xD1 Offset: 3rd byte Length: 1 byte Accelerator Pedal Position: CAN ID: 0x140 Offset: 2nd byte Length: 1 byte Steering Angle: CAN ID: 0xd0 Offset: 0th byte Length: 2 bytes I will hook up the Canalyzer again when I have some free time and would like to decode more signals. Specifically RPM and speed (vehicle and all wheels). I did see traffic on the CAN bus that most likely corresponds to these parameters, but the difficult part is separating them and determining what conversion formulas to use. I am currently using OBD2 PID's for the RPM and speed, but they are higher latency than just reading them off the CAN bus. At work now so have to keep this short, but will check in later. |
I'll share my findings as well.
Steering angle 0x00D0 2 bytes 1st - LSB 2nd - MSB 0x0000 Center. Left max 0xEE6B. Right max 0x1194. Formula in degrees = reading / 10 Gear indicator 0x0361 1 byte 1st byte Straight forward, 0x06 for 6th gear. Haven't figured out reverse yet since reverse is 0x01. Speed 0x00D1 2 bytes 2nd byte MSB 1st byte LSB Not sure about calculation yet. Brake 0x00D1 1 byte 3rd byte Should calibrated this for min and max cause I don't know if this is in psi, bar or percentage. Wheel speeds 0x00D4 8 bytes Same byte format as speed. Haven't isolated which is which though. I have a function but still have to verify it. Throttle position 0x0140 1 byte 1st byte 0x00 - 0xFf = 0 to 100% Sent from my Nexus 4 using Tapatalk |
That's some fantastic stuff.
Sent from my XT1045 using Tapatalk |
Does anyone know if the crank signal is the same as 04-09 sti?
If it is I maybe found a solution to my swap roadblock. |
Quote:
What exactly is your roadblock? |
Quote:
|
I got my answer...
Looks like it won't work. Subaru and Toyota really screwed this one up with the fa20. |
Quote:
|
| All times are GMT -4. The time now is 03:16 PM. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.
User Alert System provided by
Advanced User Tagging v3.3.0 (Lite) -
vBulletin Mods & Addons Copyright © 2026 DragonByte Technologies Ltd.