/HondaECU

Reverse engineering Honda ECU k-line communications

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Build Status

Support and Development

Research and development takes time and money. Since it is my goal to keep this project opensource, if you find this project useful, please consider donating. You can also help facilidate R&D by sending me ECUs, connectors, harnesses, etc.

paypal

Software

Windows

HondaECU for Windows requires the libusbK driver. Download Zadig and use it to install the libusbK driver. There is a usage guide on the Zadig website if you need help using it. Once libusbK is installed for your FTDI device, download the latest release of HondaECU.exe.

Usage

HondaECU.exe --help
usage: HondaECU.exe [-h] [--checksum CHECKSUM] [--rom-size ROM_SIZE]
                   [--fix-checksum] [--debug]
                   {read,write,recover,validate_checksum,fix_checksum} binfile

positional arguments:
  {read,write,recover,validate_checksum,fix_checksum}
                        ECU mode
  binfile               name of bin to read or write

optional arguments:
  -h, --help            show this help message and exit
  --checksum CHECKSUM   hex location of checksum in ECU bin (default: 0x3fff8)
  --rom-size ROM_SIZE   size of ECU bin in kilobytes (default: 256)
  --fix-checksum        fix checksum before write/recover (default: False)

debugging options:
  --debug               turn on debugging output (default: False)

Checksums

Model Year ROM Size Keihin Code Checksum Address
CBR250R 2012 56 kb 38770-KYJ-971 DFEF
CBR250R HRC 2014 256 kb 38770-K33-R51 18FFE
CBR250RR HRC 2017 1024 kb 38770-K64-R02 7FFF8
CRF250R 2011 256 kb 38770-KRN-E52 1FFFA
CRF250R 2013 256 kb 38770-KRN-E73 18FFE
CRF250R 2014 256 kb 38770-KRN-E82 19FFE
CRF250R 2015 256 kb 38770-KRN-E92 19FFE
NSF250R 2013 256 kb 38770-NX7-033 18FFE
VTR250 2015 256 kb 38770-KFK-632 3FFF8
CBR300R HRC 2014 256 kb 38770-K33-R01 18FFE
CB300 2008-2012 56 kb 38770-KVK-xxx DFEF
SH300 2009 56 kb 38770-KTW-901 DFEF
XRE 300 2009-2012 56 kb 38770-KWT-xxx DFEF
CRF450R 2009 256 kb 38770-MEN-E21 1FFFA
CRF450R 2011 256 kb 38770-MEN-E52 1FFFA
CRF450R 2014 256 kb 38770-MEN-A73 19FFE
CB500R 2014 256 kb 38770-MGZ-B01 3FFF8
CBR600RR 2007-2016 256 kb 38770-Mxx-xxx 3FFF8
CB600F 2010 256 kb 38770-MGM-B11 3FFF8
CB650F 2015 256 kb 38770-MJE-B41 3FFF8
CB600F/R 2010-2011 256 kb 38770-MFG-Bxx- 3FFF8
Transalp700 2013 256 kb 38770-MFF-B01 3FFF8
Shadow 750 2009 256 kb 38770-MGE-B21 3FFF8
NC750X 2015 256 kb 38770-Mxx-xxx 3FFF8
NC750S 2016 512 kb 38770-MJL-D72 7FFF8
VFR800F 2015 512 kb 38770-MJM-J13 7FFF8
CB1000R 2008-2016 256 kb 38770-Mxx-xxx 3FFF8
CBR1000RR 2004-2005 256 kb 38770-MEL-xxx 3FFFC
CBR1000RR 2006-2016 256 kb 38770-Mxx-xxx 3FFF8
CBR1000RR 2017 1024 kb 38770-MKFA-D72 FFFF8
VFR1200F 2010 1024 kb 38770-MGE-D02 7FFF8
GL1800 2015 256 kb 38770-MJK-J21 3FFF8

Hardware

The easiest way to talk to the ECU via the k-line is a USB to serial (TTL) converter, and a serial to k-line converter. This code assumes you are using a FTDI based USB to serial converter though others may work. I used a FTDI Friend from Adafruit!. For the serial to k-line converter I used the schematic below since it contained no special ICs, just common transistors and R/C components that I had laying around the house.

A note about the circuit below, while the PL2303 is a perfectly good USB to serial converter, it does not support bit banging and is not recommended. If you do have one of these converters you will need to use one of the control lines for the init sequence and that complicates things. Just get yourself a FTDI chip, they are cheap.

kline_interface_1

A much nicer looking k-line to serial converter that I plan on implementing next is this one that uses one that uses optocouplers to keep the bike power isolated from your electronics.

kline_interface_2

Bench Harness

If you make a bench harness to work with your ECU you will need a 2.5 amp power supply. The ECU will power-up with a 2.0 amp power supply but transfer rates will be slow and you will get CRC errors.

Tuning Software

General Resources