Using an 8 MHz external oscillator, bootload successful, but upload not

I’ve got a Atmega328P-based system that’s using an external 8 MHz crystal oscillator,
so I figured for bootloading purposes, using the same bootloader file as an “Arduino Pro” (3.3V version) would work for it.
The bootloading did work using the following settings from the “boards.txt” file:>>3.3V or 5V, 8 MHz (ext. crystal)<<



However, after doing this, and connecting a serial-to-USB converter (an FTDI chip) to upload a program to it,
I got an error message indicating a communication/sync. problem:

avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xde

To make sure there was no other problem,
I also changed the bootloader to ignore the external 8 MHz crystal and run off the internal RC oscillator instead, using the “optiboot5_atmega328_pro_8MHz.hex” file as the bootloader;
Doing that, everything worked, including the program uploads.

So for the problem of not being able to upload a program despite a successful bootload,
could there be a problem with the way the bootloading was handled?

Not sure if this is related to the problem, but I'm also checking the fuse bit settings from here:

I've got a work-around solution.

After referring to this source,, the arduino sketch/program can actually be loaded through an in-system programmer (ISP), of which I use an extra Arduino UNO as. Then my FTDI-based serial-to-usb converter would then be used to see any serial outputs or for debugging.

Its an extra inconvenience of having to make some extra connections, but it works.

If anyone knows why the original problem existed (successful bootload using ISP, but unsuccessful code upload using serial-to-USB), that would be great.