Suzuki GSX-R Motorcycle Forums Gixxer.com banner
1 - 12 of 12 Posts

· Registered
Joined
·
33 Posts
Discussion Starter · #1 ·
We all know about car diagnostics and learned that things were different on motorbikes.
The bike manufacturers were not forced to use OBD II until 2020. So everyone did something unique.

At least for Suzuki, there are several possibilities to find issues:
  • Shortwire the diagnostic plug, to see the error code on the dashboard.
  • Use the official SDS (when you are a dealer or were lucky to buy it second hand).
  • Buy a multi-manufacturer workshop-tool for several thousand bucks.
  • Use a 3rd party tool like Healtech.
  • Trust a promising chinese tool, which pretends to support many manufacturers for small money.
  • Create an own unique device and program it from scratch, to understand how all of this works, by trial & error (like me)
Shortwiring is the simplest one, but just works rudimentary.

SDS and Healtech only support a single manufacturer. Healtech has a single device per Honda, Kawasaki & Suzuki, which are working quite well! But every solution also requires a notebook.
To see which features healtech supports, I can recommend to download the application from their official website and open the included demo-files.

Skipping the very, very expensive tools for workshops, which often are combined with monthly fees to get recent updates to new manufacturers and models, for invaluable reasons...

After searching and comparing several cheap tools, offered by a well known chinese selling portal, I found the JDiag M100. It pretends to support 26 manufacturers, reading livedata, read/reset Diagnostic Trouble Codes, actuator tests and much more.
Product Telephony Communication Device Gadget Camera accessory

So I gave it a try for around 120$ without manufacturer dependend plugs (which would have come for additionally almost the same price). In the meantime they released a sucessor, which seems to be the same device with a different look and fancy icons.
It supports updates, which enhanced the manufacturer list to 29 and resolved some issues.
My tests on Kawasaki, Suzuki, KTM, Ducati and Honda....worked.
What does that mean in particular?
The JDiag connects (even if the modell selection might not be exact, "auto search" mostly works) and gives you some data.
Live Data: This shows manufacturer dependent RPM, temperature, speed, etc. There is often more data, which the device does not show. Some entries display wrong values, because "null" or "(currently) not available" is represented by hexadecimal 0xff or integer 255, but JDiag calculates with it. So speed greater then 500km/h is not unusal on idle.
Showing the DTC works okay. On some entires the description is too long and does not scroll, so you have to guess.
Deleting DTC mostly works, for me it failed on the Kawasaki ABS module.
Showing freezed frames (represents the live data from the exact point where a DTC occured) isn´t reliable at all. Sometimes is won´t show data because the DTC was deleted, but the FF data is still there and requestable, sometimes it shows data like "starter switch pressed" but nothing helpful from the remaining 52 values.
Actuator Test was updated a bit on the last release. You can drive the exhaust valve, power up the fuelpump or use a cylinder specific injector. But it does not show the current value, which just would be nice.

In short: It works okay, but not much more. Having several bikes and you´d like to see or delete a DTC, this might be a helpful companion in your garage. Going deep into finding issues with your bike, this won´t give you all the needed information. At least for the manufacturers I have tested.

In the past, there has been the ECU Hacking forum around. Some guys found out how the communication protocol worked for Honda, Kawasaki and Suzuki. So I created a device on my own and found out more and more, how all of this works. Since then I am submitting my ECU data onto my Garmin Virb camera via bluetooth:
This works quite well and I started to find out more and more about the possible functionalities and more manufacturers. For that reason I bought the Healtech and JDiag devices, to see how the communication protocols look like and what I can adapt.
My custom adapter(s):
Electrical wiring Cable Gas Electronic device Wire

A very old code can be found for Kawasaki here.

From ~2020 on, there will also be OBD II available on most bikes. Or even earlier, it the manufacturer already planned the bike to be future proof. The plug will look like that:
Hood Automotive design Automotive tire Motor vehicle Finger

and you might buy an adapter to OBD2, where you can attach an ELM327 such as an OBDLink.

