The open-source nisprog/npkern utility has been enhanced to allow reading / flashing of the ECU EEPROM via the OBD port. This means there is no need to pull the ECU and desolder the EEPROM or use chip-clamps and EEPROM readers/writers. Full credit to fenugrec as the original author of nisprog/npkern. Please consider supporting myself and/or feugrec.
After a ridiculous amount of time reverse engineering the ECU code, the basics are:
- the ECU reads and writes to the ECU EEPROM as part of its normal operation
- the connections are hardwired on the PCB from the ECU serial (SCI) port pins to the relevant pins on the EEPROM
- A kernel running from RAM can activate the same ECU pins and send read / write commands to the EEPROM
Why would you use this?
- If you want to replace a faulty ECU and have it work with the immobiliser
- If you want to be able to swap in / out different ECUs and have them all work with the immobiliser
Limitations
- I've looked at a few different ECU ROMs. Some ECUs use SCI4 and the associated pins. Other ECUs use SCI3 and the associated pins. The right kernel needs to be used for the ECU serial configuration. There may be other serial configurations out there.
- All the ECUs I looked at used L56R EEPROMs, so all the EEPROM commands are the same. But, there might be other EEPROM types out there which need different commands.
- This is experimental software. As usual, you do this at your own risk. I have successfully read / flashed a 7058 ECU with an L56R EEPROM connected via SCI4.
Brief User Guide:
- read up on nisprog/npkern:
https://www.romraider.com/forum/viewtopic.php?f=15&t=19677- the EEPROM capability is in the ssm_test branch of these repos:
https://github.com/rimwall/nisprog/tree/ssm_test and
https://github.com/rimwall/npkern/tree/ssm_test- EEPROM enhanced kernels are in the /precompiled folder with the names *_EEPSCI3 and *_EEPSCI4
- EEPROM enhanced nisprog will need to be compiled from the github repo for your platform (Windows/Unix etc). If there's interest, I can provide a Windows exe.
Brief Steps to use:
- run nisprog, use nisprog to load and run the kernel
- use command "dm eepdump.bin 0 0x100 subeep" to dump 256 bytes from EEPROM to file eepdump.bin
- use command "flsubeep neweep.bin 0 0x100" to flash 256 bytes from file neweep.bin to the EEPROM
Support
- You are mainly on your own. Help may be available on these forums.