LinkECU CAN --> OBDLink MX --> RaceChrono not working

Hello, I have wired an OBD port adapter to my LinkECU per their instructions and have an OBDLink MX adapter connected to it. My goal is to get the data from my LinkECU (TPS, temp/pressure sensors, etc) into RaceChrono.

I have all the CAN ID's and equations setup in RaceChrono (per the Link CAN setup), but I am not seeing live data on the RaceChrono side. The OBDLink MX adapter is connected fine to RaceChrono.

Has anyone else set this up with LinkECU, or know of something specific we need to do to get this to work? The CAN port on the LinkECU is setup to transmit at 500K with the CAN ID's set to match this table : https://docs.google.com/document/d/1mG3b4P-JAOdh8a336QJgKCOS9kJKzp3m5jgcel4ssRs

I have RaceChrono working just fine with the same OBDLink MX adapter and getting CAN data from my 2022 Toyota GR86.

Comments

  • First thing to do when troubleshooting would be to check wha packets are being broadcast on the bus. This cannot be done in RaceChrono unfortunately. You can use a terminal app on a PC/Mac or an Android phone and connect to the OBDLink MX. You should then see a prompt which is the ">" character. You can type commands there and execute them using the enter key.

    Type "ATZ" to reset the adapter. Enable headers using "AT H1". Then just type command "AT MA" command to see all the CAN packets in the bus. If there's packets, just copy paste like 20-30 lines from here, and we can then troubleshoot.
  • Ok. Below is what I see, I included my GR86 as well, which works fine.

    The BMW Link looks very different (invalid it seems), assuming I am even getting the right data.

    BMW Link output:
    In this mode you can send commands directly to ELM327. You can search for ELM327DS.PDF to get full list of

    commands.

    Example: ATZ reset ELM327
    ATI - information
    ATDP describe current protocol ATDPN - current protocol number
    ATMA monitor all
    >
    ATDP
    AUTO, ISO 15765-4 (CAN 11/500)
    >
    ATZ
    ELM327 v1.4b
    >
    AT H1
    AT H1
    OK
    >
    AT MA
    0000100
    0000100
    0000100
    0000100
    0000100
    0000100
    0000100
    0000100
    0000100
    0000100
    ….repeats until buffer full message

    GR86 output:
    In this mode you can send commands directly to ELM327. You can search for ELM327DS.PDF to get full list of

    commands.

    Example: ATZ reset ELM327
    ATI - information
    ATDP describe current protocol ATDPN - current protocol number
    ATMA monitor all
    >
    ATDP
    AUTO, ISO 15765-4 (CAN 11/500)
    >
    ATZ
    ELM327 v1.4b
    >
    AT H1
    AT H1
    OK
    >
    AT MA
    3939D052D11C3010000<DATA ERROR 3A7B307000200000000<DATA ERROR
    04042030000000000FF<DATA ERROR
    1434400000000000000<DATA ERROR
    041614396A648290030<DATA ERROR
    663880F001000000000<DATA ERROR
    1469E02004014010000<DATA ERROR
    32B320400
    04043040000000000FF<DATA ERROR 041624496A648290030<DATA ERROR
    2D2E3074800C0000000<DATA ERROR
    138600E190000000000<DATA ERROR
    139AB5E00E008001417<DATA ERROR
    13B460E0000FFFFFFFF<DATA ERROR 13C5B0E0A0300030000<DATA ERROR
    118AC010000004E0044<DATA ERROR 2287301480000000000<DATA ERROR
    04044050000000000FF<DATA ERROR 1434501000000000000<DATA ERROR
    ….repeats until buffer full message
  • BMW Link? EcuLink? Well anyway the latter data looks right and the earlier data is just some placeholder data.
  • I don't know this ECU, but often you need to configure the CAN-Bus separately. I think this one has not been configured.
  • My BMW has a LinkECU.

    Link support has already configured the CAN Bus transmit details to match the document here: https://docs.google.com/document/d/1mG3b4P-JAOdh8a336QJgKCOS9kJKzp3m5jgcel4ssRs/edit

    I put that configuration into RaceChrono. But, from what you posted it sounds like no CAN data is being sent over the OBD bluetooth device.
  • edited July 2023
    No, I mean you may have to configure the ECU first to send these. I mean the Link ECU it self. Now it looks like it doesn't.
  • Right, we have already configured the CAN ID's to transmit on the CAN port that the OBDLink adapter is connected to. The CAN ID/streams are configured in the LinkECU to match that document, so I use that info to setup RaceChrono (PID and equation).

    We made a little more progress with an updated LinkECU config, now I can see data on the terminal ATMA output that looks like my GR86 above, but with no "Data Error" entries.

    However, RaceChrono is still not seeing the data correctly, or at all.
  • We were able to get LinkECU configured properly and we now see data when I connect to the terminal. I cannot, however, get RaceChrono to see the data, even though it connects to the OBDLink device just fine.

    Here is what I see on the terminal output from my CAN output from LinkECU:

    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB000 1000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB000 1000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB0000 000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB0000000000
    70A0028BB0000 00000
    70A0028BB0000 000000

    Anything we can do to further troubleshoot?
  • Looks like the ECU outputs only PID number 0x70A (or 1802 in decimal). Configure that to RaceCHrono and you should see that data. It's not changing on that copy-paste, but at least it's ouputting something.
  • I have 1802 already setup in RaceChrono for a few different things (oil/coolant temp, fuel pressure). I don't see anything in RaceChrono for those CAN ID's :neutral:

    Let me run the debug to see I can catch anything else. It is kind of hard to share the info when I cannot post screenshots.
  • Did you find anything new?
  • I will test again tonight. I was out of town all weekend racing the car and did not have time to test it. I had the OBDLink running on the car the first 2 days of racing, but never got anything in RaceChrono :(
  • Here is what I got tonight from the terminal when connected via OBDLink MX. Not much has changed. I do get a different output when I add "at h1" before running "at ma", which I think is expected.

    Atz
    At ma
    00 28 AE 00 00 00 00 00 (repeated until buffer full)

    Atz
    At h1
    At ma
    70A0028AD0000000000 (repeated until buffer full)

    I tried connecting to it with my laptop, ELM327 usb adapter, and PC app HUD ECU Hacker. But, all I got from "sniffing" the adapter was was below error over and over. If you know what I can do with that tool to get some useful data let me know, I don't think I'm using it right.

    19:39:08.952248RTR<RX ERROR
    19:39:08.957248RTR

    Not sure if it is helpful, but the CAN transmit streams on my LinkECU are setup as follows, with bit rate all at 500 kbit/s.

    Channel/Stream 2/Frame 1
    Transmit rate: 20Hz
    CAN ID: 1837
    Format: Normal

    Parameter: Engine speed
    -- Start position 7, width 14, byte order LS first, Multiplier 1, Divider 1, offset 0
    Parameter: Engine coolant temperature
    -- Start position 24, width 8, byte order MS first, Multiplier 1, Divider 1, offset 40
    Parameter: Oil Temperature
    -- Start position 32, width 8, byte order MS first, Multiplier 1, Divider 1, offset 40
    Parameter: Intake air temperature
    -- Start position 48, width 8, byte order MS first, Multiplier 1, Divider 1, offset 40

    Channel/Stream 3/Frame 1
    Transmit rate: 20Hz
    CAN ID: 1802
    Format: Normal

    Parameter: Fuel pressure
    -- Start position 16, width 8, byte order MS first, Multiplier 145, Divider 100, offset 0
    Parameter: Oil pressure
    -- Start position 24, width 8, byte order MS first, Multiplier 145, Divider 100, offset 0

    Channel/Stream 4/Frame 1
    Transmit rate: 20Hz
    CAN ID: 1803
    Format: Normal

    Parameter: Lat acceleration
    -- Start position 0, width 8, byte order MS first, Multiplier 981, Divider 10, offset 0
    Parameter: Long acceleration
    -- Start position 8, width 8, byte order MS first, Multiplier 981, Divider 10, offset 0
    Parameter: Wheel speed
    -- Start position 16, width 8, byte order MS first, Multiplier 10, Divider 36, offset 0
    Parameter: Lambda 1
    -- Start position 24, width 16, byte order MS first, Multiplier 1000, Divider 1, offset 0
  • It is not CAN ID 1837, but CAN ID 1802 that is showing up in your logs. Maybe your ECU is not configured the way you think it is.

    When you configure a CAN Bus channel with ID 1802 in RaceChrono, you should see some data in the channel editor, if you enable the "Test connection" in the vehicle profile.
  • I was listing out exactly how the ECU is configured. There are 3 CAN ID's configured in the ECU, 1802, 1803, and 1837 with the parameters for each also listed. LinkECU support took my map and set it up specifically to send that information to the OBDLink.

    So, 1802 has fuel and oil pressure on it. I don't see those in RaceChrono test connection, except on the rare occasion it will populate some numbers in there but never update or provide live info (data which is also not accurate, like 173psi fuel pressure, etc).

    I'll go back to LinkECU support and see if they have any other ideas.
  • Can you see this post below by LinkECU support? He shows all the details of exactly what the ECU is sending to RaceChrono, much better than what I can gather with the tool I used.

    https://forums.linkecu.com/topic/20656-can-data-to-external-data-logger-via-obd2-bt-adapter/?do=findComment&comment=120632
  • edited August 2023
    @btrjustin If the packets with correct ID's don't appear with "AT MA" then I have no idea why. It is an expert feature, and I cannot remotely solve it for you.
  • Well, according to what you stated, 1802 is indeed showing up in the AT MA output. I am guessing the buffer of my terminal app just gets full before I see anything else, I only see data for a second. I can remove the 1802 ID's and see if it shows one of the others.
  • Ok here is every CAN ID being sent by the ECU individually (1802, 1803, 1837). I disabled everything except one ID at a time and stored that to the ECU, capturing what the terminal saw and what RaceChrono saw (while in test mode).

    RaceChrono will see data the moment I store the ECU setting, then it just hangs there and never updates. So, it seems to be getting it initially and the data is accurate to what is showing on my ECU logger (except fuel pressure, that equation must be wrong still).

    1802 "at ma" output and what racechrono saw momentarily:
    https://drive.google.com/file/d/1MJFQ960DxKkC2nkAmtS0mxzuT9l-I0gV/view?usp=drive_link
    https://drive.google.com/file/d/1fwaGL6RVO2JwBVLNftc_hhs-3dxpkxh8/view?usp=drive_link

    1803 "at ma" output and what racechrono saw momentarily:
    https://drive.google.com/file/d/1HU8rGubGgmTCLskE3RL5kq20Ih4UBjXf/view?usp=drive_link
    https://drive.google.com/file/d/1v6JNmurGCbmm5oZYA5BgfQ_GuPzye4bE/view?usp=drive_link

    1837 "at ma" output and what racechrono saw momentarily:
    https://drive.google.com/file/d/1FCA0YtSM8it4E8ZdHlZ9JonTSBr-u0wW/view?usp=drive_link
    https://drive.google.com/file/d/1q8QarkfTG7OwOX7Pk9qAeTnpStotUpTD/view?usp=drive_link
  • Any update on this? I'm in a similar situation where racechrono just doesn't show the mapped PID's. Other apps seem to work just fine though.
  • Nope. I confirmed my ECU is sending out the right data but for whatever reason, RaceChrono is not processing and displaying it consistently. It all works fine in my other car, but that uses a GJP IO box to send the CAN data to RaceChrono, versus my LinkECU in this car. I wish it worked with LinkECU, because it is such an awesome setup when it works :(
Sign In or Register to comment.