(I concur with the ease of the ISP-based upload, and have used it in the past, but I'm much more curious how the bootloader itself can be modified to solve the problem. And if I could set a 0.5-second wait time, that should be enough for waiting for the serial data, no?)
I just took a look at the bootloader source (
http://code.google.com/p/arduino/source/browse/trunk/hardware/arduino/bootloaders/atmega/ATmegaBOOT_168.c ). But it comments out "MAX_TIME_COUNT" and states this:
/* set the waiting time for the bootloader */
/* get this from the Makefile instead */
/* #define MAX_TIME_COUNT (F_CPU>>4) */
The Makefile, in turn, states this:
mega: MCU_TARGET = atmega1280
mega: CFLAGS += '-DMAX_TIME_COUNT=F_CPU>>4' '-DNUM_LED_FLASHES=0' -DBAUD_RATE=57600
I'm unsure how this corresponds to the wait-time exactly, but am investigating...
-