Known problems & fixes

Unitree H1 / H1-2: Known Problems & Fixes

Owner-reported issues and manufacturer error codes for Unitree H1 / H1-2, every entry linked to its source.

13 known issuesLast updated Error codes (81)View robot profile →
Warranty & Safety Notice: Unofficial modifications or unapproved firmware changes may void your warranty and could cause hardware damage or injury. Always consult the manufacturer or a certified technician before performing repairs. Workarounds listed below are community-sourced and provided without guarantee.

Every entry links to its source. How we source →

Jump to an issue (13)
Jump to an error code (81)
SDK/software Blocks Use Workaround Exists

DDS lowstate subscriber fails and SSL cert missing during teleop startup

Replace the temporary unitree_dds_wrapper with the official library, and use unitree_go message types for H1 (unitree_hg is for H1-2/G1).

Symptom
When running teleop_hand_and_arm.py on the H1, two concurrent failures occur: a FileNotFoundError for an SSL certificate file needed by the vuer server, and repeated 'lowstate_subscriber is not ok! Please check dds.' messages indicating the DDS connection to the robot cannot be established.
Affected
xr_teleoperate h1 branch; Python 3.8; unitree_dds_wrapper (stale version)
Fix / Workaround
Community suggestion: replace the temporary unitree_dds_wrapper with the official unitree_sdk2_python library in the robot_arm.py and robot_hand.py control files. One commenter also reported success by switching the message type library from unitree_hg to unitree_go (unitree_go is for H1, unitree_hg is for H1_2/G1).
SDK/software Degrades Use Workaround Exists

H1 teleoperation positional inaccuracy and Inspire Hand fingers fail to close fully

Update to the latest release with the Vuer-derived hand remapping that models inter-finger constraints; reported to improve the inaccuracy.

Symptom
During teleoperation of the H1 (Education Edition) with Inspire Hands and Meta Quest 3, a persistent offset exists between the operator's hand movements and the robot's arm positions such that the robot's hands cannot fully close together. The Inspire Hand fingers also fail to close completely — a gap of approximately 5 cm remains between the index finger and thumb even when the operator's fingers are touching. Overall manipulation lacks positional accuracy.
Affected
Unitree H1 Education Edition (4-DOF arms); Inspire Hands; Meta Quest 3
Fix / Workaround
Vendor reply: the latest release switched the hand remapping algorithm from Vector to DexPilot, which accounts for constraints between all fingers and was suggested to improve pinch actions. No confirmation that this fully resolved the positional inaccuracy.
hand/gripper Blocks Use Workaround Exists

Inspire Hand serial port fails to open on /dev/ttyUSB0

Follow the thread matching your hand model: RS485 serial for the standard Inspire hand, Modbus TCP for the FTP variant.

Symptom
When launching the Inspire Hand controller with the command sudo ./inspire_hand -s /dev/ttyUSB0, the program immediately reports 'Open Serial port /dev/ttyUSB0 failed' and cannot connect to the hand.
Fix / Workaround
Vendor reply: directed user to a separate issue thread for the DFX Inspire Hand (RS485) and a separate issue thread for the FTP Inspire Hand (Modbus TCP), depending on hand model.
SDK/software Blocks Use Workaround Exists

Training crashes with unpad_trajectories shape mismatch for H1/H1-2/G1 tasks

Update utils.py's unpad_trajectories from upstream rsl_rl — a two-line change per the linked pull request; frequent early episode terminations trigger the bug.

Symptom
RL training for the h1, h1_2, and g1 tasks crashes at or around 1000 iterations with a RuntimeError: 'shape [-1, 1044, 64] is invalid for input of size 1572864' inside the unpad_trajectories function. The go2 task does not exhibit this problem.
Affected
unitree_rl_gym; rsl_rl 1.0.2; Python 3.8
Fix / Workaround
Community fix: update utils.py in rsl_rl to a newer upstream version from the leggedrobotics/rsl_rl repository (specifically the unpad_trajectories function). One commenter also noted that too many early episode terminations can trigger the bug, and adding two lines to utils.py per a linked pull request resolved it.
network/connectivity Blocks Use Open / Unresolved

H1-2 robot hands unreachable at 192.168.124.210 via network bridge configuration

