First of all, thanks to EVERYONE who shares their information here. I have learned so much from all of you!!
But now it is my turn to give back.
As a long time Nissan enthusiast (especially those VQs!!!) and micro-controller fanatic I have often wondered why no one has put together an Arduino based CAN BUS ROM dumper? For those that are not aware of the Arduino platform, they use super cheap, 8 bit, 16 Mhz processor that are very capable, even with only 2K RAM and 32K program memory!
Sooooo....since I couldn't find one, I decided to try to make one.
After all, wouldn't it be nice to have a FAST and CHEAP way to dump the Nissan/Infiniti (and probably *ANY* CAN bus) ECU ROMs?
-AND- wouldn't it be nice to do it without a PC?
-AND through the OBD port?
-AND- have it copy a 1MB SH7058 in about 3 1/2 minutes to a SD card??
Soooo, after almost 200 hours of CAN Bus & OBD SID research, programming, testing, debugging and more testing it is 90% done!
Now, part of the planning for this project was to make sure there is NO WIRING or SOLDERING required. Not everyone has a soldering iron or has the patience for stripping and soldering wires.
To keep it simple, I use inexpensive and readily available "Arduino Uno Shields". A shield is a board that has long pins that connect to the Arduino Uno or another shield.
In my setup I use:
• Arduino Uno clone: $3-15
• Arduino Uno CAN Bus shield: $6-25
• DB9 to OBD cable: $5-15
• Arduino Uno Data Logging Shield w/Full size SD Card: $2-14
• Arduino IDE (FREE and easy to use!)
For about $15 to $70 you have a cheap and fast method of dumping your ROM.
Note: The low cost amount is from AliExpress and the higher cost amount is from Amazon.
Current program functionality:
• Reads ECU ID and uses it for the filename on SD card + copy number. For example: 2NX2A_01.bin, 2NX2A_02.bin
• Checks for ROM size from 512K to 2M (I don't think 2M ECU exist just yet, but why not add it

• Copies the ROM from 0x000000 to ROM size to SD card.
To Do:
• Add error checking (the CAN Bus chipset does most of this in the hardware)
• Add LCD or LCD touchscreen to indicate progress and errors
I would like to thank the following for their helpful posts:
• fenugrec
• LeftoverPi
• SteveS
• Shuher
• scumbagsleeper
• FrankVQ
Next Steps:
• Determine where the newer CAN Bus ECUs checksums are located
• Determine the available maps
• Determine the SID 27 passkey algorithm (or maybe just brute force the password)
• Then UPLOAD via the CAN bus!!
"This sounds interesting, but where is your ******* source code?"As for the source code, if there is enough interest, I will post it on GitHub.
This way folks smarter than me can make it better!
However, before I post the source code, I want to add additional error checking and clean up.
Then I want to do more testing on different ECUs. I have a few Nissan vehicles that I can get easy access to and I want to test how well it works. Also, I will test it on a late model Mazda and Subaru, after a minor code change.
My overall goal is to make it quick, easy and cheap to get CAN Bus enabled ECUs (any ECU from 2008+) ROM dumps.
July 2021 UPDATE:
The CAN bus board I used is no longer available. It was kind of unique as it allowed you to select the "Chip Select/CS" by a switch so it didn't conflict with the CS on the SD card.
I am going to try a few other CAN bus boards and try to come up with an easy to assemble (no jumper wires or soldering) solution.