Our system is unusual indeed.. here's the system as far as I can tell so far..
First, there are wheel rotation sensors on all four wheels, of course. These are shielded wires that run to the ABS controller.
The ABS controller converts these to a stronger signal and sends them, via four discrete wires, to the ECU in back.
So, the ECU knows all four wheels speeds, and not the tranny speed.
From these (and maybe others?) it derives the speed of the car and sends that to the gauge pod via CANBus, along with some of the other dash readouts.
The dash pod is the guilty party. You could say that either the servo-needle controller is fudging, or even that the silkscreen on the dials is inaccurate, but the effect is the same -- needle reads high.
However, the odometer is dead accurate, as far as I can tell. I've measured long drives against the GPS, and while the speedometer reads ~8% high, the odometer is very close to true.
But here's the kicker.. dorking the speedometer via CANBus DOES NOT seem to impact the rate at which the odometer is racking up miles. Rob12349734 confirmed this some time ago when he had his very cool 160mph stationary experience while accumulating no miles.
So, if it all holds true, then it should be possible to 'adjust' the speed from the ECU to the dash to read 8% lower, get an accurate needle on the speedometer, and still have correct odometer operation. Of course, I'm not comfortable with all that until I know how the odometer is getting its mileage. Nobody wants to have to check the "odometer tells lies" checkbox on the pink slip, right?
A speed-pulse output from the same circuit would be doable.