I've had this problem on and off for a few years now. Looked it up and found the speed sensor oily so eventually earlier this year I replaced the speed sensor. Great, that's cured that I thought. Wrong, it came back this week after I returned from 10 days away. But this time, the needle stayed at zero for a couple of miles, enough to turn the odometer. Bingo, the fault is in the speedo itself!!
So took the dash apart,
View attachment 33136
View attachment 33137
View attachment 33138
took the binnacle out and removed the speedo
View attachment 33139
Seemed like the top tracks on the PCB were blackened. Thought this was by heat at first but there was no other sign of this. Gave it a light brush with a fine wire brush and the fault showed itself.
View attachment 33140
A broken track at the top of the board. So, soldered a small wire across and replaced it all in the reverse order after spraying a little lacquer on the PCB to stop any further corrosion and, so far so good, all works, no fault…but you never can be sure with intermittent faults so I'm still keeping my fingers crossed.
View attachment 33141
View attachment 33142
Pretty sure this is it. Only time will tell.