De la documentación:
-B bitclock
Specify the bit clock period for the JTAG interface or the ISP
clock (JTAG ICE only). The value is a floating-point number in
microseconds. The default value of the JTAG ICE results in about
1 microsecond bit clock period, suitable for target MCUs running
at 4 MHz clock and above. Unlike certain parameters in the
STK500, the JTAG ICE resets all its parameters to default values
when the programming software signs off from the ICE, so for MCUs
running at lower clock speeds, this parameter must be specified on
the command-line. You can use the 'default_bitclock' keyword in
your ${HOME}/.avrduderc file to assign a default value to keep
from having to specify this option on every invocation.
En mi opinión, esto significa que no es tanto un 'arreglo', sino una configuración regular para ajustar el reloj del programador al reloj del controlador receptor. Si mi memoria me funciona bien, un ATmega8 predeterminado de fábrica funciona a 1MHz, mientras que avrdude
está configurado en 4MHz de manera predeterminada y, por lo tanto, su programador es demasiado rápido para que su controlador se mantenga actualizado. Esto implica que cuando cambias los fusibles de reloj de tu controlador, se requiere un -B
diferente para programarlo.