Known problems & fixes

Unitree Go2: Known Problems & Fixes

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

36 known issuesLast updated Error codes (35)
Warranty & Safety Notice: Unitree covers the Go2 Air for 6 months and the Go2 Pro / X / EDU for 12 months from delivery (24 months statutory in the EU). Warranty excludes damage from misuse and is voided by self-disassembly or modification. Owners generally pay shipping to the service point for warranty repairs; direct-from-Unitree orders ship back via China. Sources: unitree.com/go2 (warranty brochure note), blueskiesdroneshop.com Go2 listing, blog.robozaps.com/b/unitree-go2-review. Workarounds listed below are community-sourced and provided without guarantee.

Every entry links to its source. How we source →

Jump to an issue (36)
Jump to an error code (35)
network/connectivity Blocks Use Workaround Exists

WebRTC connection broken after firmware update

Roll back to firmware 1.0.25 or use wired CycloneDDS over Ethernet; a community WebRTC branch for 1.1.1 exists but is unconfirmed.

Symptom
Via the community go2_ros2_sdk ROS2 driver: After updating to a new firmware version, the WebRTC protocol can no longer be used to connect to the Go2. Users with the latest firmware received on a new Go2 EDU also cannot connect via WebRTC.
Affected
Firmware 1.1.1; Go2 EDU
Fix / Workaround
Community suggestion: roll back to firmware 1.0.25 (Unitree states downgrade is not officially supported). Alternative community suggestion: use wired CycloneDDS over Ethernet, which works with newer firmware. A separate branch targeting firmware 1.1.1 WebRTC support was posted for community testing but not confirmed working.
sensor/camera Blocks Use Open / Unresolved

LiDAR point cloud and mapping stop working after firmware update

No confirmed fix.

Symptom
Via the community go2_ros2_sdk ROS2 driver: After a firmware update, LiDAR point cloud data is no longer received and mapping fails. The Nav2 stack also stops working. Only camera streaming continues to function. Console shows repeated warnings: "Can't update static costmap layer, no map received" and H264 decoder errors: "No start code is found" / "Error splitting the input into NAL units."
Affected
Firmware 1.1.7; Ubuntu 22.04 with ROS2 Humble; Go2 EDU
Fix / Workaround
no confirmed fix
SDK/software Degrades Use Open / Unresolved

No LiDAR points and robot model does not move in RViz via WebRTC

No confirmed fix.

Symptom
When connecting to the Go2 EDU Plus via WebRTC and launching the ROS2 SDK, no LiDAR point cloud data is received and the robot model does not move in RViz. The error "Can't update static costmap layer, no map received" is repeatedly logged. Camera streaming works, but no other sensor data or robot state is published.
Affected
Go2 EDU Plus; WebRTC connection
Fix / Workaround
no confirmed fix
SDK/software Blocks Use Open / Unresolved

No sensor data or robot state displayed in RViz via CycloneDDS connection

No confirmed fix.

Symptom
When connecting via CycloneDDS over Ethernet, the ROS2 SDK launches and nodes start without connection errors, but nothing is displayed in RViz. The robot model shows only the body without legs, and most topics publish no messages. The robot IP is reachable and works with the official Unitree SDK.
Affected
Go2 EDU; ROS2 Humble; Ubuntu 22.04; latest firmware; CycloneDDS over Ethernet
Fix / Workaround
no confirmed fix
SDK/software Blocks Use Workaround Exists

SDK command calls fail with "[ClientStub] send request error" during robot control

Switching from Python 3.12 to 3.10 and restarting worked for one user, but the fix is not confirmed for all reporters.

Symptom
When attempting to send high-level commands such as StandDown() to the Go2 via the Python SDK, the error "[ClientStub] send request error. id=xxx" is returned. Pub/sub (helloworld example) works correctly, but service-based commands fail. Debug investigation shows the internal publication_matched_count is 0.
Affected
Go2 Air and Go2 Pro tested; Windows 10 and WSL2 Ubuntu 20.04; Python 3.8.6; API mode over Wi-Fi
Fix / Workaround
Community suggestion: switching from Python 3.12 to Python 3.10 and restarting the robot resolved the issue for one user, but the fix was not confirmed for all reporters.
SDK/software Blocks Use Open / Unresolved

