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.