Robot #3 · Hiwonder TonyBot

From "the right foot sits bent" to a stripped gear

Robot #3 — repair summary

The complete record, including the three wrong turns — because the wrong turns cost the most time, and the next robot will offer the same ones.

Robot #3 came in with a bent right foot. This is what was actually wrong and what was done about it.

Reported: right foot out of position on power-upActual: servo 2 output gear slippingStatus: repaired and walking

Repair summary

The reported problem

The robot's right foot sat at the wrong angle whenever it was switched on, and adjusting the settings did not fix it.

What was actually wrong

The fault was inside the motor that tilts the right ankle. A part had come loose, so the motor could still move the foot but could no longer hold it in place. Under the robot's own weight the foot slipped out of position.

This is why adjusting the settings never worked: a joint that cannot hold any position cannot hold a corrected one either. The problem was mechanical, not a setting.

What was done

Current state

The robot walks. Two joints in the arms do not report their status back to the computer, but both move normally and this does not affect how the robot is used. They are noted for a simple cable check.

Worth knowing

The ankle repair reattached the original part rather than replacing it. That is a sound fix, but the joint carries a lot of force when the robot walks, so it is worth watching. If the foot drifts out of position again after a few sessions of use, that joint will need a replacement motor — an inexpensive part.

We also need to confirm the exact motor model fitted to these robots before ordering spares, as the part found inside did not match the published specification.

Outcome

One mechanical failure, two harmless quirks

ServoJointFindingStatus
2Right ankle, forward/backOutput gear loose on the drive shaft — drove the joint but could not hold it. Rear shaft and bearing sound. Gear rebonded, bracket re-clocked, recalibrated to +6.Repaired
6Elbow, side AMoves normally, does not answer Read Servo Deviations.Cable
15Shoulder out/in, side BSame as 6 — drives fine, won't report back.Cable

The reported symptom was misleading. "The foot is bent after calibrating" points at calibration. But a servo that cannot hold a position cannot hold a calibrated position either — the fix was never going to be in software, and every minute in the deviation sliders was wasted until the health test in Gate 4 caught it.

01–02Manual, then the Android appstarting point

The paper manual covers assembly, charging and getting the robot moving — nothing on diagnostics, servo IDs, or what to do when a joint misbehaves.

Scanned the QR code in the manual, installed the Hiwonder app, selected TonyBot, and ran the built-in poses to see what still worked.

What this established

The app plays pre-recorded actions only. No calibration screen, no servo list, no diagnostics. It confirms the robot powers up and the bus broadly works — that is the limit. Every real diagnostic step needs the PC software.

03Working from the TonyPi documentation by mistakewrong turn

The first documentation found was for the TonyPi — a visually similar humanoid that is an entirely different machine underneath.

# Wrong product — Raspberry Pi based
https://docs.hiwonder.com/projects/TonyPi/en/latest/

# Correct product — ESP32 based
https://wiki.hiwonder.com/projects/Tonybot/en/latest/

Everything derived from it had to be discarded: Wi-Fi hotspots, SSH as pi, VNC, wifi_conf.py. None of it exists on a TonyBot.

How the mistake surfaced

Looking for the Raspberry Pi's micro-HDMI ports and finding only USB Type-C. The hardware did not match the documentation, and the documentation was what was wrong.

04–05Correct documentation, and a Windows-only toolwrong turn

The resources page has every link. The blocker: Bus Servo Control V3.5 is Windows-only and the bench machine was a MacBook.

RouteVerdict
Boot Camp (Intel Mac)Best if available — native, free, USB serial simply works
Parallels (Apple Silicon)Workable; 14-day trial covers a repair job
UTMFree, but USB passthrough is fiddly — and that is the part that must work
Wine / CrossOverRejected — serial port access unreliable
Resolved

A Windows PC became available. Worth arranging one before starting a batch rather than fighting a VM per robot.

06–07Reading the servos, and building the mapfirst diagnostic

Read failures reported on 6, 15, and everything from 17 to 40.

Reading the result correctly

The robot has sixteen servos. 17–40 do not exist — the software polls past the robot's range. Only 6 and 15 were real.

Knowing which IDs failed was useless without knowing where they were. No Hiwonder page maps servo IDs to joints, so it was derived by testing: nudge one servo, watch which joint twitches, record, repeat. Result on the servo map.

