RaceChrono logging via CAN for KMS ECU

Hi all,

I am running a track car with KMS computer for the engine. The car itself is too old for ODB connections.
I would like to have the RPM dial, speed dial and if possible, throttle position in my videos, as many drivers have in their videos.

The KMS computer is sending out CAN signals, also to communicate with other devices (AEM displays, their own display, lambda controller etc). I've bought a ODB2 plug and connected CAN H, L, 12V and GND correctly. The phone sees the OBD2 dongle and connects.

Important channels for me are listed in the DBC as follows:
[ECU_1]
ID=028h (PID decimal = 40)
DLC=8
Var=RPM unsigned 0,16 -m /u:Rev/Min /f:10 /max:20000 /p:0 /d:0
readout using: bytesToUint(raw, 0, 2) or BitsToUint(raw,0,16)
Var=Coolant_Temp unsigned 16,8 -m /u:"Deg C" /o:-20 /max:135 /p:0 /d:-20
bytesToUint(raw, 3, 1)
Var=Intake_Temp unsigned 24,8 -m /u:"Deg C" /o:-20 /max:135 /p:0 /d:-20
bytesToUint(raw, 4, 1)
[others removed]

[ECU_2]
ID=029h (PID decimal = 41)
DLC=8
Var=Supply_Voltage unsigned 16,8 -m /u:Volt /f:0.25 /o:8 /max:22 /p:1 /d:8
bytesToUint(raw, 3, 1)
Var=Load_TPS unsigned 0,8 -m /u:Load_Site /f:0.1 /max:15.9 /p:1 /d:0
bytesToUint(raw, 0, 1)
[others removed]

I've setup the bluetooth connection and verified connection using RaceChrono.
I tried ODB first, but as KMS does not support this, there is nothing to find. So I turned on other devices in the expert settings.
Then I removed the device from ODB and added it as CAN (OBDLink CX Bluetooth LE (CAN-bus)).

I configured the channels with PIDs in hex and decimal. I've used both BytesToUint and BitsToUint as equations.
Unfortunately, no live data is shown. I also can not add any configured channel in the slow or fast channels.
The weird thing is, when these CAN channels are configured in RC, the green light of the dongle starts flashing away. This was not the case with OBD connection. I do suspect that green is requests from my phone, and the orange light (which does not flash) is transmits from the KMS...

