Speedometer calibration cannot happen through the ECU/OBD-II port. Not only is the ECU not programmable, the speedometer SENDS the signal to the ECU, not the other way around.
On ABS equipped 3rd gen 4Runners (almost all of them), the system goes like this:
ABS wheel speed sensors -> ABS computer -> Gauge cluster -> ECU (and 4WD computer, diff lock ECU, etc.)
To calibrate the speedo (and the speed the ECU sees and reports via OBD-II), you need to interrupt the signal between the ABS computer and the gauge cluster and use a calibrator there.
I chose the Dakota Digital speedometer calibrator, and installed it in the passenger kick panel next to the ABS computer:
-Charlie
EDIT: Also note that gearing will have no effect on the speedometer, since the speed signal is taken from the wheels, not the transmission/transfer case output. Only tire rolling diameter will change the speedo reading.