Thanks, all, for your replies so far.
I would suspect the bendix/plunger inside the starter. There should be a rebuild kit hiding somewhere on the internet.
To test engine lockup, remove spark plugs, use a socket wrench on the main pulley and see if the engine moves. I seriously doubt that a 100k mile Toyota is locked, unless you just abused it.
Why suspect the bendix/plunger if it pops and spins strong when bench tested? I'll try the main pulley if other options don't work, just to rule it out. I agree it is unlikely to be locked up. The truck has not been abused, except maybe the bed and springs. =)
Have you tried with a different battery as a sanity check? Or cleaning the terminals on the battery to ensure you actually have a good connection?
I have cleaned both battery terminals and posts, back when I checked the ground to the engine. I have not tried another battery, but will, since it is simple, though I don't have high hopes for just changing the battery as it is <1 year old.
Those grounds you checked, were they on the starter or elsewhere?
I had a similar issue due to the starter ground coming off and vanishing. I missed it for a long time because I didn't even see anywhere to connect one and figured the mounting bolts would ground it. Nope. Electrical shop had the diagram and found where I was missing a starter ground. Installed that and good to go again!
I did not see a separate ground to the starter, I just cleaned the ground to the engine block and figured the mounting bolts grounded to the block. This sounds like a likely culprit, but where could it have gone? I could test by jumping the neg. terminal of the battery to the starter while trying to turn it over.
You need to check that you don't have high resistance anywhere in the starting circult.. Namely, clean battery posts and inside battery connections.. Even if they look clean they can have a thin coating of corrosion which is invisible.. clean off with fine emery cloth. lube batt posts with petrolium jelly and assemble.
remove every connection in the leads going from battery to starter and back again to negative batt terminal. This also means the ground connections.. you could even have a bad ground cable.
High resistance in any of these connections will prevent the engine turning over.
If it is none of these then it could be dirty terminals inside the starter solenoid..
If it is clicking it means the starter solenoid is being activated, but dirty terminals as the same high resistance problem.
None of the electrical connections appear clean, many are corroded. I haven't systematically gone through the whole starter circuit yet. Thanks for the tip. Question: wouldn't dirty terminals inside the starter solenoid cause a failing bench test?
If it worked on the bench... It might be because it had higher voltage/amperage.
Tapping with a hammer might work, try both at rest, and with the key engaged.
When I bench tested it, I used the same battery that is in the truck. Any higher voltage/amperage would be due to no load. I don't know how to simulate a load on it without damaging the starter motor gear, so I just re-installed.
The starter has been tapped extensively, from gently to stiffly, both when in the truck with ignition on and after removal when I could whack it from 360 degrees. Did not help.
I agree... bench testing as described does not prove the starter is good and voltage does not always mean the battery is good. Bring both to your local autozone / o'riellys / whatever chain car part store you have for free testing. That will help with not throwing money unnecessarily into the fix.
I took it to autozone the evening I had it out of the truck and it passed, then passed a retest. I don't think they test it under load, though. I'm not sure what more their test does than just hooking to a battery an jumping the signal wire, but I tried it.
Plan of action, proceeding down the line until something works:
1) Look for voltage drop on existing battery when starting. Replace battery with known good and try starting.
2) Look for loose/missing/broken ground wire to starter. Jump neg terminal to starter and try starting.
3) Disassemble and clean all electrical connections from pos. post to starter and back to negative post. Reassemble and try starting.
4) Remove plugs and try to crank main pulley to ensure it isn't locked up.
5) If none of that works, I'll have to look at replacing stuff until I find the problem. Wires... starter... I helped a buddy whose starter wouldn't turn the engine over, but then passed a bench test at a local auto parts store. A new starter (including new contacts, etc) fixed it for him. Maybe these starter tests just aren't that useful?