What this immediately revealed

Servos 6 and 15 are both in the arms — nowhere near the right foot. The robot had two unrelated problems, and the loud one was not the real one. It also gave the mirror-twin rule, which made every later test a comparison rather than a judgement call.

08–09The test that found it, and the disassemblydiagnosis
TestServo 2 (R ankle)Servo 10 (twin)
Answers ReadYesYes
Moves on commandYesYes
Holds against a pushNo — loose, and only at certain anglesLocked solid
Motor sound while drivingSilentFaint hum
The silence was the tell

A servo with stripped gears normally still buzzes. Complete silence beside a humming twin meant the motor was not driving the output at all.

Disassembly confirmed it: the output gear had come loose on the metal drive shaft. Rear shaft and bearing sound. That explains every symptom — the motor drives the train, the loose gear slips at the output, so the joint can be pushed into position but never holds one.

Discrepancy to resolve

The servo was identified as the LX-824HV, specified with brass gears. The failed gear here is plastic. Read the model number off the servo body before ordering anything.

10–12Repair, and the unit confusion that followedwrong turn

The gear was rebonded. An adhesive joint has no teeth, so the gear can land at any angle — and this one landed roughly 120° out. The foot only looked level at position 0, the extreme end of travel, leaving no movement in one direction.

Fixed without touching the glue

The foot bracket was lifted off the splined horn and rotated to bring centre back to 500. Reversible, and always the right move before re-doing a bond. Arithmetic on the calibration page.

With the mechanics close, the remaining degrees should have been deviation work. Instead the position slider was being adjusted and Downloaded, and the robot reverted on every power cycle.

POSITION    0 – 1000     where to go now        NOT saved
DEVIATION   -100 – +100  permanent correction   saved by Download
How it surfaced

The reported values — 365 and 620 — gave it away. Deviation cannot exceed 100, so three-digit numbers can only have come from the position column. That reading also measured the remaining mechanical error: level at 365 against a centre of 500 is 135 units, about 32°, roughly two more teeth.

13Calibrated, and one pair that stands outresult
  1  ankle side       0        9  ankle side      +2
  2  ankle fwd        +6      10  ankle fwd       -9
  3  knee            -40      11  knee           -18   <-- see below
  4  hip fwd         -34      12  hip fwd        +36
  5  hip side         +1      13  hip side        +1
  6  elbow           +12      14  elbow           -1
  7  shoulder out/in +11      15  shoulder out/in -4
  8  shoulder up/dn  -55      16  shoulder up/dn +40

The repaired ankle at +6 is a good result — the mechanical work landed close enough that deviation barely had to do anything.

The knees break the pattern

Mirrored joints normally read roughly equal and opposite. The hips do (-34 / +36) and so do the shoulders (-55 / +40). The knees do not: -40 / -18, same sign and 22 apart. Both knees biased the same way bends the body forward, matching the slight forward lean seen while walking. Unconfirmed — the check is to command everything to 500 and look at the knees from the side.

The mirror-opposite convention is inferred from this robot's own numbers across three pairs, not from Hiwonder documentation. Suggestive, not proven.

14What this robot taught, in order of valuecarry forward
  1. Confirm the product before reading any documentation. If a page mentions a Raspberry Pi, it is the wrong robot.
  2. Test whether a servo holds, not just whether it moves. This is what found the real fault.
  3. Silence is a symptom. A servo that drives silently while its twin hums is not being driven at all.
  4. Check the number's magnitude before trusting the field. Three digits means position; deviation never exceeds 100.
  5. Straight happens at 500. Not 0.
  6. Re-clock the bracket before re-doing a bond. Reversible and free.
  7. Power-cycle to verify every save. A software re-read can show the session's values rather than the robot's.
  8. Read failures above ID 16 are noise.
  9. Set a new servo's ID before installing it.
  10. Record values before changing them. Deviation lives only on the robot, and there is no undo.

Left open on Robot #3

Not blocking, but not finished

ItemStatus
Servos 6 and 15 not answering ReadCable swap against their mirror twins. Joints work, so deprioritised.
Knee pair -40 / -18Side-view check at 500. Suspected cause of the forward lean.
Glued gear on servo 2Watch for drift over several walking sessions. A bond carrying full torque in shear is expected to be temporary.
Actual servo model unknownRead the number printed on the body. Needed before ordering spares for the batch.