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:

uno906.name=>>3.3V or 5V, 8 MHz (ext. crystal)<<

uno906.upload.tool=avrdude
uno906.upload.protocol=arduino
uno906.upload.maximum_size=30720
uno906.upload.speed=57600

uno906.bootloader.tool=avrdude
uno906.bootloader.low_fuses=0xFF
uno906.bootloader.high_fuses=0xDA
uno906.bootloader.extended_fuses=0x05
uno906.bootloader.unlock_bits=0x3F
uno906.bootloader.lock_bits=0x0F
uno906.bootloader.path=atmega
uno906.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex

uno906.build.mcu=atmega328p
uno906.build.f_cpu=8000000L
uno906.build.core=arduino
uno906.build.variant=arduino:standard

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: http://www.engbedded.com/fusecalc/

I've got a work-around solution.

After referring to this source, https://voidyourwarranty.wordpress.com/2014/08/17/using-arduino-as-an-isp-to-program-a-standalone-atmega-328p-including-fuses/, 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.