No confirmed fix.

Symptom
On the H1-2, the robot hands at IP 192.168.124.210 cannot be pinged from the user's computer despite a network bridge being configured. Other devices on the 192.168.124.x subnet such as the LiDAR are reachable. A support ticket submitted through Unitree's ticket system was closed without resolution.
Affected
Unitree H1-2
Fix / Workaround
no confirmed fix
SDK/software Blocks Use Workaround Exists

Sim-to-sim controller repeatedly fails to connect to simulated robot lowstate

Run the controller with the explicit network interface flag.

Symptom
When running the sim-to-sim setup with MuJoCo and the g1 configuration, the controller repeatedly prints 'Waiting for connection rt/lowstate' and never successfully connects to the simulated robot.
Affected
unitree_rl_lab; MuJoCo sim; g1 robot scene (scene_29dof.xml); domain_id: 0; interface: lo
Fix / Workaround
Community suggestion: run the controller with the explicit network interface flag, e.g. ./g1.ctrl -n lo.
SDK/software Blocks Use Open / Unresolved

H1-2 low-level SDK example raises AttributeError on NoneType lowstate objects

No confirmed fix.

Symptom
Running h1_low_level_example.py against the H1-2 robot produces repeated RecurrentThread exceptions: "AttributeError: 'NoneType' object has no attribute 'imu_state'" and "'NoneType' object has no attribute 'motor_state'", indicating the SDK is not receiving valid lowstate data from the robot.
Affected
unitree_sdk2_python; H1-2 robot; CycloneDDS with rmw_cyclonedds_cpp
Fix / Workaround
no confirmed fix
SDK/software Blocks Use Open / Unresolved

Training crashes with RuntimeError: normal expects all elements of std >= 0.0

A vendor patch adds 'bad_orientation' to terminations, but the error is reported to persist even with the patch applied.

Symptom
During RL training for the Unitree-H1-Velocity task, the training run crashes after a large number of timesteps with 'RuntimeError: normal expects all elements of std >= 0.0', caused by invalid standard deviation values in the policy distribution. The same error was reproduced on the Unitree-G1-29dof-Velocity task after approximately 3 hours of training.
Affected
IsaacLab 2.1.0, isaacsim 4.5.0.0
Fix / Workaround
A vendor-side patch (commit e72a072c4db68b79a816b3b89bf3b6a0525d113e) suggested adding 'bad_orientation' to terminations, but a community report confirms the error still occurs after that patch is applied.
SDK/software Blocks Use Workaround Exists

H1 robot with hands explodes in simulation when joint target position is set

Vendor reply: likely control-parameter instability — reduce stiffness and simulation dt, or fix the revolute hand joints.

Symptom
When importing h1_with_hands.urdf via the Isaac Sim 4.2.0 URDF Importer and setting a joint target position, the robot behaves erratically and 'blows up' in the simulation. The standard h1.urdf without hands does not exhibit this behaviour.
Affected
Isaac Sim 4.2.0
Fix / Workaround
A vendor reply suggests the instability is possibly caused by control parameters; recommended workarounds include reducing stiffness and simulation dt, or fixing the revolute joints in the hand.
motor/actuator Degrades Use Workaround Exists

H1 must be suspended to power on — wrong joint position at startup causes faults

Symptom
H1 behaves abnormally at power-on, or throws joint faults as soon as it boots.
Fix / Workaround
Cause: The current H1 only supports powering on while suspended from a stand. If the upper limbs or ankles are in the wrong position when power is applied, the robot reads an abnormal joint state and operation goes wrong from the start.

Power the H1 on only while it is hung on its stand. Before switching on, physically check that the arms and ankles sit in their correct neutral positions. Do not power on while the robot is lying down or sitting.
battery/power Degrades Use Workaround Exists

H1 battery won't seat or won't power the robot

Symptom
One or both battery packs will not power the H1, or will not insert cleanly.
Fix / Workaround
Cause: Wrong battery, a pack that isn't fully seated, or a single failing pack.

Use only genuine H1 packs — never mix in batteries from other products. Push each pack in firmly until it clicks, which confirms it is seated. If only one bay fails, swap the two packs between bays to isolate whether the fault follows the pack or the bay. If it persists, note the battery indicator-light state and contact support with that detail.