Isaac Sim crashes with contact force backend error when rigid bodies are added to environment

No confirmed fix.

Symptom
When objects in the simulation environment are set as rigid bodies in Isaac Sim GUI, the simulator crashes with the exception: "Failed to get net contact forces from backend". The contact sensor readings for the robot base always return [0 0 0] even when a collision with a wall occurs; only foot contact sensor readings are correct.
Affected
Isaac Sim 2023.1.1; IsaacLab 0.3.1
Fix / Workaround
no confirmed fix
SDK/software Blocks Use Workaround Exists

Joint state publisher crashes with AssertionError on NaN/Inf values when robot is in AI mode

Switch the robot out of AI mode into classic/sport mode; a non-finite-value check in go2_math.py did not fully resolve it.

Symptom
When the Go2 is in AI mode, the go2_driver_node throws 'AssertionError: The position field must be a set or sequence and each value of type float' during the timer callback for publishing joint states. The error indicates that NaN or Inf values are being published to the joint state topic.
Affected
Dog firmware v1.1.1, connection type WebRTC, Ubuntu 22.04 (Docker)
Fix / Workaround
Community suggestion (maintainer @tfoldi): switch the robot from AI mode to normal/classic/sport mode. A code fix in go2_math.py to check for non-finite values was attempted but did not fully resolve the issue. Mode can be switched without the app using an external SDK script.
network/connectivity Blocks Use Open / Unresolved

go2_driver_node and lidar_to_pointcloud processes die immediately on launch with firmware 1.1.2

No confirmed fix.

Symptom
After the submodule initialization issue was resolved, the driver node fails to connect to the robot with '[ERROR] [go2_driver_node]: Failed to connect to robot 0 - exiting: Failed to receive initial public key response with new method' and 'ERROR:root:An error occurred: 502 Server Error: Bad Gateway for url: http://192.168.137.254:9991/con_notify'. Both go2_driver_node and lidar_to_pointcloud processes exit with code 255.
Affected
Go2 Pro, firmware 1.1.2, Ubuntu (host)
Fix / Workaround
no confirmed fix
SDK/software Degrades Use Workaround Exists

Joystick input received by simulator but does not move the robot in unitree_mujoco

USE_JOYSTICK=1 only publishes joystick data to a topic; actual control needs a program that reads it and drives the robot from LowState.

Symptom
With USE_JOYSTICK=1 set in config.py, joystick axis and button data is correctly received and published to rt/wireless_controller, but the simulated robot does not move. Debug output confirms values such as LX: 0.00, LY: 1.00 are being sent, yet the robot remains stationary.
Fix / Workaround
Clarification from maintainer (@Agnel-Wang): USE_JOYSTICK=1 only passes joystick information out via the wireless_controller topic; actual robot control must be implemented in a separate control program that reads from LowState.
sensor/camera Degrades Use Open / Unresolved

Accumulated LiDAR point cloud not displayed in RViz2 and robot joint synchronization delayed by ~3 seconds

Make sure the robot is standing; the ~3-second joint delay comes from the WebRTC joint-state topic updating at about 1 Hz, with no pushed fix yet.

Symptom
Via the community go2_ros2_sdk ROS2 driver: After updating to the latest master branch code, the accumulated radar point cloud does not appear in RViz2, though /utlidar/cloud_deskewed displays normally. Additionally, robot joint pose synchronization in RViz2 is delayed by approximately 3 seconds and limbs appear separated from the body model, with navigation failing as the robot keeps spinning.
Affected
Hardware version 2.0.0, software version 1.1.7
Fix / Workaround
Community suggestion: ensure the robot is standing up to receive LiDAR data via WebRTC. Maintainer (@abizovnuralem) identified the 3-second joint delay as caused by the WebRTC joint state topic updating at approximately 1 Hz due to a workaround for firmware 1.1.7; a proper fix had not been pushed to the repository at time of reporting.
sensor/camera Degrades Use Workaround Exists

