◀ all field notes

HOW I FIXED MY HUMANOID ROBOT

by Bootoshi · published · 7 MIN read · UNITREE G1 / ROBOTS / HARDWARE / GUIDE

one leg on my Unitree G1 kept dropping off the motor bus. the app reported PC to Motor Timeout on five actuators. the likely fault was a single kinked comm cable at the hip harness entry. full diagnosis, photos, and a triage procedure for other G1 owners.

One leg on my Unitree G1 had an intermittent fault, and the pattern was specific: it only ever failed at power-on. Some boots the leg came up dead and the app filled with motor alarms. Other boots it came up fine, and once it was up it never dropped mid-session, not even walking. The other leg, both arms, and the waist were unaffected. This weekend a hardware engineer friend and I put it on his bench and traced it. This post is the diagnosis, the teardown, the relevant Unitree documentation with direct links, and the caveats. Target reader: someone who owns or maintains one of these.

Symptoms as reported by the robot

The Unitree app's Alarm Information panel logged six entries with the same timestamp: Motor 1 through Motor 5, each with "PC to Motor Timeout", plus "Communication firmware error: Motor Data Timeout". Identical timestamps across five actuators is the first tell. Independent motor failures don't synchronize.

Unitree app alarm list showing PC to Motor Timeout on motors 1 to 5 and a communication firmware error

PC to Motor Timeout means the main compute board sent a command frame to that actuator's driver and never received the status frame back within the deadline. The actuator driver itself may be alive. What's proven dead is the round trip.

Body Info, Motor Information, Communication Quality shows per-joint link quality. Five of the six actuators on one leg read 0.0%, starting at the hip, with one mid-leg joint oddly still at 100%. The other leg and both arms read 100% everywhere. So the loss starts at the hip and takes nearly everything distal to it.

Unitree app body diagram with one leg reading 0.0 percent communication quality and the other leg at 100 percent

Note on the diagram: the model faces you, so the screen-right column is the robot's left side. Map it to motor indices from the SDK low-state topic before you trust which leg is which. I didn't log the indices during the session, which I regret.

Also: the robot's face LED ring flashes red fast in this state. That's a system-level fault indicator. It tells you a motor fault exists; it tells you nothing about which limb.

Fault tree

Five simultaneous timeouts on one limb, starting at the hip, leaves three candidates: a dead actuator driver acting as a broken link in the chain, a power drop to that leg, or a fault in the comm path where the leg's harness enters the pelvis.

Power was easy to narrow down. With the robot on, the actuators on the dead leg still had their board LEDs lit and ran their startup blink, so board power was present. That's not a voltage measurement and it doesn't exclude a brief dip during boot, but it moves the weight toward the comm path. A fault that comes and goes made a mechanical connection fault more likely than a dead driver, without excluding one. The power-on-only pattern is the part that doesn't fit neatly: a conductor that opens under flex should also drop out while walking, and mine never did. That keeps a boot-time cause, like a marginal contact that only matters during bus enumeration or a brief supply dip, on the table.

Prior art: the Munro Live teardown

Two days before we opened the robot, Munro Live published a 26-minute teardown of the G1's actuators with Paul and Armin from Munro & Associates: https://youtu.be/CSJydnLzBAo. It's the most detailed public look inside these actuators I've found. We used it to learn the internal layout before opening anything: what the stator, rotor, two-stage planetary gearset, and control board look like, where the driver board sits relative to the output, and how the wiring flows through the actuator. The fabric tape and what was under it we found ourselves on the bench; the video doesn't cover that.

The part that matters for this fault starts at 20:09, "How do you get electricity to a thing that is rotating?" Paraphrasing Paul: running a separate wire from the battery to each of 24 actuators would cost as much as the rest of the robot, so Unitree runs power and signal down the center of each actuator through one bundle, and the motors are daisy-chained: the power of one exits and goes to the next. The trouble is that the harness has to twist. Hard stops keep it under 360°, but it goes about 350° one way then the other, and over many cycles that fatigues the copper and eventually causes wires to break. They use very small stranded wires in individually insulated bundles to survive it, and he puts the design at roughly a couple hundred thousand cycles. For millions of cycles you'd need something like an automotive clock spring.

So the harness fatigue failure mode isn't my theory. It's the one the teardown engineers name as the known limit of this design. Also useful: at 15:48 he shows the control board and the small wires that carry the torque command in, which is the comm side of the bundle we were chasing.

Differential: healthy hip vs dead hip

We opened both hip actuators so we had a known-good reference next to the suspect. The driver board on each actuator has a status LED. On the healthy side it gave a brief, slow blink. On the dead side it blinked rapidly. Unitree publishes no LED table for the G1 motor boards, so I can't tell you what the rapid blink encodes (waiting for the bus, repeated reset, or something else). The difference was the useful part: same part number, same harness, two different states.

Both hip actuators opened on a workbench, driver board LEDs visibleThe dead hip actuator circled in green marker

Under the tape

The actuator face is wrapped in black fabric tape. Underneath are the two harness terminations onto the driver board: power and comm. Both are secured at the board with what looks like hot glue and heat-shrunk up the lead.