Abnormal battery communication appears in the H1 error-code table on this page.
motor/actuator Degrades Use Workaround Exists

H1 shows the wrong joint position after power-on

Symptom
After turning the H1 on, one or more joints report a position that is clearly wrong.
Fix / Workaround
Cause: Either the limbs weren't in the correct position at power-on, or a cable to the affected motor is damaged.

First confirm the arms and ankles were correctly positioned before power was applied, and re-boot from that position. If a specific joint still reads wrong, inspect the cabling to the motor at that position for damage or a loose connector.

Joint Starting Anomaly and motor communication faults are listed in the H1 error-code table on this page.
motor/actuator Annoyance Workaround Exists

H1 walks skewed or drifts to one side

Symptom
During high-level walking the H1 veers or drifts rather than tracking straight.
Fix / Workaround
Cause: A loosened ankle, or normal IMU drift combined with unit-to-unit hardware variation.

Check whether the ankle has worked loose; if so, tighten its screws and try again. Because the IMU drifts slightly by nature, correct the heading manually on the joystick during operation. If drift persists, power down, reset the robot to its initial pose, and restart.

Error codes

Codes and messages from Unitree Robotics’ published documentation, © Unitree Robotics, linked per row to the original page. ‘What to do’ is HumanoidApplications’ own summary of the manufacturer’s guidance, not the manufacturer’s text.

Bottom communication firmware — fault source 100 — rt/lf/lowstate LowState.bit_flag

Code Message What to do Source
0x20 Joint Starting Anomaly support.unitree.com/home/…
0x01 Control Command Timeout support.unitree.com/home/…
0x40 MCU communication Anomaly support.unitree.com/home/…
0x80 Abnormal motor communication support.unitree.com/home/…
0x10 Abnormal battery communication support.unitree.com/home/…
0x02 Motor overcurrent support.unitree.com/home/…

Motor — fault source 300+(motorID) — rt/lf/lowstate MotorState[motorID].reserve[0]

Code Message What to do Source
0x01 Overcurrent support.unitree.com/home/…
0x02 Phase Leakage support.unitree.com/home/…
0x04 MOS Over Temperature support.unitree.com/home/…
0x08 Bus undervoltage support.unitree.com/home/…
0x10 Winding overheating support.unitree.com/home/…
0x20 Encoder Communication Error support.unitree.com/home/…
0x40 Encoder Anomaly support.unitree.com/home/…
0x100 Motor communication interrupted support.unitree.com/home/…
0x1000 Command Anomaly support.unitree.com/home/…
0x10000 Status Anomaly support.unitree.com/home/…

Motor (motorID == [10,19]) — fault source 300+(motorID) — rt/lf/lowstate MotorState[motorID].reserve[0], motorID == [10,19]

Code Message What to do Source
0x01 Overcurrent support.unitree.com/home/…
0x02 Overvoltage support.unitree.com/home/…
0x04 Driver overheating support.unitree.com/home/…
0x08 Bus undervoltage support.unitree.com/home/…
0x10 Winding overheating support.unitree.com/home/…
0x20 Encoder Anomaly support.unitree.com/home/…
0x40000000 Disconnection Timeout One support.unitree.com/home/…
0x80000000 Disconnection Timeout Two support.unitree.com/home/…

Mainboard (fault source 200) — rt/lf/mainboardstate MainBoardState_.state[0]

Code Message What to do Source
0x00001 Command Timeout support.unitree.com/home/…
Show all 81 error codes

Mainboard (fault source 200) — rt/lf/mainboardstate MainBoardState_.state[0]

Code Message What to do Source
0x00002 Data Timeout support.unitree.com/home/…
0x00004 IMU Data Timeout support.unitree.com/home/…
0x00008 Motor Data Timeout support.unitree.com/home/…
0x00080 Soft Start Error support.unitree.com/home/…
0x00100 Motor Status Error support.unitree.com/home/…
0x00200 Low Overcurrent Limit Protection support.unitree.com/home/…
0x00400 Under Voltage Protection support.unitree.com/home/…
0x00800 High Overcurrent Limit Protection support.unitree.com/home/…
0x01000 Emergency Stop Triggered support.unitree.com/home/…
0x02000 SN Error support.unitree.com/home/…
0x04000 Upper Model Error support.unitree.com/home/…
0x08000 Lower Model Error support.unitree.com/home/…
0x10000 USB Error support.unitree.com/home/…
0x20000 Joint Limit Transient Over Voltage support.unitree.com/home/…

