What methods or ideas are out there that can match or change an SR20det ECU's signals or codes in order for a newer CAN bus system to read, for example, the power steering to work as well as the cluster on the dashboard for revolutions per minute and oil pressure?

  • I realise you're probably not a native English speaker, but it's very unclear what you're asking here - could you try and simplify it?
    – Will Dean
    Commented Oct 13, 2015 at 17:29
  • Its trying to explain it , is the problem. We need the data from the nissan ECU to be converted into the right Data to be compatible for the Cars CANBUS system in order for certain aspects of the car to work I.E power steering.
    – dave thomas
    Commented Oct 13, 2015 at 17:41
  • Are you trying to use an old ECU on a new car? Even if you're moving from an old model (pre-2000) SR20DET to a newer one, it's very unlikely this is going to work.
    – Cheibriados
    Commented Oct 13, 2015 at 17:48
  • The whole engine and transmission has been converted into the shell of an RX8. The engine with ECU is from an S14 1998 and The RX8 is 2004. It dose dive but for the Dash to work properly we need to try and match the signals from the nissan to the mazda's Canbus network. Any alternative adivce is welcome
    – dave thomas
    Commented Oct 13, 2015 at 18:00

2 Answers 2


The SR20det ECU is a propietary part, likely containing a chip designed by someone like Broadcom, which will then have been integrated into a board by a tier 1 automotive supplier like Bosch, who will have then cased it in metal, added posh connectors and mass sold it to Nissan. Nissan will have had their own engineers who have come up or use a CANbus protocol for their system (some standardized way of representing/transferring information).

Sometimes tier 1 suppliers (like people who do the dashes) will agree/sign up to some automotive standard like Autosar

So thing number 1 that needs researching is: is there such a CANbus standard that applies to your car? There are definitely automotive standards which will have applied at the time that car was put in production - J2534 is a good example of such a standard

Once you know what that standard was - you can either use something like an OBD2 tool to start a process of "black box engineering" unplugging or pressing something seeing if you can get output you expect.. for example when you disconnect the brake do you see an error code come out?

Once you have been through this careful process of working out what all the signals mean. This may be no small task - the manufacturer may be using a mix of some standard CAN format with their own propriety messaging system. The system could be event-driven (i.e. a message is only sent when something happens), or time based.. a message is sent every 10 milliseconds regardless of input.

When you have worked out how to decode all of the old messages.. you then need to go through the same kind of process with the new system. What signals do I need to send in order to get things working? There are USB to CAN adapters so that you can start playing with: http://www.systec-electronic.com/en/products/industrial-communication/interfaces-and-gateways/can-usb-adapter-usb-canmodul1

Now because you don't seem to need to read too many signals.. this might actually not be too bad. On the other hand it could be a significant amount of work. It is very difficult to say for sure...

Something that I can recommend is to go to your local hackspace/makerspace type place and talk to people there who are interested in electronics. If you take the ECU they may be able to help you get started with tools like the http://dangerousprototypes.com/docs/Bus_Pirate and using CAN shield for Arduino

Your project is by no means simple - but nothing is impossible!


CAN is a broadcast medium. When your ECU is sending a bit in a CAN frame, the other ECUs on the bus should be reading that bit at the same time (receivers recover the clock in real-time by oversampling the bus signal). Adding translation hardware will break this property, and you will end up with two different CAN buses (one just for the ECU, the '98 S14 CAN bus, and the '04 RX8 CAN bus) with your translation unit performing gatewaying (receiving data, unpacking and repacking signals and transmitting the repacked data on the other bus).

Here are the challenges I see:

  • You will add latency. Because these are engine signals, this might not be acceptable for all signals. For just reporting the state to the driver, it's probably OK. But, mechanical controls like power steering or ABS likely expect very little latency.
  • There are databases which describe the CAN signals for ECUs, but they are tightly controlled by automakers. It is unlikely you will find this information. Therefore, you will need to reverse engineer the CAN signals from an '04 RX8 engine. You will also need to know what the signals from the SR20det ECU mean. This information might be more easily found, but if not, more reverse engineering! Easier said than done, but not impossible.

Once you have knowledge of what translations to perform, creating a translator is relatively straightforward. Find a microcontroller with two CAN channels and write software to perform the translation. Don't forget to do lots of testing! You might even get away with the existing TI Tiva C LaunchPad hardware, which includes 2 CAN channels and has an Arduino-like ecosystem, Energia.

You must log in to answer this question.