Can I just create an adapter myself for an older bike and attach a cheap chinese ELM327 clone to make it work? No!
The clones don´t support proper reprogramming! It might be possible to use an original OBDLink with a pre-OBD2 bike. But this will only enable the physical communication. So you still need to have a tool or app which changes header data, translates values and calculates independently from the OBD2 standard.

That´s it for now. If you were interested, I can go more into detail :)
 

· You should listen to me. No, seriously, listen to
Joined
·
11,122 Posts
SDS has the ability to log the bike's data and graph and/or save it. In fact the service manual recommends getting a baseline and saving it for later comparison. There used to be several sellers of SDS on AliExpress. Prices were originally in the low $200's and trended down over time to around $150. Their pics were of the genuine SDS but it was never clear if they were actually selling that. I tried contacting some in an attempt to get a newer version of the software for my SDS and got no response or a runaround. The SDS graphing capability wasn't as good as it could be so I spent a bunch of time decoding the saved file and writing a program to convert it to a format that could be read by higher power graphing software like KST. I've shown some of the results elsewhere here. I also bought a cheap mini-laptop that would fit in a backpack to log data while riding. It's a bit awkward but better than nothing.

It's unfortunate that the ECU hacking forum has disappeared. It was the creation of RidgeRacer and I suspect was shut down due to lack of activity/interest. I haven't checked but some of it might be retrievable on the internet archive.

Shortwiring the diagnostic plug is a hack. A Suzuki or aftermarket dealer mode switch is cheap and makes it much easier to enter dealer mode, especially when you don't want to turn the ignition off, which will clear many codes. Shortwiring invites the possibility of shorting something else that shouldn't be.

P.S. I just checked the internet archive. The ECU hacking forum has been archived and here's an example. The Kawasaki link that you provided is interesting.

P.P.S About two years ago I got some information on how to hack the cluster from someone in Bad Munder. This isn't for illegal rollback of the odometer, rather to remove the tach and speedo error plus some other things.
 

· Registered
Joined
·
33 Posts
Discussion Starter · #3 ·
Hi Bill,
you can show a graph on the JDiag as well. Even on true/false values ;)
Saving data is not possible, although it has an internal SD card.
But during all my "hacking" attempts, I´ve created a device, which can be attached between the bike and any diagnostic device. It throws everything on the K-Line or CAN-Bus onto a SD card.
In earlier times I´ve sniffed the data transferred by the software over USB to the dongle.

Then I did the same thing like you and wrote a program to show (but not visualize) the logged data. With that, I was also able to convert the Healtech logs and some more. That approach helped a lot to find the right equation, I could not find out myself in the past.
Font Material property Parallel Rectangle Number

If you´d like to, send me some SDS files and I´ll try to analyze them as well. This would be very helpful :)

What I read about the SDS and Healtech devices from Ali: They will be destroyed using the latest, original software. They can detect if its a clone and kill the USB chip. The same way as fake FTDI chips were destroyed, when the chinese just 1:1 copied them.

Sounds interesting how to get inbetween the cluster. AFAIK it´s also a K-Line communication.
For Kawasaki I got the dealer code activation, which can enable reading and reprogramming the ECU, I guess. But since I do not want to brick my ECU, I did no further research on that...

Many equations on the ECU Hacking forum were wrong, but to get into the topic for Suzuki and Kawasaki, this is a great starting point. And good to know about the Web-Archive!
 

· You should listen to me. No, seriously, listen to
Joined
·
11,122 Posts
Here's an example of my KST graphs:

I'd posted others here but they were hosted on Tinypic and they've since shut down with the images no longer available.
I was able to figure out the how the SDS save files were organized and determine the equations that convert the SDS values to physical data. But it was on another computer running W98 and it will take a while to access it. So I have SDS save files, a program to convert them to a spreadsheet type format, maybe csv, some associated spreadsheets, and the KST graphs. I'd added an extra line to the data with my chain/trans gearing and rear tire diameter. This allowed me to convert RPM to speed and include it in the graph. Interestingly, as I've mentioned elsewhere here, the SDS file had some extra information that was not listed in the SDS documentation or displayed/plotted by the SDS software. I suspect that it is the injector duration and ignition advance for each cylinder but can't do much with it without more info.

