Finally got my Retros that I bought in 1,000 pieces put back together and working.
Both of them were showing errors that a factory reset was required on every boot and that the I/O board battery was low. Replacing the battery on the I/O board stopped this error from occurring, but a dead battery in the future and another mandatory factory reset would erase all my high scores. Plus, it was a pain in the ass (at least for me) to desolder the old battery and solder the new one. So, I set out to find a permanent fix.
Turns out it's the SRAM that's powered by the battery. When the battery dies, the SRAM is wiped. The solution is to have the machine write to the hard drive (CF card) but make it think it's writing to the SRAM to prevent any factory resets from being needed.
I have tested this on iTouch 10 because it's the only version that I have a security key for. The steps below will clone your existing SRAM to the hard drive and make your machine read/write to the hard drive. I'm assuming it will work for other versions also, but I can't be certain.
Worst case scenario, if you screw up these steps or it doesn't work for you, you may have to reinstall the software. It won't totally brick your machine. I've only tested this on my 2 machines, but it works for me.
Here are the steps I took:
1. Power off the machine and hook up a keyboard to the USB port. Optional: plug in a network cable to get it on the Internet - it will save you a lot of trouble later on. Then power it back on. You should get the Factory Reset screen if your battery is dead. Proceed as normal and let the machine fully load into the game.
2. Enter SETUP by pressing the setup button on your ioboard. This isn't really necessary but will prevent the screen from updating so you can actually see what you're doing in the next steps.
3. On your keyboard, press left CTRL + left ALT + F2 (while holding down CTRL and ALT, press F2, then release all 3 keys)
4. You should see text that says Press Enter to activate console. So press Enter! You should see a hash # with a flashing cursor. Now time for Linux commands ...
5. Pick one of two ways:
Easy way: If your Retro is hooked up to the Internet, these commands will download the script and run it.
cd /tmp
wget -O run http://pastebin.com/raw/v8jQAQiB
sh run
Hard way: These are executed automatically if you use the above steps
dd if=/dev/jvl_sram of=/mnt/hd/sram.img
cat /mnt/real/rc.d/rcS | sed 's/ln -s \/dev\/sda \/dev\/jvl_sram/ln -s \/mnt\/hd\/sram.img \/dev\/jvl_sram\n#/' | sed 's/mknod \/dev\/jvl_sram b 245 1/ln -s \/mnt\/hd\/sram.img \/dev\/jvl_sram\n#/' > /tmp/rcS
mount -o remount,rw /mnt/real
cp /mnt/real/rc.d/rcS /mnt/real/rcS.bak
cp /tmp/rcS /mnt/real/rc.d/rcS
mount -o remount,ro /mnt/real
6. Power off the machine and turn it back on. You should be all set.
If anyone tries this, please let me know if it's worked for you also.