ROS 2 subscriber receives no messages from Go2 front camera topic despite visible publishers

Specify the network interface name when running the script, and stay on ROS Humble or Noetic — Jazzy is unsupported.

Symptom
A Python ROS 2 node subscribing to /frontvideostream receives no messages and produces no output beyond the startup print, despite ros2 topic hz showing the topic publishing at approximately 33 Hz. A community member noted that the data appears to be dumped directly to DDS, and ROS 2 can only read the headers but cannot access the actual data.
Fix / Workaround
Community suggestion: specify the network interface name when running the script. Also noted that only ROS Humble and Noetic are officially supported; ROS Jazzy is not.
SDK/software Blocks Use Workaround Exists

Firmware 1.11.1 breaks SDK: sensor/lidar data not transmitted, arcsin errors

Switch the subscriber to state mode or use the alternative go2_ros2_sdk stack; confirmed working by the reporter.

Symptom
After updating to firmware 1.11.1, all Robot Status fields show Error, sensor and lidar data are not transmitted, and the runtime warning 'RuntimeWarning: invalid value encountered in arcsin (go2_math.py)' is raised. The camera image is transmitted but the robot cannot be put into the classic standing position.
Affected
Firmware 1.11.1
Fix / Workaround
Community workaround: switch the subscribed topic to low state mode and use an alternative SDK package (github.com/AmmarAzab/go2_ros2_sdk). Confirmed working by the reporter.
SDK/software Degrades Use Workaround Exists

RViz shows robot body only; legs missing with 'No transform from [FL_calf] to [odom]' errors

One user fixed it by removing a conflicting Python environment, but no step-by-step fix is confirmed.

Symptom
After launching go2_robot_sdk, RViz displays only the robot body without the four legs or camera model. The RViz status bar reports 'No transform from [FL_calf] to [odom]' and similar errors for all leg links.
Fix / Workaround
Community report: one user resolved it by eliminating a conflict between a conda Python environment and /usr/bin/python3, but no step-by-step fix is confirmed in the thread.
network/connectivity Degrades Use Workaround Exists

Simulator reports 'lo is not multicast-capable' and stand_go2 example has no effect

Point INTERFACE at a physical multicast-capable interface in the config; with a joystick connected before launch the error can be ignored.

Symptom
When loading unitree_mujoco the error 'selected interface "lo" is not multicast-capable: disabling multicast' is displayed. Running the stand_go2.py Python example also produces this error and the simulator does not respond to the command.
Fix / Workaround
Community workaround: use ifconfig to find a physical network interface that supports multicast, then change the INTERFACE setting in /simulate_python/config.py from 'lo' to that interface. One community member also notes the error does not prevent operation if a joystick is connected before launching.
SDK/software Blocks Use Workaround Exists

unitree_mujoco simulator crashes with 'free(): invalid pointer / Aborted (core dumped)'

Resolve the DDS library path conflict between ROS 2 and unitree_sdk2; no universal fix across platforms.

