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
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.
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).
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.
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.
Now I (still) have to try the nRF connect suggestion to see how to get the data to the phone!
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.
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
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.