First thank you all for all those amazing work done one this Global Project. I've tried to read everything to avoid asking stupid question =).
Here is the status of my personal project (getting gear indicator , temperature and angle/accel on my phone) :
My Program is working well, bluetooth connection OK and phone App OK. The remaining is the communication with the bike and there is the reason I'm posting this message. I had few messages on Youtube with Trib (thank you again ! ) , after one twited L9637D, I received a new one and still not working. So I tried to simplify the system at maximum :
One additional thing : The Programme is working very well with the ECU emulator from Trib.
We don't see it very well on the picture , but there is 470 Ohms pull up resistance (to +12V) and 100nF capacitor (to GND).
I found the problem : my arduino mega has some issues with 10400 baudrate. I changed it step by step and at 10250 it works !
I got the same idea to create an own device, which can be used by the original KDS software, several years ago, as well.
But like you, I was stopped by the fact, I did not knew anyone owning a KDS Dongle to clone/observe/sniff/whatever.
Another thing was, that it seemed not only to be the HW ID, which indicates an official KDS adapter.
But a little hint, if you´d like to investigate this further: Kawasaki likes to hardcode anything into the C binary, which is not included in the KDS database 8)
With the right tool, it might be possible to identify the dongle initialization routine.
From my perspective there is no real need to go this way. The informations are all out there. Except the immobilizer key (KIPASS) update and some ABS tests.
PS: The communication protocol is not CAN!
And I´d not recommend to publish copy&pasted information from password protected databases, from licensed software.
That´s why I only shared my very own findings on my git and let anyone do the work themselves, to circumvent any copyright issues.
do you know if on newer bikes ( EURO 4 and 5 ), this still work ?
i have a 2017 Z900 and there is two KDS under the seat , one with 4 pins ( called ABS KDS in the wiring diagram ) and one with 6 pins ( called KDS in the wiring diagram )
from my initial research, the 4 pins seem useless ( specific to the abs system ) and the 6 pins seem to still have a K-Line ( and CAN_H / CAN_L / ground / 12 V )
so the k-line on this 6 pins connector should work the same as the previous one ?
i'm asking that because i have a kds to obd2 connector with a OBDLINK SX ( stn1100 chip not a elm ) ( that support K-LINE, KWP2000 , iso 14230-4 fast init )
i can run the fast bus initialization with no issue ( got the BUS INIT : OK message ) but after when i'm sending the start communication packet ( 81 11 F1 81 04 ) , i'm getting no response , but if i'm sending a OBD 01 command, it work
currently I can only guess, because I did not have had a hand on a EURO5 bike, yet.
But from manufacturer´s perspective, I think they will have the new OBD and old KDS functionality in parallel. At least for a while, because all workshops will have the established diagnostic devices, which won´t work from then on.
As far as I can try it myself (which will happen, when the weather gets better) I cannot give you a reliable answer
If Kawasaki went full OBD II compatible, you won´t need the unique initialization with 0x81 and 0x10 0x80. The "ATZ" will do everything for you.
As well as setting the Format, Sender and Receiver. Even the Checksum will be generated from the ELM327. That´s why you only need to send SID & PID to the OBDLINK.
ELM327 or stn1100 should not make a major difference, due to the standardized protocol.
What happens if you send 01 00 -> Should give you all allowed PID´s.
Or 01 0C -> RPM.
as you can see it missing many informations from the old KDS ( gear position , Abs Pressure ) , informations that come from the diagnostic session ( 10 80 )
And i'm more interest by those informations than the obd ones that why i'm trying to start the diag mode manually
i'm thinking that kawasaki has left the KDS functionality in parallel because i have found this software : "HealTech OBD Tool for kawasaki" , it come bundle with a obd diag tool from HealTech ( that look like just a fancy kds -> odb adapter ) , this software seems to have access to gear indicator etc and it supposed to be compatible with my z900 2017
sadly i cant try it because it has no macOS version
my goal is the remake a full tft dashboard with only the obd plug , so i need at least 95% ( no need for turn signal and blue light indicator ) of the original cluster information's ( the lcd cluster of the z900 is crappy AF )
Cool, that seems to confirm my expectations to have KDS & OBD in parallel!
This is also how cars diagnostic plugs work. They have K-Line and/or CAN-Bus (And more pins for official and manufacturer dependent features).
OBD2 has just a very small intersection with KDS. For my Z750r from 2012:
Freezed DTC
Engine coolant
Intake manifold absolute pressure
Enginge speed
Vehicle speed
Intake air temperature
Mass air flow sensor
Throttle position
Absolute barometric pressure
Control module Voltage
Secondary/Relative throttle position
It´s not very much, which was enhanced on your screenshot.
To get the K-Line, some OBD2 adapter can be configurated to use a specific protocol. But then you´d have to change a lot of parameter. Format, Sender, Receiver, Keepalive, and so on. Then make you own initialization and diagnostic sequence.
So you need at least a script, which configures the adapter every time. It´s easier to follow my attempt and use an L9637D with an Arduino or ESP rather than an adapter inbetween.
But: To replace the dashbard, why don´t you take that plug, which gives you all the data in a much faster interval?
KDS is limited to around 7 Messages per second. That sounds a lot, but using speed and rpm constantly and some other values (temperature, gear, ...) from time to time, you will be way to slow.
And KDS does not have the odometer or fuel.
That won´t work!
TriB:
But: To replace the dashbard, why don´t you take that plug, which gives you all the data in a much faster interval?
KDS is limited to around 7 Messages per second. That sounds a lot, but using speed and rpm constantly and some other values (temperature, gear, ...) from time to time, you will be way to slow.
And KDS does not have the odometer or fuel.
That won´t work!
i'm just a software dev , i can go my way around code and stuff but i dont know anything about electronic.
I thought of your solution of plugging directly into the cluster plug but it's out of my skills and I can't find any information about it.
At least with the KDS and OBD2 I can find information on the internet about the protocols.
I thought that the kds returned the fuel gauge information because I saw on another forum that it might be available on the zx6r.
edit : and what about the can HIGH and LOW in the plug ? how do they work ? same as the k-line ? or its for other thing ?
edit 2 : i have tried to run the ATMA command that supposed to monitor all CAN output and there is nothing
Same like me
I just found myself lost in all those electronics. A friend of mine helped me with the hardware a couple of years ago and now I think I got a resonably understanding.
KDS and how I use it, is great for submitting data to my camera. Or to read and delete Diagnostic Trouble Codes.
Even testing some actuators is possible. More or less I did exaclty the same, what Kawasaki did with its OBD2 compatibility.
They are still using KDS in the background (with mostly untouched hardware) and only put a "translator" on the top of it. I did it with Bluetooth, Kawasaki with CAN.
From my understanding (and you somehow prooved it), KDS is still the main protocol/communication/ECU "language".
It is put through by K-Line.
To be OBD2 compatible, the added a CAN interface, which just responds diagnostic requests, translates it to KDS internally and gave you the result. There is no real CAN-Bus on the bike, so ATMA gives you nothing.
To come back to your project:
It might sound more complicated to use the cluster pins, but those are plain signals. The only challange would be to handle 12V to Arduino (or whatever) friendly voltage. RPM and Speed are constand signals. KDS can only give you data on a request. And might be not that consistant, if there is only one byte wrong, you will have a ~5 second outage to reestablishe the diagnostic mode.
On KDS3 I cannot see something related to fuel for any model. But my data about that is ~5 years old. It might be, that they added it in the past years.
Just to be sure, I'm going to buy a can bus reader for my Raspberry in case it's my obdlink that's blocking me with his processing ( i have send a message to Scantool to know if its possible to use the OBDLINK SX at a pure raw can bus reader but they still doesn't reply to me )
I learned during my research that the zx10R 2016+ ( its the first kawasaki bike with EURO4 i think ) has a 2 connectors under the seat ( like the z900 ) and one is a real CAN-Bus with a lot of informations ( see here : https://i.imgur.com/0Romwwh.png ). The zx10r is a wsbk bike so maybe that why kawasaki use a real can-bus on this model ( no wsbk team use the stock dashboard of the zx10r which is worse than the 900 ), but it give me hope that they use this can-bus on all of there euro4-5 bikes
Great idea! A CAN-Bus shield can never be wrong to have
I´m very exited to understand more about the future of KDS and CAN on Kawasaki bikes!
As I told, it was only an educated guess, that they only "fake" the CAN to be OBD2 compatible. And I think for bikes, which were just upgraded, they really did.
The Zx10r has a lot of components, which must communicate with each other. But some data might rely on the Kit-ECU.
What I think is, that all sensors (which are quite simple and submit just a linear signal) will still be analog. This is cheap, can easy be repaird, all shops know about those, no firmware needed and so on.
With upcoming IMU systems (KECS on Kawasaki) and upgraded dashboards, which are showing lean angle or even transfer data via bluetooth (yes the stole my idea ), they definitly need a bus in between.
So at least the ECU, ABS, IMU and dash will communicate over CAN bus.
No IMU, no flowing data on the CAN bus, like you saw with ATMA. But requesting specific data works!
This would be the best solution for Kawasaki. Keeping the most components state of the art. The ECU will still work with KDS and has optional CAN for OBD2. And you can enhance it with an IMU or newer dashboards.
Show owners worldwide can still use their diagnostic devices and don´t need trainings or something.
I received my RPI can hat today.
for the moment no luck, I don't have any data that goes up when I make a candump at 500kbps ( I just plugged the cables on CAN H and CAN L , init the bus at 500kpbs and run can-utils )
I searched on the internet and I'm pretty sure that this plug is the right one because someone got data from a kawasaki GTR1400 2011 which also has a 6 pin plug and like the ZX10R have a way more complex cluster ( with tyre pressure sensor and traction control mode ) than the z900
On the electrical diagram of the z900 CAN H/L are directly linked to the ecu.
Maybe like you said data can only be requested but i have no idea how to do that
( here is a picture of the 6 pins kds connector on my bike )
edit ( after finding battery for my voltmeter ) : there is activity on the K-line ( port 7 on the odb plug ) when i requested some OBD PID
both CAN H/L are at 2.5V ( with the ignition on ) that indicated there is no communication on the CAN BUS but they seems to be part of a CAN network because there is 60 ohms resistance between them
edit²: in the ecu wiring diagram of the z900 , there is indeed 2 CAN plug
(9. CAN Communication Line (High): GY/BL
10. CAN Communication Line (Low): LB)
after searching on internet it seem that is possible that some can network only emit data when "wake up"
edit3 : pretty sure the canbus on the z900 is useless, everthing can be done with the k-line when you enter diag mode ( 0x81 0x11 0xF1 0x81 0x04 ) , but i cant send this message with my obdlink sx , i may have to switch to a arduino and learn electronic , because there is no simple way of doing k-line with a raspberry pi
Thanks a lot for proving my understanding of Kawasakis implementation.
You can "reprogram" the obdlink with ATSP X
This will change the protocol from "auto" to your desire:
0
Automatic protocol detection
1
SAE J1850 PWM (41.6 kbaud)
2
SAE J1850 VPW (10.4 kbaud)
3
ISO 9141-2 (5 baud init, 10.4 kbaud)
4
ISO 14230-4 KWP (5 baud init, 10.4 kbaud)
5
ISO 14230-4 KWP (fast init, 10.4 kbaud)
6
ISO 15765-4 CAN (11 bit ID, 500 kbaud)
7
ISO 15765-4 CAN (29 bit ID, 500 kbaud)
8
ISO 15765-4 CAN (11 bit ID, 250 kbaud) - used mainly on utility vehicles and Volvo
9
ISO 15765-4 CAN (29 bit ID, 250 kbaud) - used mainly on utility vehicles and Volvo
So it should be possible to force it to use KWP with ATSP5.
Why not purchasing an L9637D to switch K-Line signal to serial and your desired voltage? This works great for Arduino and should also do the deal with the RasPi.
There are plenty SDS & KDS projects out there, which use a Raspberry.
TriB:
Thanks a lot for proving my understanding of Kawasakis implementation.
You can "reprogram" the obdlink with ATSP X
This will change the protocol from "auto" to your desire:
0
Automatic protocol detection
1
SAE J1850 PWM (41.6 kbaud)
2
SAE J1850 VPW (10.4 kbaud)
3
ISO 9141-2 (5 baud init, 10.4 kbaud)
4
ISO 14230-4 KWP (5 baud init, 10.4 kbaud)
5
ISO 14230-4 KWP (fast init, 10.4 kbaud)
6
ISO 15765-4 CAN (11 bit ID, 500 kbaud)
7
ISO 15765-4 CAN (29 bit ID, 500 kbaud)
8
ISO 15765-4 CAN (11 bit ID, 250 kbaud) - used mainly on utility vehicles and Volvo
9
ISO 15765-4 CAN (29 bit ID, 250 kbaud) - used mainly on utility vehicles and Volvo
So it should be possible to force it to use KWP with ATSP5.
Why not purchasing an L9637D to switch K-Line signal to serial and your desired voltage? This works great for Arduino and should also do the deal with the RasPi.
There are plenty SDS & KDS projects out there, which use a Raspberry.
TriB:
Thanks a lot for proving my understanding of Kawasakis implementation.
You can "reprogram" the obdlink with ATSP X
This will change the protocol from "auto" to your desire:
0
Automatic protocol detection
1
SAE J1850 PWM (41.6 kbaud)
2
SAE J1850 VPW (10.4 kbaud)
3
ISO 9141-2 (5 baud init, 10.4 kbaud)
4
ISO 14230-4 KWP (5 baud init, 10.4 kbaud)
5
ISO 14230-4 KWP (fast init, 10.4 kbaud)
6
ISO 15765-4 CAN (11 bit ID, 500 kbaud)
7
ISO 15765-4 CAN (29 bit ID, 500 kbaud)
8
ISO 15765-4 CAN (11 bit ID, 250 kbaud) - used mainly on utility vehicles and Volvo
9
ISO 15765-4 CAN (29 bit ID, 250 kbaud) - used mainly on utility vehicles and Volvo
So it should be possible to force it to use KWP with ATSP5.
Why not purchasing an L9637D to switch K-Line signal to serial and your desired voltage? This works great for Arduino and should also do the deal with the RasPi.
There are plenty SDS & KDS projects out there, which use a Raspberry.
yes you can use use ATSP5 and connect to the kds but every command is refused by the kds because with the obdlink you cannot send "0x81 0x11 0xF1 0x81 0x04 " for it its a invlid message ( no length byte )
yes my next step is try something with a L9637D but i must learn some electronics basic first
noext:
yes you can use use ATSP5 and connect to the kds but every command is refused by the kds because with the obdlink you cannot send "0x81 0x11 0xF1 0x81 0x04 " for it its a invlid message ( no length byte )
Does anyone succeeded in manually setting up protocol, header, wake up bytes and etc? I own a 2011 Ninja 650R Abs (Brazil) and I had no success connecting to k-line using a cheap (and probably cloned) ELM327 Bluetooth adapter. I'm also a system developer with little to no knowledge in electronics.
No, I´ve read about some people which got a Suzuki running with a reconfigured ELM327.
But this allways have been original devices or derivants (f.e. OBDLink), which supported the commands, I posted above.
Got 3 or 4 different china adapters and none of them answered properly to header or format changes.
Suzuki and Kawasaki are similar from the communication protocols perspective. So it should work with the right device. But I´vent seen it yet in real live.
Congrats for this project, it's absolutely awesome!
I was looking for some info because I want to do a gear indicator with LCD display using the service connector and found this!
Are you still interested in developing the gear indicator display?
I did it few years ago for my Kawa ER6 and is still working! Ha ha ha!
In this case, I collect the RPM and SPEED pulse signals that arrive to the stock speedometer to make the calculation.
But... does the KDS interface send the gear engaged directly?
I've been investigating and the aliexpress gear indicators connected to the KDS connector, do the same calculation I do but reading RPM and SPEED from K-line.
I'd be glad to collaborate with you in this B part project
Cool, nice solution!
I always wanted to see how the speedometer get all it´s data. But never got time to investigate the communication protocol.
My Z750r does have the gear within the KDS. But I changed the sprockets due to better acceleration. This messed up the result and Gears went crazy between 3-4-5 and the 6th was never seen again.
After that, I also introduced some kind of data storage, to hold some data temporary. With that, it was quite easy to solve the gear by calculating RPM and speed, like you did.
So long story short:
It´s possible by PID 0x0B, and if it´s not, you can also calculate it easily.
Would be a nice thing to also see some temperatures or something on your screen.
Thank you!!!
My display shows gear, trip time, air temp (with an external sensor) and volts.
I did also some tests with external sensors placed in the drain screw for oil temp. Easy
Checking the PIDs list, it would be great to get air and water temps and save adding external sensors.
To solve your issue with the sprockets, you can add a function to set the gear ratio like the AliExpress displays do: