When trying to upload using a usbasp programmer directly you need to select a valid serial port as well, but this should not be needed as -Pusb is passed to avrdude.
For instance I get the following error message:
Board at /dev/tty.usbserial-AH00S1Pl is not available
A workaround is just to plug in some serial device - like a FT232 adapter and then select that serial port. After that I am able to upload using the usbasp.
It only seems like the "Upload Using Programmer" option is affected, since I am able to upload the bootloader without this workaround.
I see this too. Thanks for the workaround!
This seems to be due to a check for the presence of the port in Sketch.upload(). A quick fix would be to skip the check when doing upload using a programmer (and keep it only for regular upload). A better option would probably be to only do the check if the upload actually uses the serial port, which would (I think) require inspecting the command line arguments / preferences from the programmers.txt file.
Anyone want to take a shot at a patch?
Proceed with upload even if port can't be found. (Issue #1791)
BTW, another case where this is a problem is when the auto-reset on your Leonardo isn't working (e.g. because you disable interrupts and never re-enable them). In 1.0.x, you can still upload to the Leonardo by holding down the reset button on the board, pressing upload, and then releasing the reset button shortly after the upload starts. (The Leonardo bootloader will start when you release the reset button and create a new serial port; the IDE will see that new serial port and upload to it.) In 1.5.x, this doesn't work because the Leonardo serial port disappears when you press the reset button, so the upload won't start.
Fixed by #2126
For future improvements, some user ran into this problem using the USBASPloader. So this problem is not limited to the upload using programmer option, it can occur with regular uploads too.
Is not working on latest arduino 1.6.8