If, when trying to program your Arduino via ISP, you see the error message: invalid id 0x000000
, some folks on the interwebs have suggested that the problem is that the wrong fuses have been flashed to the chip. And likely, the oscillator is not running.
In my experience though, I have found this issue to be caused, more frequently by bad wiring.
As a first step, I would remove the ATMEGA chip from the circuit and try again. If you need a clock, you can try to use the ArduinoISP2 project from Adafruit (the repo is named ArduinoISP but I rename it to ISP2 so I can distinguish between this and the original). ArduinoISP2 outputs an 8MHz clock on pin #9
. Simply wire pin 9 of your Arduino running the ISP2 sketech a 16MHz clock to XTAL1. You check XTAL2 to make sure you see a square 16MHz wave.
Once you have this, flash your fuses.
I did notice that ArduinoISP2 had trouble flashing a hex, so once the fuses were set, I switched back to the (original ArduinoISP)[https://github.com/arduino/ArduinoISP] sketech and used that to flash the hex.