Hip actuator face covered in black fabric tape before peelingHip actuator face with tape removed showing two wire terminations and the driver board

Visual inspection on both sides came back clean, which is the expected result for a conductor fractured inside intact insulation. A flex-fatigue break is invisible from outside. Under one bend radius the strands touch and the link is up; under another they separate and the link drops. That's exactly the intermittent behavior we had.

The harness entry

A small triangular cover sits where the harness passes from the hip actuator into the pelvis. We removed it. Behind it, the comm lead makes a tight bend up and over the actuator's mounting plate, directly against an unrelieved edge of the housing, and the lead is free to rub on the inside of the hip shell through the joint's range of motion. Three failure mechanisms in one spot: tight bend radius, edge contact, and cyclic abrasion. Past this point the harness runs into the pelvis, so we stopped there.

The hip entry point with the triangular cover removedClose up of the kinked comm lead at the hip entry, circled in green marker
Removing this and tinkering with this fixed the entire problem. Most likely the damage is these weird little bends right here.

We disconnected the comm connector at the hip, reseated it, and powered on. Every joint reported 100% link quality. No alarms. The robot was fully up.

Unitree app body diagram with every joint reading 100 percent communication qualityUnitree app home screen with a green status dot and no alarms

What this does and doesn't prove

Reseating fixed the symptom. It doesn't isolate the cause between a fractured conductor at the kink and a marginal contact at the connector itself. Both are consistent with the evidence, and the power-on-only history actually leans toward the connector: a contact that's marginal at rest but good enough once the bus is up would fail exactly this way, while a flexing conductor should have dropped mid-walk at least once. What's not consistent is a dead driver: the same board came up green with nothing changed but the connection. I'll only call it confirmed after the cable and connector are replaced and the fault stays gone across many power cycles.

On the bus topology inside the leg: Unitree's doc (below) says the motors are wired in a chain on the RS485 bus, and the Munro teardown confirms the physical side, power and signal exit one actuator and enter the next. What neither says is whether each driver board electrically forwards the RS485 pair or all boards hang off one shared pair that just passes through. Either way, an interruption at the hip takes out everything past it. If you've mapped the actual pinout, I want to hear from you.

What Unitree's own documentation says

The primary source is Unitree's own help-center article "G1 APP常见报错" (G1 app common errors), last updated 2026-04-20: https://serviceconsole.unitree.com/#/help/011325 (Chinese; the help center is a slow single-page app, give it a few seconds). Under the heading "PC连接电机超时", which is what the English app renders as "PC to Motor Timeout", it distinguishes two cases. My translation:

RS485 is a differential serial bus: the receiver reads the voltage difference between two conductors, and many devices share the same pair. Power and data are separate requirements, which is exactly why a motor board can light its LED and still be unreachable. One broken conductor or one bad contact on the pair isolates every device past it.

3Logic Group's G1 knowledge base (a Russian Unitree distributor) has a matching entry under "Основные проблемы и ошибки": https://robodocs.3logic.ru/docs/Unitree%20Robotics/G1/g1_quick.html. My translation: "The robot's LED is solid red, and in the app an entire limb is missing from Communication status. Problem with one of the motors in the limb's chain. In the case of a leg: damage to the waist communication cable during installation or removal of the waist brace. Contact after-sales support." 3Logic doesn't say which LED it means; don't map that to the actuator boards or the face ring from this quote alone. The useful part is the second inspection zone: the waist-to-pelvis run, on top of the hip entry.

Unitree's G1 error-code table ("常见错误及释义", 2024-10-25) defines the flags behind the app text: https://support.unitree.com/home/zh/G1_developer/common_istakes_and_definitions. Two tables: device-status and motor-status. In the device-status table, 0x8 is "电机反馈数据超时" (motor feedback data timeout), which is the "Motor Data Timeout" line under "Communication firmware error" in the app. The motor-status flags worth pulling from the SDK low-state topic during a failure:

Caveat on those flags: a motor that can't reach the bus also can't report its own undervoltage or reset bit, so a missing flag doesn't clear that fault. Also note the overall device-status field reuses some of these numbers with different meanings.

How these were found: I fed the app screenshots, the teardown video, and my observations to ChatGPT and asked it for GitHub issues, forums, and official docs. It surfaced the Chinese article and the RS485 chain detail. Every source above is linked directly, and the quotes are translated from those pages, not from the chat. The chat is public if you want the trail: https://chatgpt.com/share/6aa7acd1-f974-83e8-b1ac-c406ae8023e4

Triage procedure if your G1 does this

Open items

The lead is still kinked. Reseating bought time, not a fix. The permanent repair is a replacement harness section with a proper bend radius at the pelvis entry and a grommet or sleeve where it crosses the housing edge.

Blocking that: several of the M3 socket-head screws on the hip housing are stripped. Plan is to cut a slot into each head with a rotary cutoff wheel and back them out with a hand flathead, then replace with new hardware. I'll document that pass separately, including the part number for the harness if Unitree will give it to me.

Workbench with hex keys, pliers, a bit set, and the opened hip actuator

If you own a G1 and hit this, reply to the newsletter or find me on X. I'd love to compare notes. There aren't many of us opening these things up yet!