Then I changed the high fuse setting in boards.txt to D8 and restarted the IDE and tried a serial upload with the same result as always: "avrdude: stk500v2_ReceiveMessage(): timeout"
So usbasp loaded bootloader + hfuse D8 does not work. This is consistent with what SchroedingersCat_ reported. I stay with my hypothesis that usbasp did not correctly burn the bootloader. I ordered an usbasp so I can investigate this further. I expect the answer to be in the sources of the latest Fishel fw. There must be something wrong with the support for flash above 128K. I hope to make a fix such that this use case works correctly. Will report back if I find something...
Here's the strange thing though. If I burn the bootloader with high fuse set to D9 with my Atmel AVRISP mkII then I can do serial upload...
I can't explain that.
I repeated your experiment but with the ArduinoISP sketch as a programmer. From the moment I set the hfuse to D9, serial upload does not work any more. Setting it back to D8 makes it work again. But in my understanding, that is the expected behavior: D9 means start at 0x0000, so how could the cpu reach the bootloader?
...After burning bootloader this way the LED blinks with the blink code built into the bootloader
This does make sense: stk500boot_v2_mega2560.hex contains a blink sketch at address 0x0 and a bootloader near the end of flash. So if you set hfuse to D9, the blink sketch will run.
but when I burn bootloader with high fuse D9 with USBasp the LED doesn't blink even though with D8 it does.
As above, I expect this to be because the image that usbasp put in flash, is incorrect.
it's some difference in avrdude using USBasp
With that I totally agree.