Motor Error 3XYY (reserve[2] == 0) — rt/lf/lowstate LowState.motor_state[motor_id].motorstate

Code Message What to do Source
0x01 Overcurrent support.unitree.com/home/…
0x02 Overvoltage support.unitree.com/home/…
0x04 Driver overheating support.unitree.com/home/…
0x08 Bus undervoltage support.unitree.com/home/…
0x10 Winding overheating support.unitree.com/home/…
0x20 Encoder abnormal support.unitree.com/home/…
0x40000000 Motor to PC timeout support.unitree.com/home/…
0x80000000 PC to Motor timeout support.unitree.com/home/…

Motor Error 3XYY (reserve[2] == 2) — rt/lf/lowstate LowState.motor_state[motor_id].motorstate

Code Message What to do Source
0x01 Overcurrent support.unitree.com/home/…
0x02 Phase Leakage support.unitree.com/home/…
0x04 MOS Over Temperature support.unitree.com/home/…
0x08 Bus undervoltage support.unitree.com/home/…
0x10 Winding overheating support.unitree.com/home/…
0x20 Encoder Communication Error support.unitree.com/home/…
0x40 Encoder abnormal support.unitree.com/home/…
0x0100 Motor humidity Anomaly support.unitree.com/home/…
0x0200 Encoder Remote support.unitree.com/home/…
0x0400 MOS Almost Overheat support.unitree.com/home/…
0x0800 Encoder Close support.unitree.com/home/…
0x1000 Winding Almost Overheat support.unitree.com/home/…
0x0400 Motor to PC timeout support.unitree.com/home/…
0x0400 PC to Motor timeout support.unitree.com/home/…

Motor Error 3XYY (reserve[2] == 4) — rt/lf/lowstate LowState.motor_state[motor_id].motorstate

Code Message What to do Source
0x00001 Overcurrent support.unitree.com/home/…
0x00002 Transient Over Voltage support.unitree.com/home/…
0x00004 Continuous Over Voltage support.unitree.com/home/…
0x00008 Transient Under Voltage support.unitree.com/home/…
0x00010 Chip Overheat support.unitree.com/home/…
0x00020 MOS Overheat/Overcool support.unitree.com/home/…
0x00040 MOS Temperature Abnormal support.unitree.com/home/…
0x00080 Shell Overheat/Cool support.unitree.com/home/…
0x00100 Shell Temperature Abnormal support.unitree.com/home/…
0x00200 Winding Overheat support.unitree.com/home/…
0x00400 Encoder 1 Error support.unitree.com/home/…
0x00800 Encoder 2 Error support.unitree.com/home/…
0x01000 Output Encoder Error support.unitree.com/home/…
0x02000 BOOT Data Error support.unitree.com/home/…
0x04000 Abnormal Reset support.unitree.com/home/…
0x08000 Main Control Authentication Failed support.unitree.com/home/…
0x10000 Chip Verification Failed support.unitree.com/home/…
0x20000 Calibration Mode Error support.unitree.com/home/…
0x40000000 Motor to PC timeout support.unitree.com/home/…
0x80000000 PC to Motor timeout support.unitree.com/home/…

Parts & repair costs

Prices as observed on the linked vendor pages on the date shown, in each vendor’s own currency. Not offers; check the source before buying.

Part Category Options Observed
Unitree H1 Humanoid High-Performance Battery Battery
Unitree H1 Fast Charger Charger
Unitree Dex1-1 V1 Standard Gripper Hand
Unitree Dex1-1 V2 Advanced Gripper with RGB Camera Hand

Each price was read from the linked page by an automated fetch; the raw response is hashed and kept for audit. No affiliate relationships.

Need professional help with your Unitree H1 / H1-2?

Join the repair waitlist and we’ll connect you with certified technicians and service partners.

Join the Repair Waitlist →