Datalogging on BMW S1000RR/R 2013-2018

edited June 2020 in DIY builds
Hi, I'm trying to set up OBD datalogging on my 2016 BMW S1000R. As far as I know, the motorcycle does not support classic OBD-II, however the messages on the BUS should be similar to OBD.
I have Android 10 and an OBDLINK Bluetooth dongle.
The setup works in general, as I was able to view live data via an app calles "MotoScan".
But I didn't manage to get any logging with RaceChrono nor was I able to view live data via Torque.

In RaceChrono I tried all standard protokolls with activated "fast" or "slow" channels.
I tried non-standard OBD-II
I tried "add channel" and rebuilt some OBD messages.
But whatever I try, as I start the session, instead of showing live data it only says "waiting for data" and nothing happens.

Does anybody have a solution or maybe already managed to get it running for a BMW motorcycle?

I post my debug-logs if thats any good.

Greetings and thank you in advance

Comments

  • aolaol
    edited June 2020
    As far as I know the S1000RR does not support OBD-II. It does have CAN-BUS, which is also supported by RaceChrono. 

    Here's how to use the CAN-BUS feature with OBDLink readers with RaceChrono: 

    1) Enable "RaceChrono > Settings > Expert settings > Experimental devices" 

    2) Add a CAN-Bus recording device "RaceChrono > Settings > Add other device > OBDLink LX/MX/MX+ Bluetooth (CAN-Bus)", and then select your OBDLink device. Notice this will NOT work on any other reader. Also it will NOT work if you add the OBDLink with "Add OBD-II reader", you need to use the "Add other device" to add the reader specifically as a CAN-Bus device.

    3) You can now add CAN-Bus channels to the vehicle profile.  

    4) In the channel editor:
    - Channel and Channel postfix field defines how the channel shows up in your RaceChrono sessions
    - Source data field is data for testing your equations
    - PID field defines which CAN-Bus message has the information. 
    - The equation field defines where the channel data is located in the message, and how it is translated to actual channel values. The equations are explained here: https://racechrono.com/support/equations

    The equations are proprietary for each manufacturer, and often they vary between vehicle models too. The S1000RR CAN-Bus messages have been reverse engineered already, and the message formats are described in this document: https://docs.google.com/spreadsheets/d/1tUrOES5fQZa92Robr6uP8v2dzQDq9ohHjUiTU3isqdc/edit#gid=1756716432

    Translating this documentation to RaceChrono equations is perfectly doable, but requires some knowing some basic computer science methodology like bits and bytes.

  • edited June 2020
    @aol

    Thank you for your support. With the linked spreadsheet it is clear what to do.

    As a test I created a custom PID for RPM
    From the Spreadsheet:
    PID: 10C(h) or 268
    (Byte2 + Byte3(Low Nibble) * 255) * 5

    In Racechrono:
    PID Field = 268
    (bitstouint(raw,16,8) + bitstouint(raw,28,4) * 255) * 5

    I guess this should work, but unfortunately I'm unable to receive data when I start the session, it just says "waiting for data".

    What confuses me most, is the fact that when I choose "test connection" in the settings or start the session and look at the connection, it connects to my OBDLink but most of the time I only get lik 0,1 kbit/s.
    SOMETIMES I get changeing datarates arround 100 to 200 kbit/s. But I don't know why.
    But still, there is no datalogging.
    Furthermore I cannot check the box for "live data" in the Custom PID Screen.

    Any help or advice would be really great. Thank you very much!
  • aolaol
    edited July 2020
    Hi, is your bike running when you do this? There could me multiple reasons why this happens, but sounds like there's no messages from the bus with this PID. You could try to use a terminal app to connect to the reader, and see what's going on with your bus.

    Commands:

    Reset device:
    ATZ

    Set protocol:
    ATSPn (Where n is protocol number, same as in RaceChrono settings. Start with ATSP0 for automatic protocol selection)

    Monitor CAN-BUS messages:
    ATMA

    You should see all messages from your bus. Make a note which PIDs you're seeing. These are the ones you can configure in RaceChrono.


  • hi, today i was trying to get data on my s1000rr 2015, with an obdlink lx, but there was no way. It connects via obd can bus, I test the connection and fine, but within the session it does not open any channel or receive data. I was looking at the table of the previous link in this post, but I am unable to put the channels manually and then read them. Has anyone got it? thanks.

  • There is something that I do not understand.

    when I connect the obdlink lx and put the motoscan, I can read data in real time of rpm, throttle position, ... that is, if it send that data, it should be possible to extract the same for the racechrono.

    Do you know if they sell any cable that plugs into the canbus connector where the aim solo2 dl is plugged in, that transforms from canbus to obd? or would someone know how to do it? thanks.

    Enviado desde mi Mi 9T Pro mediante Tapatalk

  • Alguna ayuda @aol ??


    Lo conseguiste @Schnellfahren ?

  • aolaol
    edited October 2020
    The connection can be established without defining the channels, but the channels need to be configured correctly to get any data. I do not have BMW S1000R myself, so I cannot give the correct equations for the channels. The other app probably has a profile for your bike, with all the channels already configured. RaceChrono does not have any already made profiles.
  • @Yodoc86 No. I'm wondering if the CAN Messages are MSB oder LSB and how I could transpose the Bit Vector of each signal.
    I'll figure it out eventually, but I'm so busy atm that I barely have time to test it.
    Maybe a wonder occurs and someone reads this post and can give an working example/tutorial.

    Greetins
  • edited April 26
    Today I tryed to log the ambient temperature (ID: 3FA). This ist the .obd file for the session. I think the temperature is sent every 5 seconds, so something must be correct at least :). But during the session it only said: "waiting for Data". Should there be any Data logged in this file?
    STFAP 3FA, 7FF. Is this a Mask? Why 7FF?
    @aol Can you see any Problems?

    <--18:34:39.638 OUT-->ATZ\r
    <--18:34:41.502 IN -->\r\rELM327 v1.3a\r\r>
    <--18:34:41.503 OUT-->ATE0\r
    <--18:34:43.536 IN -->ATE0\rOK\r\r>
    <--18:34:43.537 OUT-->ATL0\r
    <--18:34:43.545 IN -->OK\r\r>
    <--18:34:43.546 OUT-->ATSP0\r
    <--18:34:44.591 IN -->OK\r\r>
    <--18:34:44.591 OUT-->ATS0\r
    <--18:34:44.600 IN -->OK\r\r>
    <--18:34:44.600 OUT-->ATH1\r
    <--18:34:44.608 IN -->OK\r\r>
    <--18:34:44.608 OUT-->STM\r
    <--18:34:44.619 IN -->SEARCHING...\r
    <--18:34:49.623 OUT-->\r
    <--18:34:49.653 IN -->\r>
    <--18:34:49.654 OUT-->STFCP\r\r
    <--18:34:49.662 IN -->OK\r\r>
    <--18:34:49.663 OUT-->STFAP 3FA,7FF\r
    <--18:34:49.672 IN -->OK\r\r>
    <--18:34:49.672 OUT-->STM\r
    <--18:34:54.675 OUT-->\r
    <--18:34:54.729 IN -->\r>
    <--18:34:54.729 OUT-->STM\r
    <--18:34:59.735 OUT-->\r
    <--18:34:59.775 IN -->\r>
    <--18:34:59.776 OUT-->STM\r
    <--18:35:04.778 OUT-->\r
    <--18:35:04.808 IN -->\r>
    <--18:35:04.808 OUT-->STM\r
  • aolaol
    edited April 27
    @Schlo Communication looks correct for a CAN-Bus PID that's not transmitted in the bus. The 0x7FF is mask to include only the packets with PID 0x3FA.

    Can you use a Bluetooth terminal app to connect to the reader? If so try ATZ and then STM. Both commands should be followed by an enter. It should output all packets received from the bus, so you can see which PIDs should be working.
  • @aol Is there a terminal app you can recommend? I searched but was unable to find a working one. Android or Windows.
    I have the OBDLINK LX dongle.
  • @aol I used "Serial Bluetooth Terminal" App for Android.
    ATZ
    ATZ^M^M^MELM327 v1.3a^M^M
    STM
    STM^MCAN ERROR

    Seems like there are no Messages on the BUS by default. Maybe you have to trigger them via a diagnoses job or something, since I can perfectly read and write with "Moto Scan" app.
    Any idea how to manage that?
  • No, the bus should have all the messages between your ECU and dash for example. RaceChrono is not getting the CAN ERROR so I think it's intermittent.
  • edited May 2
    @Yodoc86 It finally works.
    I have to appologize for my mistake (a stupid one) and the trouble I caused. Thanks @aol for your patience and help.
    I want to contribute to my fellow S1000R/RR Drivers out there, who are interessted in Data logging via RaceChrono.

    My supid mistake:
    I used the 9 pin round connector located in the back of the S1000R (2016) to connect to the OBDLINK LX Blutooth device. With the Motoscan app I can read some data of the ECUs and I can also progam the ECUs. However, THIS IS NOT A CAN BUS. The connection is established through k-line and l-line.
    Here is a link so it is clear what I mean.
    https://www.s1000rrforum.com/threads/diy-obd2-on-s100rr-with-extended-display-gauges-and-obd2-code-reader.19954/
    I don't know the protocol, but it's not compatible with RaceChrono (no CAN BUS, no OBD2, no OBD2 like connection)

    Solution:
    So here is how it works. You have to find a CAN BUS to connect to. I used the spare plug of the anti-theft-alarm-system.
    Here is a website, where you can see the pin-out of the connector.
    https://www.seanfoley.blog/bmw-s1000r-motorcycle-canbus-hacking/

    Make sure to connect it to the right pins of your OBD2 logger.
    https://de.wikipedia.org/wiki/On-Board-Diagnose
    PIN 16: 12V
    PIN 4: Vehicle Ground
    PIN 6: CAN High
    PIN 14: CAN Low

    Follow the steps on how to set up your device as a CAN Bus logger on the race chrono website.
    https://racechrono.com/support

    Find the right Messages you want to log with this spreadsheet.
    https://docs.google.com/spreadsheets/d/1tUrOES5fQZa92Robr6uP8v2dzQDq9ohHjUiTU3isqdc/edit#gid=1756716432

    Look up the equations for RaceChrono Data Logging.
    https://racechrono.com/support/equations

    Add the CAN BUS Channel in Racechrono. For example:
    Intake Air Temperature
    Parameter ID: 1018
    Equation: bitstouintraw(raw, 0,8) * 0.75 - 48

    I hope this helps.
    Greetings
Sign In or Register to comment.