The first time I did this, I fixed it myself with some mods at around 13,000 miles. Now I have over 36,000 miles and it started doing it again. Since most of us use this as a fuel gauge, it's worth it. This second time though, there was a lot of dust in there from all of my off road riding, so clean it out.
You really need compressed air to do this, or a couple of cans of that keyboard cleaner.
1. Remove the front fairing and set aside.
2. Remove the cluster from the frame mounts with three screws going thru rubber mounts. Disconnect the speedo cable. Get a place to work on it.
3. Remove the front bezel from the cluster.
4. Remove all the screws on the wires going to the gauges, the two screws holding the speedometer in, now lift the face with gauges out of the cluster housing.
5. Hold the back of the speedometer, push the reset rod and see how it works, and see where it is sticking. There will likely be a sharp edge on the plastic lever that gets pushed by the plastic plate.
6. Using a Dremel Tool or file/sand paper/Exacto knife/razor blade/whatever you have, grind down the edge to a radius. Clean off the filings!
7. I used silicone spray to lube the trip number wheels on the shaft, but use some sort of dry lube, then blow off the excess.
8. Lube the contact points of the lever & plate with a silicone lube, or light grease.
9. TEST IT!!!! Make sure that it resets easy a couple of times by releasing the lock and rotating the number wheels. Lift the lever you ground off halfway and that should release the numbers, and then use a small screw driver to rotate them.
10. Clean the face of the speedo off with a soft cloth.
11. Reassemble everything and take it for a test ride.
I added some stupid farlkes to my speedo face. I should have put the wobbles at 85 though.
Hope it helps, and see you out on the trails.