P.S. The graph is a large image (2045x768). It's best viewed by copying it to a hard drive and viewing it from there.
 

· Registered
Joined
·
33 Posts
Discussion Starter · #5 ·
That looks great!
I think I should also add some graphes and gauges :D
For a very long time, I´m considering to rewrite the whole application, make it available for other operating systems, add some features, etc. But got spare time for that...
Started with a little ECU emulator for Kawasaki, so I must not go into the cold garage to test my adapter. Then, when I bought the Suzuki, which send all the data in one response, rather then each per request, I extended the application.
Then I found out about the message structure from Honda (a different format) and found my self in a dead end 🙈

Winter is coming, I´ll try to make it to my next project.

It would be amazing to get some SDS files!
For request SID 0x08 there are about 8 missing values, because they are allways 0xFF in my bike. And then some bits, which are "hidden" somewhere together with driving mode, clutch, starter switch, etc.
Then there were SID 0x80, 0x90 and 0xC0, which seems to be some static values (00, 40, 80, C0), some are similar to TPS, Speed, STPS and others were not related to anything. Maybe a testing feature.
 

· Registered
Joined
·
33 Posts
Discussion Starter · #6 ·
Happy new year!
I´ve just released my current Arduino code:
gitHub/KDS2Bluetooth
The repository is still called "KDS", but this version supports Suzuki SDS and Kawasaki KDS.
A little explaination video is made right now and will be released within the next days.

New version of my ECU Emulator and the HEX-Viewer will also be released. But I don´t have a roadmap for that right now.
 

· You should listen to me. No, seriously, listen to
Joined
·
11,122 Posts
I don't know if you're still monitoring this thread but I've placed some SDS info here for download. This is nine years old and I've forgotten many of the details. So some of this may not be exactly correct.

"Baseline.pds" is a SDS save file. SDS also has the ability to read such files and plot the data in it.

"SDS data summary.txt" is a text file that explains the structure of a SDS save file (pds extension).
I think the Min, Max, and Engine Off columns are for a particular run that is different than the Baseline run. I don't say as much but I think the time data may be in milliseconds.

"Baseline interpretation simplified and cleansed.csv" is a csv file created from the pds file by the program described below. I think that "cleansed" means that I've removed data columns that are always 0 and not logged by the SDS. In this particular run, the bike sat for roughly 85 seconds before I started it, hence all the zero values in the beginning.

"Baseline interpretation simplified.xls" is a spreadsheet created from the csv file. It's easier to go through than the csv file.

What I did was first create a small file with the transmission ratios, sprocket sizes, and tire diameter for my K6 1000. I think it may also include preferences for °C/°F, etc. in the output file. Then I wrote a program that reads the small file and the SDS/pds file and outputs a csv file with the SDS data values converted to real values. The conversion algorithms are in the comments at the top of the xls spreadsheet columns. They were determined by a lot of comparing the data values in the SDS file and the real values displayed by the SDS program. The SDS file has no information on speed or distance. I calculate both from the RPM, gear position, and time data in the SDS file using the transmission ratios, sprocket sizes, and tire size. The KST plotting program reads the csv file.

The SDS will connect to other vehicles like scooters. Some of the unused values are associated with parameters unique to them. But there are also data values for my bike that are not displayed by the SDS program that I suspect are the fuel injector pulse width and spark timing for each cylinder.
 

· Registered
Joined
·
33 Posts
Discussion Starter · #8 · (Edited)
Hi Bill,
thanks a lot for sharing this with me!
I can understand the most of your files :) Only having a single difference in the bit-position of the neutral switch. You got 4, I have 7. All other positions and equations seem to be the same.

The Baseline-File is really interesting! This will take me a while to enhance my interpreter software. But that´s what I want to archive ;) And your Excel-sheet helps a lot!

I´ll further dig into that during the next days. Feels like I mostly have everything together for SDS.
There were only other messages, I don´t understand. Like PID 0x80, 0x90 and 0xC0. This seem to be a specific channel for testing and/or min-max values.