Symptom
After launching the unitree_mujoco simulator binary it starts and prepares MuJoCo data but then immediately aborts with 'free(): invalid pointer' and 'Aborted (core dumped)'. The issue occurs across multiple reported MuJoCo versions.
Affected
MuJoCo 3.3.1 and MuJoCo 3.2.7; Ubuntu 24.04 with ROS 2 Jazzy also reported
Fix / Workaround
Community workaround: one user resolved it on Ubuntu 24.04 / ROS 2 Jazzy by identifying a DDS library path conflict (mixed use of Jazzy's DDS and unitree_sdk2-installed DDS) via 'ldd ./unitree_mujoco | grep dds' and resolving the conflict. No universal confirmed fix for all platforms.
SDK/software Degrades Use Open / Unresolved

Unnatural rotation in simulator: one front leg freezes during yaw command

No ready-to-use fix: the maintainer says it needs observation and actor-input changes, lidar removed from the actor input, retraining, and sim matched to real.

Symptom
When a yaw angle speed command is sent in the simulator, the robot's rotation appears unnatural: one front leg remains still for a period until the robot completes a certain amount of rotation, making the movement look unstable.
Fix / Workaround
Developer (abizovnuralem) states that additional work is required: modify the observation input layer to separate critic and actor inputs, remove lidar from actor input, retrain RL, and match the simulation environment to the real environment. No confirmed ready-to-use fix.
SDK/software Blocks Use Workaround Exists

go2_driver_node crashes after extended runtime with 'AssertionError: The y field must be of type float'

Cast the position values to float in publish_odom_webrtc() and the other odom publisher; reported stable for 72 hours after the change.

Symptom
After running the driver for approximately one hour, the go2_driver_node raises 'AssertionError: The \'y\' field must be of type \'float\'' inside publish_odom_webrtc(), crashing the driver thread. The error occurs when the position value returned is an integer rather than a float.
Fix / Workaround
Community fix: explicitly cast position values to float, e.g. float(data['pose']['position']['y']), in both publish_odom_webrtc() and publish_odom_topic_webrtc(). Confirmed stable for 72 hours after applying the fix.
SDK/software Blocks Use Workaround Exists

Robot does not move when velocity commands published to /cmd_vel

Export ROBOT_IP and CONN_TYPE before running the launch file; confirmed by the reporter.

Symptom
Via the community go2_ros2_sdk ROS2 driver: Publishing to /cmd_vel via ros2 topic pub is echoed correctly in a second terminal, but the physical robot does not respond and does not move. The RobotModel in rviz appears malformed. The root cause was the ROBOT_IP environment variable was not set before launching, producing the error: "Invalid URL 'http://:9991/con_notify': No host supplied".
Affected
Ubuntu 22, ROS2 Humble
Fix / Workaround
Ensure ROBOT_IP and CONN_TYPE environment variables are exported before running ros2 launch go2_robot_sdk robot.launch.py (community-identified resolution confirmed by reporter).
SDK/software Blocks Use Fixed by Vendor

Simulator fails to load with AttributeError and segmentation fault on startup

Remove the antialiasing_mode line or update the local IsaacLab installation; both reported to resolve it.

Symptom
Via the community isaac-go2-ros2 driver: Launching the simulation script raises "AttributeError: 'SimulationCfg' object has no attribute 'render'" followed immediately by a fatal segmentation fault, preventing the simulator from loading. After removing the offending line, a secondary error appears during environment reset in the RslRlVecEnvWrapper.
Affected
isaac-go2-ros2; IsaacLab (unspecified version, binary install)
Fix / Workaround
Repo maintainer suggested removing the line `self.sim.render.antialiasing_mode = None`. The reporter ultimately resolved the issue by updating their local IsaacLab installation to a newer version.
SDK/software Blocks Use Workaround Exists

CUDA illegal memory access crash when using triangle mesh colliders in Omniverse simulation

Change the collision mesh to SDF Mesh in the physics settings; crashes are still reported when adding rigid-body properties.

Symptom
Via the community go2_omniverse driver: When collision physics properties are added to environment objects using Triangle Mesh approximation, the simulator throws a CUDA error at runtime: "CUDA error: an illegal memory access was encountered", crashing during env.step(). A PhysicsUSD warning also notes that triangle mesh collision without SDF cannot be part of a dynamic body and falls back to convex hull.
Fix / Workaround
Community user @ShaoshuSu resolved the crash by changing the collision approximation from Triangle Mesh to SDF Mesh in the Physics Property settings. Note: one user reported the CUDA error recurred when adding rigid body properties to objects.
SDK/software Blocks Use Open / Unresolved

Simulator crashes with AttributeError and segfault on startup

No confirmed fix.

Symptom
Via the community isaac-go2-ros2 driver: running isaac_go2_ros2.py causes Isaac Sim to launch briefly and then exit. The terminal shows "AttributeError: 'SimulationCfg' object has no attribute 'render'" followed by "Fatal Python error: Segmentation fault".
Affected
IsaacSim 4.2, IsaacLab 1.2.0, Ubuntu 22.04, ROS2 Humble
Fix / Workaround
no confirmed fix
SDK/software Blocks Use Workaround Exists

Keyboard commands do not control robot movement in simulator

Clone the added_copter branch explicitly and strip the copter code from omniverse_sim.py to restore WASD control.

Symptom
Via the community go2_omniverse driver: after adapting the project to newer software versions, keyboard commands have no effect on the simulated Go2 robot's movement. Additionally, RViz2 displays only the camera stream and not the full robot model or map.
Affected
Isaac Sim 4.2.0, latest IsaacLab
Fix / Workaround
Community-identified workaround: clone the 'added_copter' branch explicitly (with -b added_copter) and remove copter-related code from omniverse_sim.py, after which WASD keyboard control was restored.
SDK/software Blocks Use Open / Unresolved

AttributeError on Camera object causes simulator freeze at startup

No confirmed fix; --robot_amount 1 is a workaround for limited hardware.

Symptom
Via the community go2_omniverse driver: on startup the simulator throws "AttributeError: 'Camera' object has no attribute '_rep_registry'" during Camera object cleanup. Some users report the simulation still loads despite the error, while others report the simulator freezes at that point and does not proceed.
Fix / Workaround
Maintainer suggested using --robot_amount 1 as a workaround for users with limited hardware. No confirmed fix for the underlying AttributeError.
Show all 36 issues
SDK/software Blocks Use Workaround Exists

Trained locomotion policy causes significant foot slipping on deployment

Change the control type in train.py rather than using the Go1 actuator network, or train a Go2-specific actuator network.

Symptom
Via the community walk-these-ways-go2 driver: when deploying a trained locomotion policy to the Go2 EDU robot, the feet exhibit obvious slippage and insufficient traction during forward/backward motion. Even during stationary stepping without joystick input, the robot's stepping position gradually drifts and fails to maintain the same position.
Affected
Go2 EDU; both the pre-trained model included in the project and a custom-trained model (4096 objects, 15000 iterations)
Fix / Workaround
Community suggestion: change the control type in train.py to `Cfg.control.control_type = "P"` and retrain, rather than using the go1 actuator network. Alternatively, train a custom actuator network for the Go2 robot.
SDK/software Blocks Use Workaround Exists

External joystick commands not recognized during sim-to-real deployment

Use the Go2's own joystick for sim-to-real: joystick commands ride the robot's lowstate message, which an external controller doesn't produce.

Symptom
During sim-to-real deployment with go2_ctrl connected to the real robot over Ethernet, pressing L2+A on an external (Xbox) joystick does nothing and the controller gets stuck in Passive state. The same controller works correctly in the sim-to-sim scenario using the loopback interface.
Fix / Workaround
Community finding: the Go2 robot's own joystick must be used for sim-to-real, as joystick information is read from the lowstate message originating from the robot. The external controller works for sim-to-sim only.
SDK/software Blocks Use Workaround Exists

Sim-to-real policy deployment causes robot to flip and squirm dangerously

Don't overtrain — 1500 iterations is confirmed to work — and disable the default motion controller before deploying.

Symptom
After deploying a trained policy from unitree_rl_lab to the real Go2 robot, the robot initially walked cautiously then flipped in a sharp movement and began squirming dangerously. The terminal showed repeated errors: `ddsi_udp_conn_write to udp/192.168.123.161:46960 failed with retcode -1`. A `[critical] The other process is using the lowcmd channel, please close it first` error also appeared on first run.
Affected
unitree_rl_lab; trained for 50000 iterations (default maximum)
Fix / Workaround
Vendor reply: do not overtrain — 1500 iterations was confirmed to work. The critical error about the lowcmd channel requires disabling the default motion controller before deploying; it is auto-disabled on detection so the error does not repeat on subsequent runs.
SDK/software Blocks Use Workaround Exists

Low-level state cannot be retrieved on G1 robot; NoneType error on init

SSH into pc2 and run motion_switcher_example.py to set 'ai' mode, then restart the robot.

Symptom
Running low-level SDK examples against a G1 robot produces no console output for read_lowstate.py, and g1_ankle_swing_example.py crashes with: "[ClientStub] send request error" followed by "TypeError: 'NoneType' object is not subscriptable" at the line `while result['name']`. The robot does not move.
Affected
Unitree G1-EDU, unitree_sdk2_python installed from source, Python 3.8, Ubuntu 22.04 LTS
Fix / Workaround
A community member suggested switching the motion_switcher to 'ai' mode by SSHing into pc2 and running motion_switcher_example.py, then restarting the robot.
SDK/software Blocks Use Workaround Exists

High-level control example returns send request error in simulation

Enable the sport_mode service in the Unitree Go2 app; high-level control depends on it.

Symptom
Running go2_sport_client.py against the unitree_mujoco simulation with interface 'lo' results in "[ClientStub] send request error. id: 252906806156372" when any test option is selected. The robot does not execute the requested motion.
Affected
unitree_sdk2_python, unitree_mujoco simulation
Fix / Workaround
A community member stated that high-level control requires the sport_mode service to be enabled in the Unitree Go2 app.
network/connectivity Blocks Use Workaround Exists

go2_ctrl hangs waiting for robot connection during sim2sim on loopback interface

Run go2_ctrl with the loopback interface explicitly (--network lo, or network_interface "lo" in the mujoco config).

Symptom
After starting unitree_mujoco and launching go2_ctrl for a sim2sim test, the controller hangs indefinitely printing "[warning] Waiting for connection rt/lowstate" and never establishes a connection. The simulation runs but the controller cannot communicate with it.
Affected
Ubuntu 22.04
Fix / Workaround
A community member identified that go2_ctrl was using the wrong network interface. The fix is to explicitly specify the loopback interface: run `./go2_ctrl --network lo` (or `./go2_ctrl lo`) and set network_interface to "lo" in the mujoco config.
security/privacy Blocks Use Fixed by Vendor

Root code execution via unauthenticated DDS and app database tampering (CVE-2026-27509 / CVE-2026-27510)

Firmware V1.1.7–V1.1.11 allows network-adjacent attackers root code execution; patched in V1.1.13 — update; EDU versions may remain unpatched.

Symptom
Go2 firmware V1.1.7–V1.1.9 and V1.1.11 (EDU) implement no DDS authentication or authorization on the CycloneDDS topic rt/api/programming_actuator/request, handled by actuator_manager.py. A network-adjacent, unauthenticated attacker can join DDS domain 0 and publish an api_id=1002 message carrying arbitrary Python; the robot writes it under /unitree/etc/programming/ and binds it to a physical controller keybinding. On keypress the code runs as root and persists across reboots (CVE-2026-27509, CWE-306; CVSS 4.0 score 8.5, HIGH, per VulnCheck). In the same actuator_manager component on V1.1.11, tampering with the Blockly preprogrammed action blocks stored in the Android app's local database leads to arbitrary Python executed as root, and a malicious program shared through the app's community marketplace can likewise execute on any robot that imports and runs it (CVE-2026-27510). Disclosed February 26, 2026; credited to Olivier Laflamme and Ruikai Peng.
Affected
Go2 firmware V1.1.7–V1.1.9 and V1.1.11 (EDU); patched in V1.1.13 per the researchers.
Fix / Workaround
Update to firmware V1.1.13 or later: the researchers state Unitree pushed patches in V1.1.13 after coordinated disclosure. Per the researchers, Unitree indicated that CVE-2026-27509 will likely not be addressed in EDU versions due to the nature of that offering, subject to change; on an EDU unit, treat the DDS interface as reachable by anyone on the same network until a fix ships. Only import and run community-marketplace programs you trust.
other Degrades Use Workaround Exists

Understanding Go2 fault types — and which recover on their own vs need a restart

Symptom
The Go2 reports a fault through the app or SDK and it isn't clear whether to wait it out or power-cycle.
Fix / Workaround
Cause: Go2 faults fall into three kinds. A system fault is a hardware or software problem carrying a fault-source code and fault code (see the error-code table on this page). A behavioral fault means the robot can't run a command right now — usually its current state doesn't allow it or it's busy. An application fault is an app-side problem such as the robot not being bound, failing to connect, or a network error.

Ordinary warning-level faults clear themselves once the underlying condition goes away. Protective faults — motor protection, mainboard disconnection, and the like — need a restart to clear. When a motor drops into a protection state (overcurrent, overvoltage, etc.), power the robot off, let it rest a short while, then power back on. If it keeps recurring after several restarts, contact support.

The Go2 error-code table on this page lists the specific motor, radar, UWB and firmware fault codes.
motor/actuator Degrades Use Workaround Exists

Go2 powered on with its legs in the wrong position / kicking

Symptom
Turned on while suspended, the Go2's legs are in the wrong position or flail.
Fix / Workaround
Cause: The Go2 does not support powering on while hung up.

Place the Go2 in its correct initial posture on the ground before applying power. Do not power it on suspended.
other Annoyance Workaround Exists

Does the Go2 go around obstacles or stop at them?

Symptom
Unclear how the Go2's obstacle-avoidance behaves.
Fix / Workaround
Both, depending on the obstacle. The avoidance algorithm sizes up the obstacle's width: if it's too wide to skirt, the robot stops; if it's narrow enough, the robot routes around it on its own.
sensor/camera Annoyance Workaround Exists

Go2 camera resolution and video quality

Symptom
What the Go2's head camera is capable of.
Fix / Workaround
The head camera records at 1080p 30fps or 720p 60fps, with an F2.2 aperture and a 120° field of view. It supports HD streaming in the app, and holds a smooth 720p 60fps stream in an unobstructed, interference-free environment.

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. Legal notice.

Head indicator light

Code Message What to do LED Source
low-flash-rate-in-red Low flash rate in red Boot has failed. Unitree treats this as a system or hardware fault rather than something an owner can clear, so contact after-sales service. Red fccid.io/2A5PE-YUSHU004/…
fast-flash-rate-in-red Fast flash rate in red Motor and IMU calibration did not complete. Run the calibration again from the Unitree Go app before using the robot. Red fccid.io/2A5PE-YUSHU004/…
permanently-on-in-green Permanently on in green Green fccid.io/2A5PE-YUSHU004/…
flash-in-green Flash in green Green fccid.io/2A5PE-YUSHU004/…
low-flash-rate-in-blue Low flash rate in blue Blue fccid.io/2A5PE-YUSHU004/…
low-flash-rate-in-yellow Low flash rate in yellow Battery is low and the robot will crouch down by itself within ten minutes. Put Go2 on charge now rather than starting a new task. Yellow fccid.io/2A5PE-YUSHU004/…
permanently-on-in-white Permanently on in white White fccid.io/2A5PE-YUSHU004/…

Explanation of abnormalities

Code Message What to do Source
go2-does-not-stand-up-after-switching-on-with-head-flashing-red-light Go2 does not stand up after switching on with head… Check how the robot is placed, reposition it and reboot. If it still will not stand, Unitree's own guidance is that this is a system or hardware failure — contact their technical support rather than retrying. fccid.io/2A5PE-YUSHU004/…
app-connectionerror-error App connectionerror error Check the connection you are actually using: on AP mode confirm the phone joined the hotspot Go2 emits, on Wi-Fi confirm the network reaches the internet, and on 4G check the data allowance under Settings then Mobile Network in the app. fccid.io/2A5PE-YUSHU004/…
can-t-use-the-app-to-control-go2 Can't use the App to control Go2? The remote and the app cannot drive Go2 at the same time. Leave side-following mode, hold the remote's power button for two seconds to switch it off, then control the robot from the app. fccid.io/2A5PE-YUSHU004/…
abnormal-standing-posture-after-switching-on Abnormal standing posture after switching on Restart first. If the posture is still wrong and it falls easily, joint recalibration is the manufacturer's remedy — but Go2 ships calibrated, so consult Unitree technical support before recalibrating anything. fccid.io/2A5PE-YUSHU004/…
radar-stops-rotating-when-meet-external-force Radar stops rotating when meet external force Release whatever is holding the radar; it should resume by itself. If not, nudge it by hand, then restart Go2. Still stuck means checking the malfunction detail in the app and contacting Unitree support. fccid.io/2A5PE-YUSHU004/…
the-radar-point-cloud-has-obvious-smudges The radar point cloud has obvious smudges? The radar window is dirty and that degrades its scan data. Wipe the optical window gently with a clean lens cloth, and only if marks remain use a little alcohol on the cloth. fccid.io/2A5PE-YUSHU004/…

Connecting to the Unitree Go App

Code Message What to do Source
bluetooth-connection-error Bluetooth connection error Grant the Unitree Go app Bluetooth permission in the app's settings, and keep the phone's Bluetooth switched on throughout the connection. fccid.io/2A5PE-YUSHU004/…

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

Code Message What to do Source
0x20 Remote control communication error Marked deprecated (已废弃) in Unitree's current documentation. support.unitree.com/home/…
0x01 Bottom communication detection motion control DDS message timeout Marked deprecated (已废弃) in Unitree's current documentation. support.unitree.com/home/…
0x40 MCU communication abnormality support.unitree.com/home/…
0x80 Abnormal motor communication support.unitree.com/home/…
0x10 Abnormal battery communication support.unitree.com/home/…
0x02 Abnormal distribution switch support.unitree.com/home/…

Fans (fault source 200) — rt/lf/lowstate LowState.fanFrequency[3]

Code Message What to do Source
0x01 Left rear fan stuck Marked deprecated (已废弃) in Unitree's current documentation. support.unitree.com/home/…
0x02 Right rear fan blocked rotation support.unitree.com/home/…
0x04 Front fan blocked rotation support.unitree.com/home/…

Motor (fault source 300+(leg*3 + motor)) — rt/lf/lowstate MotorState[leg*3 + motor].reserve[0]

Code Message What to do Source
0x01 Overcurrent support.unitree.com/home/…
0x02 Overvoltage fault support.unitree.com/home/…
Show all 35 error codes

Motor (fault source 300+(leg*3 + motor)) — rt/lf/lowstate MotorState[leg*3 + motor].reserve[0]

Code Message What to do Source
0x04 Drive 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/…
0x100 Motor communication interrupted support.unitree.com/home/…

Radar (fault source 400) — rt/utlidar/lidar_state LidarState.error_state

Code Message What to do Source
0x01 Abnormal motor speed support.unitree.com/home/…
0x02 Point cloud data abnormality support.unitree.com/home/…
0x04 Serial port data abnormality support.unitree.com/home/…

UWB (fault source 500) — rt/uwbstate UwbState.error_state

Code Message What to do Source
0x01 UWB serial port opening exception support.unitree.com/home/…
0x02 Abnormal acquisition of robot status information 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
Go2 Battery Battery
Unitree GO2 Self-Charging Board Charger
Unitree Go2 Charger Charger
Unitree Go2 Fast Charger (US) Charger
Unitree Self-Charging Board w/ Fast Charger for Go2-W Robotic Dog (US) Charger
Unitree Fast Charger for Robotic Dog Go2-W (US) Charger
Go2 Controller Controller
Unitree Go2 Air Remote Control Controller
Unitree Go2 Pro Remote Control Controller
Hesai XT16 3D LiDAR Sensor
GO2 Repair & Diagnostic Deposit Repair service

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 Go2?

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

Join the Repair Waitlist →