I logged some files and exported as CSV, but not any of the configured channels is in there. I've had KMS on the phone for an hour, but we couldn't solve it.
- We tried the automatic, and CAN protocol settings
- We tried with non standard OBD on and off
- When using Source data, there is a value in the equation (well, that's quite logical)
- I set Ignore PID capabilities to on and off
- I set Ignore no data to on and off
- I set Unrestricted custom PIDs on and off

It seems to me that the data that KMS is putting out, is not coming through the bluetooth dongle.
So the main question is, how can I get the KMS can data into RaceChono?


Comments

  • Hi, @daNpy2

    I can probably help you better a bit later, but first, I need point out a few things:

    1) Touching the OBD-II settings on the vehicle profile will not affect the CAN-Bus connection, as this is not OBD-II. So there's no point touching the Fast/slow channels, Non-standard OBD-II or Ignore PID capabilities, Ignore NO DATA etc. They do nothing when you have CAN-Bus reader configured. Basically all you have to do is to configure the CAN-Bus channels.

    2) The monitored CAN-Bus data comes over the bus without any special requests to the ECU. So RaceChrono just monitors the data. On OBD-II, requests are needed to be made to get the data.

    3) You probably cannot figure it out by just testing every setting, without proper troubleshooting. First you need to know if there's data coming from the ECU, and your OBDLink CX is seeing that data. As this is Bluetooth LE reader, you cannot connect your computer and a serial terminal to it, which would make debugging much easier. Idea is to send "ATMA" (+ enter) to the OBDLink, and it will output what it is seeing on the CAN-Bus. You could use nRF Toolbox app to do it, but unfortunately it's a bit tricky and you'll need to figure it out (or ask a friend).

    4) You can turn on "RaceChrono > Settings > Expert settings > Save device output", and it will save the interaction between RaceChrono and OBDLink CX within the recorder session. When you share that session it will include this information within the session. You can then unzip the .rcz file, and you will find this *.obd file there.
  • Hello AOL, thanks for your fast reply.

    I didn't know 1, thanks.
    2: clear
    3: I tried to find an app that can read can via the OBD link, but got no luck. THere is a can reader app, but it doesn't work properly, or I didnt try to extensively...

    4: I did this when I made another test-logging. However, I don't see an .odb file in there (24 channel files and 3 .json files).
  • edited July 2022
    4. And no .bin file either? And you had the expert setting enabled during recording of that session?
  • Yep I explicitly recorded (another) session with the output on. I will try again.
  • By the way I can set the KMS to 0,5 MHz or 1 Mhz canbus frequency. Both didn't work so far.
  • edited July 2022
    I wonder if the OBDLink CX supports your bus at all. It's meant for BMWs, sort of, but it does work on a lot of other vehicles too. But for a custom ECU, I would have bought the MX (or MX+) for best compatibility. Rather than trying to stab in the dark, you should try to verify that the OBDLink CX actually talks with the ECU, before trying to troubleshoot RaceChrono.

    When you connect the OBDLink CX with tools like nRF Connect, you should find a pair of characteristics, where one (UUID 0xFFF1) is write and the other one (UUID 0xFFF2) is notify. You should be able enable notifications on the other one, and then send an enter character (10 decimal value) to the other one. You should get something like ">" back. And when you write "ATMA" + enter you should get back either an error message, or part of the actual CAN-Bus traffic, as notifications.
  • Did another session last night with the save device output on. Also exported the settings in Racechrono to a .rcz file.

    This time de odb is in, but I can't make anything of the data

    <--20:36:02.102 OUT-->ATZ\r
    <--20:36:02.291 IN -->\r\rELM327 v1.5\r\r>
    <--20:36:04.607 OUT-->ATE0\r
    <--20:36:04.708 IN -->ATE0
    <--20:36:04.710 IN -->\rOK\r\r>
    <--20:36:04.710 OUT-->ATL0\r
    <--20:36:04.759 IN -->OK\r\r>
    <--20:36:06.112 OUT-->ATSP0\r
    <--20:36:06.230 IN -->OK\r\r>
    <--20:36:06.231 OUT-->ATS0\r
    <--20:36:06.283 IN -->OK\r\r>
    <--20:36:06.284 OUT-->ATH1\r
    <--20:36:06.337 IN -->OK\r\r>
    <--20:36:06.337 OUT-->STM\r
    <--20:36:06.388 IN -->?\r\r>
    <--20:36:06.390 OUT-->STFCP\r\r
    <--20:36:06.440 IN -->?\r\r>
    <--20:36:06.441 OUT-->STFCP\r\r
    <--20:36:06.494 IN -->?\r\r>
    <--20:36:06.495 OUT-->STFCP\r\r
    <--20:36:06.548 IN -->?\r\r>
    <--20:36:06.549 OUT-->STFAP 01D,7FF\r
    <--20:36:06.597 IN -->?\r\r>
    <--20:36:06.598 OUT-->STFAP 01D,7FF\r
    <--20:36:06.650 IN -->?\r\r>
    <--20:36:06.650 OUT-->STFAP 01D,7FF\r
    <--20:36:06.703 IN -->?\r\r>
    <--20:36:06.704 OUT-->STFAP 01C,7FF\r
    <--20:36:06.755 IN -->?\r\r>
    <--20:36:06.755 OUT-->STFAP 01C,7FF\r
    <--20:36:06.808 IN -->?\r\r>
    <--20:36:06.810 OUT-->STFAP 01C,7FF\r
    <--20:36:06.860 IN -->?\r\r>
    <--20:36:06.861 OUT-->STFAP 028,7FF\r
    <--20:36:06.912 IN -->?\r\r>
    <--20:36:06.913 OUT-->STFAP 028,7FF\r
    <--20:36:06.965 IN -->?\r\r>
    <--20:36:06.966 OUT-->STFAP 028,7FF\r
    <--20:36:07.018 IN -->?\r\r>
    <--20:36:07.019 OUT-->STM\r

    And then the last 2 lines are repeated for the rest of the file.


  • Thank you. No packets with those PIDs you have defined.
  • If you follow my previous instructions, you'll see if theres _anything_
  • I will try tomorrow :)
  • With a borrowed CAN logger/ reader and not even paying too much attention to the settings, I directly got messages on the CAN bus from the ECU. The message ID's immediately looked correct, so the data is being sent to the ODB bluetooth plug.

    Now I (still) have to try the nRF connect suggestion to see how to get the data to the phone!
  • "When you connect the OBDLink CX with tools like nRF Connect, you should find a pair of characteristics, where one (UUID 0xFFF1) is write and the other one (UUID 0xFFF2) is notify. You should be able enable notifications on the other one, and then send an enter character (10 decimal value) to the other one. You should get something like ">" back. And when you write "ATMA" + enter you should get back either an error message, or part of the actual CAN-Bus traffic, as notifications."


    I found the Service 0xFFF0. It contains 0xFFF1 and oxFFF2 indeed.
    I can try to send, but 0xFFF2 says "Write, Write no response".
    Descripors says:
    UUID: 0x2902; Value: Incorrect data length (16 bit expected).
    I've tried some things but the write actions keeps saying write no response. I guess the ODB device is not able to connect on CAN level, unfortunately.
  • You should write your request to the one that is Write only. You will get the response from the one that allows notifications. Enable notifications before writing to the other one, and you should see the response.
  • I did write the request in write only, the other one does not have the option to write.
    I didn't see the "turn on notifications" for the other one, I will have a (better) look again.

    Still I am wondering if the CX allows CAN messages to pass. Are you sure the MX(+) will do that? The dongle is quite expensive, and that's not a problem, as long as it will work, otherwise it's just a waste of money :)
  • edited August 2022
    No, I'm not 100% sure, and I will NOT refund it if it does not work, as I'm not getting any money from your purchase either :)

    MX/MX+ hasn't failed me so far though, and the CX doesn't work on some of my vehicles (which is OK, as they do say it is only for BMWs).

    Also debugging is a lot easier with MX/MX+ as you can just connect it with PC, and open it in serial terminal, and type the commands there.
Sign In or Register to comment.