EDIT:
How sure are you about the equations with 255?
For Kawasaki I got the resolution from the official KDS software.
RPM for example has a resolution of 0.390625
This is exactly 100 / 256.
Your´s would be 100 / 255 = 0.392156862745098. Which seems quite hard to calculate on 8 bit sytems. Healtech was using strange calculations as well: A * 256 + B, combining two digits, but then also going on with 255: ( A * 256 + B) * 100 / 255.
This bothers me for a long time! It seems every system does it differnently :(
 

· You should listen to me. No, seriously, listen to
Joined
·
11,122 Posts
I've forgotten the details but remember having big lists of the raw data and what was displayed by SDS, then trying various conversion algorithms until the converted data exactly matched the displayed. 255 surprised me too but that's what is was - and it kept coming up again and again. I've guessed that it has something to do with the SDS hardware. I also distantly recall that there was something unexpected about the acquisition time increments, i.e. that they aren't smoothly spaced. My conversion program is on a Windows 98 system that is partially broken right now. I routinely archived things but it was done using Ghost, which was discontinued in 2013 and never available for XP or 10. I'm currently looking into installing 98 in a virtual machine as I also have old versions of Autocad and Photoshop that I'd like to use again. Alternately I might be able to physically move the IDE hard drive to a marginally operational XP system and copy things from it there.

P.S. I've also uploaded Test-1.pds and Test-6.pds. Test-1 apparently corresponds to the Min, Max, and Engine Off values in SDS data summary.txt. But I don't know any more than that. Test-6 corresponds to the big KST plots that I've previously posted here.
 

· Registered
Joined
·
33 Posts
Discussion Starter · #10 · (Edited)
Don´t make yourself too much work with that!

I just need a hint how the combine the Baseline-File to the Excelsheet/csv. It seems that there is some kind of header within the SDS file. And afterwards the data is arranged vertically? I can see blocks of values 🤔 But the number of values does not exactly match to the Excel.
At least I could find some of the values, translating the Basline.pds into ANSI and then into Hex.

Strange way of designing a binary file like that! But I´ll figure it out :)

EDIT:
Okay, got it!
There is some kind of header between the data:
00 0b 00 10 00 02 00 00
0x0B RPM - 0x02 no of bytes.

00 0d 00 10 00 01 00 00
0x0D TPS - 0x01 no of bytes.
 

· You should listen to me. No, seriously, listen to
Joined
·
11,122 Posts
It sounds like you may have figured it out but I've also come across "PDS data structure.xls" and uploaded it. It may have additional insight. But, as previously stated, these are old files and I've forgotten much. It looks like NDP is Number of Data Points and NC is Number of data Channels. I'm drawing a blank on PTP. The two columns between Address and Value, ex. C and D, are identical but are calculated in different ways. I don't remember what that's about but it probably has to do with some sort of check.

Also, with regard to 255, note that battery voltage and throttle position are simple multipliers. I think it was them where I first determined the 2.04 and 12.75 factors, later realized that they contained 255, and found 255 in the other algorithms.
 

· Registered
Joined
·
33 Posts
Discussion Starter · #12 ·
Thanks a lot!
The first challange was to determine the correct file encoding. After converting to UTF-16 BE BOM, the values seem to fit to your findings. But the position is shifted by two places.
Reading the time works for about 290 of 521 datasets. Then the index disappears 🤷‍♂️
So going on with the search for a better encoding, ISO-2022-JP seems good! Now the comment makes sense, but the timing drifts away one place forth, and back after a while.
And the number of data points stopped working...

Now I´ve ended up with reading Unicode Little Big Endian and convert it to UTF-16. And it finally seems to be what I´m looking for. What a travel 🤦‍♂️ You don´t want to see my code testing all the possible combinations...

Reading the times went well, but the data freaks me out again. It seems that the header changes it´s size due to the byte-length of the data. This will still take me a while to make it work and a bit more robust.
 
1 - 12 of 12 Posts
Top