Flashing this:
{ { 0x1E, 0x94, 0x06 }, "ATmega168V", 16 * kb, 256,
ATmegaBOOT_168_atmega328_pro_8MHz_hex, // loader image
0x3E00, // start address
sizeof ATmegaBOOT_168_atmega328_pro_8MHz_hex,
128, // page size (for committing)
0xC6, // fuse low byte: external full-swing crystal
0xDD, // fuse high byte: SPI enable, brown-out detection at 2.7V
0x04, // fuse extended byte: boot into bootloader, 512 byte bootloader
0x2F }, // lock bits: SPM is not allowed to write to the Boot Loader section.
i get
LFuse = 0xC6
HFuse = 0xDD
EFuse = 0xFC
Lock byte = 0xEF
As another try, if I flash 0x0F for lock byte (as in the boards.txt), i get 0xCF as lock byte in the verification part.
From the fuse checker site it seems to me that 0x00 or 0x04 (the code and in boards.txt) are not really valid values for the Extended Fuse? E.g. 0xFF is a valid value, and that indeed flashes as such.
Hm.... Any clue in this?