In order to play with low cost h/w you will often need to educate yourself a bit
so you can use/maintain/update it.
It is that grand tradeoff between knowledge, time, & money
(You can often save money and time if you have knowledge)
Here is thread that discusses updating USBasp based devices:http://arduino.cc/forum/index.php/topic,149668.0.html
Note that I updated my kkk USBasp and retrolefty updated his HobbyKing USBasp
device and that once you update your USBasp device to the later firmware
the warning will go away.
The bottom line is that USBasp used to use a jumper to set a slower ISP clock rate.
The newer USBasp firmware can set the slow ISP clock rate in s/w through the USBasp commands
over the USB or by using the slow ISP clock jumper.
avrdude has been updated to use the newer USBasp commands to set the clock rate
to make it easier since you won't have to use the slow ISP clock jumper any more.
(The slow clock jumper can still be used with the new firmware)
If you have a newer avrdude and older firmware, avrdude tries to set the clock rate
and fails because the older firmware doesn't support the newer commands to set
the ISP clock rate. (That is what the warning is).
If you are using a slow clock rate in the AVR (like with virgin chip which runs at 1Mz), then
a slow ISP clock rate is required when updating the AVR.
The clock can be slowed down by either installing the slow ISP clock jumper in the USBasp device
or if the USBasp device has the newer firmware, avrdude can be told to tell the USBasp device
to slow it down.
If the AVR is not running a slow clock, then there is no need to have a slow ISP clock to program it.
Avrdude will give you a warning but the programming will work just fine.
One of the things that I don't like which is what is causing much of this confusion is the way avrdude
was updated to use the new AVRasp set clock rate command.
avrdude has a command line option to set the ISP clock rate. The USBasp code ALWAYS
uses the new set ISP clock rate command even when the avrdude commandline option was NOT used.
i.e. it always tries to set the clock rate and uses a default rate if you don't specify one.
That is why you will always see the "cannot set sck period" warning.
Because even if avrdude is not asked to set a sck period, avrdude tries to set it to a default rate
on USBasp devices.
Had avrdude not tried set a rate unless you asked for it, you wouldn't see the warning.