{"id":27114388,"url":"https://github.com/aster94/keyword-protocol-2000","last_synced_at":"2025-04-07T03:57:15.739Z","repository":{"id":50535411,"uuid":"126315841","full_name":"aster94/Keyword-Protocol-2000","owner":"aster94","description":"The KWP2000 is a communications protocol used for on-board vehicle diagnostics systems (OBD) by Suzuki (SDS), Kawasaki (KDS), Yamaha (YDS), Honda (HDS) and possibly more. It is standardized by ISO 14230","archived":false,"fork":false,"pushed_at":"2023-02-05T10:09:13.000Z","size":3671,"stargazers_count":187,"open_issues_count":7,"forks_count":53,"subscribers_count":38,"default_branch":"master","last_synced_at":"2023-10-25T20:04:46.089Z","etag":null,"topics":["communication-protocol","ecu","honda","kawasaki","kds","obd","suzuki","yamaha"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aster94.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-03-22T10:05:39.000Z","updated_at":"2023-10-22T13:18:29.000Z","dependencies_parsed_at":"2023-10-20T18:03:49.456Z","dependency_job_id":null,"html_url":"https://github.com/aster94/Keyword-Protocol-2000","commit_stats":null,"previous_names":[],"tags_count":4,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aster94%2FKeyword-Protocol-2000","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aster94%2FKeyword-Protocol-2000/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aster94%2FKeyword-Protocol-2000/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aster94%2FKeyword-Protocol-2000/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aster94","download_url":"https://codeload.github.com/aster94/Keyword-Protocol-2000/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247589810,"owners_count":20963022,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["communication-protocol","ecu","honda","kawasaki","kds","obd","suzuki","yamaha"],"created_at":"2025-04-07T03:57:15.181Z","updated_at":"2025-04-07T03:57:15.723Z","avatar_url":"https://github.com/aster94.png","language":"C++","funding_links":["https://paypal.me/aster94"],"categories":[],"sub_categories":[],"readme":"# Keyword Protocol 2000\nThe [KWP2000](https://en.wikipedia.org/wiki/Keyword_Protocol_2000/) is a communications protocol used for [on-board vehicle diagnostics systems (OBD)](https://en.wikipedia.org/wiki/On-board_diagnostics) by Suzuki (SDS), Kawasaki (KDS), Yamaha (YDS), Honda (HDS) and more. It is standardized by the [ISO 14230](https://www.iso.org/obp/ui/#iso:std:iso:14230:-1:ed-2:v1:en) and it is compatible with the [ISO 9141](https://www.iso.org/obp/ui/#iso:std:iso:9141:-2:ed-1:v1:en). Both uses a single line called the K-line through it we send some Parameter IDs, knowns as PIDs, to the [Electronic Control Unit (ECU)](https://en.wikipedia.org/wiki/Electronic_control_unit). This way we have total control on the motorbike: we are able to ask for sensors data (such as rpm, gear, speed, temperatures, etc.), see error codes and clear them, upload/download and more.\n\nIf you want to read more about this protocol and OBD-II you can see the [protocol explained](protocol.md).\n\n## Projects\nCheck out these nice projects:\n\n- [Smartphone dashboard](https://youtu.be/WHeit69LpBU)\n\nIf you want to show your project make a pull request\n## Supported Hardware\nAny microcontroller (MCU) that uses the Arduino framework could be used.\n\nThe K-line works at 12V so you need an integrated circuit (IC) as interface, for example:\n- L9637\n- MC33660\n- MC33199\n\nOr, you can also use operational amplifiers/level shifter/transistors.\n\n## List of Vehicles\n\nThe library would work on Suzuki and Kawasaki motorbikes. I didn't had the possibility to test on Yamaha and Honda bikes but I am willing to do, if you own any one of the two open an issue and I will write some code for it.\n\nThis is a list of motorcycles that have been successfully tested:\n\n| Motorbike     | Year      | Tested |\n| ------------- |---------- |------- |\n| GSX-R600      | 2011      | ✔️    |\n| Versys 650    | 2012      | ✔️    |\n\nIf your motorbike is not in this list open an issue and tell me if the library worked 😁\n\n# Installation\nSimply search for `KWP2000` in the Arduino/PlatformIO Library Manager or download this repository and add it to your library folder\n\n\n# Usage\n### Hardware\nYou have to find the K-line of your bike. Usually it's under the rider's seat. You just need to connect the K-line, VCC and GND to the driver IC you bought\n\nExample of the wiring for the L9636:\n\n![Alt text](extras/Images/l9637_wiring.png?raw=true \"L9637 wiring\")\n\n\n##### Dealer Mode - Only for Suzuki:\nIf you wish also to be able to enter easily into this mode add an optocoupler with a ~330omh resistor between the MCU and the dealer pin\n\n![Alt text](extras/Images/dealer_mode.png?raw=true \"dealer mode\")\n\n\n### Software\nGo to [PIDs.h](src/PIDs.h) and de-comment (delete the `//` symbols) your motorbike, then upload the [basic_working](examples/basic_working/basic_working.ino) example.\n\n\n\n\n\n\n### Development\nI made a [ECU Emulator](extras/ECU_Emulator) written in python for the development of new functions and tests.\n\n\n### Documentation\nGenerally the functions return `true` if everything went fine, a `negative number` if there where any error, `false` if nothing changed\n\nThis documentation has been automatically generated with doxygen + doxylite, an automatic documentation generator, I will make the formatting nicer later.\n\nSee it here [documentation](documentation.md)\n\n\n# Disclaimer\nI do not assume and hereby disclaim any liability to any party for any damage to propriety or person\n\n\n# Influence:\n- ECU Hacking forum:\n    - https://ecuhacking.activeboard.com/t56234221/kds-protocol\n    - https://ecuhacking.activeboard.com/t22573776/sds-protocol/\n\n- Arduino forum:\n    - https://forum.arduino.cc/index.php?topic=236092.0\n    - https://forum.arduino.cc/index.php?topic=334778.0\n\n- Others\n\n## Donate\n\nIf you liked the library and wish to donate you can sent to [PayPal](https://paypal.me/aster94)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faster94%2Fkeyword-protocol-2000","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faster94%2Fkeyword-protocol-2000","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faster94%2Fkeyword-protocol-2000/lists"}