One possible cause is no system clock on the target system. Once someone uploads an Arduino bootloader to an ATmega chip it sets the chip to use an external crystal (or ceramic resonator) for the system clock. If no crystal/resonator is connected then the system clock won't start and serial programming won't work. A workaround is to inject a clock signal into the XTL1 pin. Adafruit made a variation of the ArduinoISP sketch that used a timer to generate an 8MHz clock signal.
1 Like