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
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.
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!
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.
Finally, can you datalog your bike??
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 ?
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
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
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.
I have the OBDLINK LX dongle.
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?
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
I feel a Wiki-like format would be a lot more useful, as others can correct/update things, not just "add a the end".
If you're familiar with how to work with git / GitHub, feel free to send pull requests to add more info here:
https://github.com/timurrrr/RaceChronoDiyBleDevice/tree/master/can_db
Tell me, did you manage to make equations? I don’t understand how to write these equations at all, although I read the instructions.
I find it easier to take the bike apart and put it back together again.
Or maybe someone has ready-made equations for the BMW S1000RR?
We need - speed, throttle, accelerator, and the main start of pressing the brake and, if possible, effort.
https://docs.google.com/spreadsheets/d/1tUrOES5fQZa92Robr6uP8v2dzQDq9ohHjUiTU3isqdc/edit#gid=1756716432
I have a similar document that has specific corrections for the S1000XR.
https://docs.google.com/spreadsheets/d/1Tn1NUKs-iS0VNayEWnzZ38CHXNaqZsz723aXRCn4e_U/edit?usp=sharing
On the 4th tab, I have Racechrono equations that you can reference / modify for the S1000RR
The diagnostic plug is not connected to the main canbus network.
The easiest location to connect to the main network is the alarm plug. Schlo lists exact pin numbers + documentation in his post.
https://racechrono.com/forum/discussion/2121/tire-temperature-ir-camera-updated-rejsarubbertrac
Less than $50 per tire to get full temperature and suspension travel telemetry @ >10 Hz
I bought all the spare parts, I'm waiting for them to arrive and start assembling