Lots of good input here. Frustrating that logging out to read is still an issue. I once owned a Subaru that had a stuck speedometer. It needed cleaning but then I had to re-calibrate it. Thankfully, it was simply mechanical without any electronics. I used oil, as you did, but only to free it up. I seem to recall using a light grease as some friction seems to help with a smooth movement.
The good news is you can test each component separately. Everything noted so far, I would have tried.
i cleaned old grease, and ? of the speedo gears and lubed it with 3 in 1 oil. test drove the needle sits just over 10mph. never went above that. i pulled the t case end of the cable off, and test ran with a drill. worked well returned to 0 every time. re drove it same out come. now sitting at a just a tad over 10mph. erff just my luck
First, in my limited experience, I've noticed a shoulder or crimped-on washer around the cable itself. I put that at the top. To me, that sets the depth the cable will be at inside the speedometer. The bottom end just has to engage the gear's hole/slot. If reversed, I believe the cable could slide too far down to not fully engage the gauge. Or the opposite compensation: Cut that cable longer to fully engage even if upside down and then I can imagine binding.
Both ends of the cable should be square. If rounded off on either end, it may slip inside one end or the other. The cable needs to be lubricated. The housing can wear and if enough wear is present, it can interfere with and possibly damage the cable itself. This was the problem with my first cable. I loosened both ends and twisted the housing 180 to put the worn side on the "inside" of the cable's bend on its way down to the transfer case (cable then contacted the opposite undamaged side). Problem solved (short term but eventually got replaced). If the cable ends show signs of being rounded off, perhaps the gear drive or the speedometer socket could also have wear (I imagine a cable trying to turn a stuck speedometer - the weak link has to give).
Back in the day, when I tested and fixed my speedo problem, it never occurred to me to test with a drill. I used my fingers to twist the cable (disconnected from transfer case and pulled out from under the jeep) and observed a small jump in the needle. That told me the gauge was working. You could also do the same thing in reverse: Disconnect from the back of the speedo and while holding that cable housing observe as you allow the jeep to creep forward in gear. Is the cable spinning? Apply a gloved finger pinch to create back pressure. Does it still turn between your fingers?
As you keep troubleshooting, you'll eventually figure out what isn't working - the drive gear (the slot - can't imagine the actual gear could be damaged), the cable or the gauge.