How to Get All Data from KTM 390 OBD2: Understanding CAN-BUS Communication

I am diving into the CAN-BUS data from my KTM 390 motorcycle and trying to understand how to access all the available information. I’ve been logging CAN-BUS traffic with and without an ELM327 adapter connected to see the differences.

My primary goal is to retrieve the intake air temperature value. When the ELM327 is active, I observe OBD2 requests (7DF) and responses (7E8). For example, a request 02010F0000000000 gets a response 03410F4E00000000, which translates to 38 degrees Celsius for the intake air temperature.

However, I’m struggling to locate this specific intake air temperature value, or any related data, within the standard CAN-BUS traffic when the OBD2 requests are not being made.

For other parameters like RPM, I can see them in OBD messages like 04410C21A0000000 (2152 RPM), and I also find the same RPM value in the “normal” CAN-BUS data with ID 540 and messages like 02 08 68 ....

My main question is this: Should every parameter that can be requested via OBD2 also be continuously broadcasted in the regular CAN-BUS traffic, even without active OBD2 requests? Or is it necessary to specifically request certain values if I want to monitor them on the CAN-BUS?

From my research, it seems the intake air temperature might not be part of the constant CAN-BUS stream. I’m still analyzing a lot of data, but I want to avoid spending time searching for something that might not be there. I’m asking this question to get some expert insight and prevent a potentially fruitless search.

I understand that data within CAN frames can be single or multi-byte, and calculations might be needed to decode them. I have successfully deciphered other values in the CAN traffic, so I have a general understanding of the process.

Edit: My current project is on a KTM Duke 390 (2017 model). It utilizes modern electronics including throttle by wire and has a diagnostic connector with a 500kbps CAN-BUS output. I initially kept the vehicle model general because my question is more about the general principle of OBD2 and CAN-BUS behavior, rather than being vehicle-specific. However, for clarity in this context, the bike is a KTM Duke 390. This question may also arise when I work on other motorcycles in the future.

Edit 2: To further clarify my objective: I am developing a device that passively listens to the CAN-BUS and analyzes the data stream. One feature I’ve already implemented is an enhanced brake light that intensifies when braking harder. This is possible because I identified brake pressure data within the CAN-BUS, represented as a 16-bit value for the front brake pressure. Now, I want to incorporate intake air temperature into another feature I’m developing. Currently, I can obtain this data using OBD2 requests and processing the response messages. However, my preference is to only listen passively to the CAN-BUS traffic if possible. If I can find the intake air temperature value without actively requesting it via OBD2, that would be ideal. Alternatively, I could directly measure the voltage from the NTC sensor (thermistor) and use an analog-to-digital converter. But it seems redundant to add extra sensors if this data is already being measured by the bike’s ECU and potentially available on the CAN-BUS. This passive data acquisition approach is what I’m aiming for.

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *