I am going to be straight up with you guys. I am not a tuner and I have just got into ECU flashing. I started doing research into how I could create my own laptimer/datalogger and things just started snowballing. I have learned how to extract live engine data and read and write to the ECU using the DLC port under your seat. All my code for read and writing to the ECU is opensource and free. The adapter cable needed to connect a computer to the DLC port is pretty easy to make I just bought a bunch of parts to make cables for people that want one. I am thinking about $20 shipped. So free code and a simple cable is all that is needed to actually flash the ECU. Tuning the ECU (i.e. adjusting parameters/maps) is done with more free software, I have been using TunerPro, its fully functional freeware, but its closed source and windows only. There is a opensource java based tuning program called RomRaider but I haven't messed with it cause I hate Java. So the last part of this equation is where the some real effort comes into play. Inorder for TunerPro to be able to function someone needs to create a "definition" file that tells TunerPro where all the maps are in the ECU dump. This is not a hard process if you know what you are looking for but it does take some time. I don't have a definition file made yet for the 500r but I am certainly willing to try if someone is willing to get me a dump of their ECU or if you guys are willing to donate some money for me to pick up a ECU on ebay to test with. Once the definition file is done all the standard things should be tunable: ignition timing maps, injector durations, etc. Once I get farther developing my datalogger (which is probably going to be based on a RaspberyPi 3) it will have input for a wideband 02 and I will write some more software to help with autotuning. Quickshifters and other race tools might be possible in the future too. I basically have all the pieces of the puzzle to provide similar products/services as Woolich Racing except they have a decade or more of a head start and haven't spent much if any time on smaller bikes.Would it be a “mail it in” one time type thing or is there hardware and software available that would allow for user adjustments, data logging and Dyno tuning? I originally looked into this before buying my PC-V and found nothing that would allow this. If that is available now, that could be interesting.
I cant post links yet but my github repo for this project is RyanHope/HondaECU. I haven't pushed any code for writing to the ECU yet, I am still cleaning up that code, but the reading works fine. The adapter cable is really 2 circuits in one, one is a k-line to serial converter, and the other is a serial to usb. There are lots of circuits for the k-line to serial conversion but my code only works with FTDI based serial to usb adapters. In the github repo are two main scripts, scan.py and flash.py. Use scan.py to debug your circuit, if you get any data back from that then try reading ECU with flash.py.I'm in. I have a 13' X and a 16' F in the garage, as well as soldering tools and some experience in working with microcontrollers (albeit long rime ago still on Z80 and 8080, and recently on Arduino based stuff).
Lemme know where to start. And Im also interested in your data logger development.
I suggest to start a new technical thread for the project.
Any success? I haven't pushed too much code as I have been swamped with work, tuning my own bike and going to track days.I've been following RyanHope's project and it seems very promising! Better yet, I have 2017 CB500F in my garage and I also have the interfacing cable and I'm able to connect to the bike ECU.
I'll take a look next week if I can download the ECU memory using RyanHope's code.
Tried the code, but I get some strange exception... Is this some locale issue? Is the code Python 2.7 compliant?Any success? I haven't pushed too much code as I have been swamped with work, tuning my own bike and going to track days.
Yeah I've been having a battle with python and how it handles bytes and unicode string. I am going to try and rewrite the backend to play nice with both python2 and python3, but right now things only work with python3.Tried the code, but I get some strange exception... Is this some locale issue? Is the code Python 2.7 compliant?
$ sudo python scan.py
Initializing ECU communications
Traceback (most recent call last):
File "scan.py", line 34, in <module>
File "/home/matti/HondaECU/HondaECU.py", line 47, in init
info = self.send_command([0xfe],[0x72], debug=debug, retries=0) # 0xfe <- KWP2000 fast init all nodes ?
File "/home/matti/HondaECU/HondaECU.py", line 110, in send_command
resp = self.send(msg, ml)
File "/home/matti/HondaECU/HondaECU.py", line 71, in send
msg = "".join([chr(b) for b in buf]).encode('latin1')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xfe in position 0: ordinal not in range(128)