Setting up the Unitree B2 in a suitable home workshop or warehouse takes about 2 hours and four phases: unbox and inspect the 60 kg quadruped, install and charge its high-capacity battery, connect over Ethernet (set your PC to 192.168.123.99 on the 192.168.123.x/24 subnet), then update to the latest firmware and run a calibration walk. You need at least 5 m × 5 m of flat, non‑slip floor and the emergency‑stop remote within arm’s reach before first power‑on.
What You’ll Need: Tools, Space & Time
Tools & Supplies - Unitree B2 robot (includes remote control, charger, quick‑release battery) - Suspension stand or heavy‑duty rig rated for 60 kg – the robot must hang for sensor calibration - Ethernet cable + laptop with a free RJ45 port and Ubuntu 20.04 (or virtual machine) for network configuration / SDK - Anti‑fatigue rubber mat (6 mm min.) to protect floors and give consistent footing - Safety mirror or a second person as spotter - Heavy‑duty extension cord for the 58.8 V / 10 A charger - Mobile device (Android/iOS) with the Unitree RoboGo app installed
Room & Surface - Minimum clear floor space: 5 m × 5 m (25 m²) – the B2 can reach 21.6 km/h, so give it room - Floor must be flat, level, and non‑slip; concrete, sealed concrete, or commercial vinyl are ideal - The robot is rated IP67, but standing water should still be avoided during initial setup
Time Estimates
| Phase | First‑timer | Experienced |
|---|---|---|
| Unboxing & inspection | 20 min | 10 min |
| Battery install + charge | 5 min (install) + 2 h charge | 5 min + 2 h |
| Network & app binding | 30 min | 15 min |
| Firmware update & hardening | 25 min | 15 min |
| Calibration & first walk | 20 min | 10 min |
| Total (excluding charge) | ~2 h 10 min | ~1 h 20 min |
The battery can be hot‑swapped; a full charge lasts about 5 hours of active walking.
Before You Start: Safety & Space Requirements
This robot is heavy (60 kg) and fast (21.6 km/h). It can cause serious injury if handled incorrectly.
- Exclusion zone: mark a 2 m‑wide perimeter around the operating area; no people or pets inside during powered movement.
- Emergency stop: keep the remote control in hand, thumb on the e‑stop button. The robot also shuts down if the battery quick‑release is pulled.
- Suspension rig: until the firmware is updated and the robot’s gait is tuned, the B2 must be suspended from its center lift point. Do NOT attempt first stand without a rig rated for at least 100 kg.
- Floor condition: cracks, loose tiles, or thick carpet can cause the robot to trip. Shine‑free, consistent traction is a must.
- Wi‑Fi vs. Ethernet: for safety‑critical first steps, connect via Ethernet; the 5 GHz Wi‑Fi dongle is convenient later but can introduce control latency.
The Unitree B2 is enterprise‑grade (IP67). It can operate outdoors in rain, but initial setup should be indoors in a dry, temperature‑controlled space (5 °C – 35 °C).
Step 1 — Unboxing & Physical Inspection
The B2 arrives in a reinforced wooden crate. Gather a second person or a pallet jack — the robot itself is 60 kg, and the crate is larger.
- Remove the crate lid and cut the nylon straps securing the robot.
- Inspect for transit damage — check all 12 leg joints, the body shell, and the sensor head (front Intel RealSense D435i camera + 3D LiDAR).
- Check the accessory box — remote control, charger, battery (may be pre‑installed), Ethernet dongle, Wi‑Fi dongle, quick‑start booklet.
- Lift the robot using the center T‑handle; use a hoist if needed. Place it on a soft mat.
- Do NOT power on yet — the battery must be confirmed seated and partially charged.
Take a photo of the serial number plate on the underside; you will need it for the Unitree support portal and warranty registration.
Step 2 — Battery Installation & Charging
The B2 uses a 58.8 V, 30 Ah lithium‑ion pack with a quick‑release mechanism.
- Slide the battery into the rear bay; push firmly until the latch clicks audibly.
- Connect the charger to the robot’s charge port (right side, under a rubber flap) before plugging into mains.
- The charger LED glows red while charging, green when complete. A full charge takes about 2 hours.
- While charging, do not power on the robot — the BMS performs cell balancing only in standby.
> Important: The charger is rated at 10 A. Use a dedicated 15 A circuit (North America) or 230 V/10 A (Europe) to avoid tripping breakers.
Step 3 — Powering On & First Boot
With the robot safely suspended and the battery charged above 50 %, proceed:
- Press the power button (rear, below the battery) for 3 seconds. The status LEDs on the body will cycle white → blue.
- Wait for the boot chime (two ascending tones) — about 45 seconds.
- The B2 enters standby mode by default; all joints are limp, and the robot will hang from the rig.
- Place the remote control next to the robot and press the pairing button on the remote — the LED will blink, and the robot’s main LED will flash green once paired.
Do not attempt to stand the robot yet. We will update the firmware and calibrate sensors first.
Step 4 — Network Configuration (WiFi vs Ethernet)
The onboard computer (a RockChip RK3588) runs on the 192.168.123.x/24 subnet by default, with the internal computer at 192.168.123.161. For a desktop/laptop, assign a static IP in the same range.
- Connect your PC to the robot:
- Ethernet (recommended): plug the USB‑C‑to‑Ethernet dongle into the robot’s maintenance port (left side), and the other end into your PC. Or connect both to the same router.
- Wi‑Fi: insert the supplied Wi‑Fi dongle; the robot creates an access point (SSID
Unitree_B2_XXXX). Connect your PC to that AP, then SSH to192.168.123.161.
- Set your PC’s static IP to
192.168.123.99(any free IP except.161,.120for LiDAR). On Ubuntu, use:
sudo ifconfig eth0 192.168.123.99 netmask 255.255.255.0 up
or set via NetworkManager. 3. Test connectivity: ``bash ping 192.168.123.161 ``
The default SSH credentials are unitree / 123 — change them immediately (see Step 6).
| Connection method | Pros | Cons |
|---|---|---|
| Ethernet | Lowest latency, no interference | Cable limits range, requires dongle |
| Wi‑Fi (dongle) | Convenient, good for app control | Possible packet loss, less reliable for SDK |
| Wi‑Fi (infrastructure) | Connects to home network, remote access possible | Requires manual configuration of wpa_supplicant |
For advanced SDK use, Ethernet is strongly preferred.
Step 5 — App / Remote Control Binding
The Unitree RoboGo app (iOS/Android) lets you monitor battery, toggle gait modes, and adjust speed limits.
- Ensure your mobile device is on the same Wi‑Fi network as the robot’s AP or the Ethernet network via a router.
- In the app, tap “Add Device” → scan for UID on the robot’s startup screen or serial number label.
- A binding code will appear on the robot’s LED display; enter it in the app.
- After binding, the app shows real‑time joint angles, battery percentage, and IMU data.
The remote control will already be paired from Step 3. You can now move the robot manually with the right joystick (damping disabled first — see next step).
Step 6 — Firmware Update & Security Hardening
The Unitree B2 is affected by UniPwn (CVE‑2025‑35027), a wormable BLE command‑injection vulnerability that can give an attacker root access over the air. Later firmware releases (1.5.x and beyond) include per‑device AES keys. Update immediately and disable BLE provisioning when not in use.
Firmware update via PC
- Download the latest firmware package from the Unitree Support Portal (access requires serial registration).
- SCP the
.tar.gzfile to the robot:
scp B2_firmware_*.tar.gz [email protected]:/tmp/
- SSH into the robot and run the updater:
ssh [email protected]
cd /tmp
tar xzf B2_firmware_*.tar.gz
sudo ./flash.sh
- The robot will reboot twice. After the second boot, verify the version:
cat /etc/unitree/version
(The factory version may be 1.3.x; update to the latest release, which as of July 2026 is ≥1.5.x.)
UniPwn hardening steps
- Disable BLE provisioning: in the RoboGo app, set “Bluetooth provisioning” to OFF after initial binding. To re‑enable, you must hold the power button for 10 seconds.
- Change default SSH password:
passwd unitree
- Segment the network: if you connect the robot to your home LAN, place it on a separate VLAN with only the necessary ports allowed (SSH, DDS UDP unicast).
- Keep the robot offline when not actively used for development; BLE advertising stops only when the robot is completely off.
These steps are non‑negotiable — an unpatched B2 can be rooted by anyone within BLE range.
Step 7 — SDK / ROS2 Setup (Advanced)
The B2 is fully supported by the unitree_sdk2 (C++/Python) and the unitree_ros2 metapackage.
Prerequisites - Your development PC runs Ubuntu 20.04 with ROS2 Foxy (the same OS running on the robot’s onboard computer). - CycloneDDS 0.10.2 built from branch releases/0.10.x and installed: ``bash git clone -b releases/0.10.x https://github.com/eclipse-cyclonedds/cyclonedds cd cyclonedds && mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=/opt/cyclonedds sudo make install export CYCLONEDDS_HOME=/opt/cyclonedds ``
Install the SDK (C++ and Python) ``bash git clone https://github.com/unitreerobotics/unitree_sdk2 cd unitree_sdk2 mkdir build && cd build cmake .. -DCMAKE_INSTALL_PREFIX=/opt/unitree_robotics sudo make install ` For Python bindings: `bash cd unitree_sdk2_python pip3 install -e . ``
Install ROS2 wrapper ``bash mkdir -p ~/ros2_ws/src cd ~/ros2_ws/src git clone https://github.com/unitreerobotics/unitree_ros2 cd ~/ros2_ws colcon build --symlink-install ` The B2 uses the unitree_hg IDL (same as G1/H1). In your launch files, set the network interface to match your PC’s adapter connected to the robot (e.g., enp3s0`).
Verify SDK connectivity ``bash cd /opt/unitree_robotics/bin ./b2_example 192.168.123.161 # high‑level example `` If the robot is in debug mode (L2+R2 then L2+A on the remote), high‑level commands won’t work. Keep the AI sport client active.
Step 8 — Calibration & First Movement
- Ensure the robot is still suspended and all firmware updates are applied.
- Activate control mode on the remote:
- Press L2 + B to release damping (joints go limp).
- Press L2 + UP to enter ready state — the robot will stand up while hanging; the motors will torque.
- Press R2 + A to give operation control to the remote joysticks.
- Perform sensor calibration from the RoboGo app: select “IMU calibration” and let the robot remain still for 30 seconds, then “joint calibration” (the robot will slowly move its legs through full range).
- Once calibration passes, slowly lower the robot until it touches the floor. Use a second person to watch.
- Experiment with the left stick (throttle/steer) at the slowest speed (app defaults to “trot, 0.5 m/s”). The B2 should walk smoothly.
After a few minutes of stable walking, you can remove the suspension rig. The 21.6 km/h top speed is for outdoor use only; keep the home speed ≤ 3 m/s with ample margin.
Defining Success: Minimum / Full / Advanced
| Tier | Definition |
|---|---|
| Minimum viable | Robot powers on, connects to remote/app, stands and trots under manual control |
| Full operational | Firmware updated, hardening applied, Ethernet‑linked to PC, calibrated sensors, walks reliably in the designated area |
| Advanced | SDK/ROS2 installed, custom high‑ or low‑level commands work (e.g., inspection routine, payload transport), BLE provisioning disabled, network segmented |
Common Setup Mistakes & Fixes
- Wrong subnet on PC
Symptom: Cannot ping 192.168.123.161. Fix: Set PC static IP to 192.168.123.99 and netmask 255.255.255.0.
- Wrong network interface in SDK config
Symptom: “Channel factory init error” or “DDS participant creation failed”. Fix: Verify your PC’s interface name with ifconfig; set it explicitly in the example’s ChannelFactory call.
- CycloneDDS version mismatch
Symptom: Messages not received despite correct IP; DDS logs show “incompatible QoS”. Fix: Build CycloneDDS from releases/0.10.x; set CYCLONEDDS_HOME and ensure libddsc.so is in LD_LIBRARY_PATH.
- Used old‑firmware button combos
Symptom: Pressing L1+A does nothing. Fix: On firmware ≥1.4.x, the damping combo is L2+B, ready is L2+UP, operate is R2+A.
- Forgot to disable BLE
Symptom: Robot shows up in Bluetooth scans even when idle. Fix: In the app, set “Bluetooth provisioning” to OFF. This prevents UniPwn attacks.
- Battery not fully seated
Symptom: No power LED, intermittent contact. Fix: Push until a loud click; inspect the connector for bent pins.
- First boot without suspension
Symptom: Robot collapses after stand. Fix: Always use a rig until calibration confirms all motors can bear weight.
- Default SSH credentials unchanged
Symptom: Immediate security risk. Fix: After first login: passwd unitree, set a strong password.
- High‑level SDK commands fail
Symptom: RPC calls return error. Fix: Ensure the robot is NOT in debug mode (L2+R2 then L2+A); high‑level client requires AI sport mode active.
- Floor surface too slippery
Symptom: Paws slip laterally, robot staggers. Fix: Lay an anti‑fatigue rubber mat (≥6 mm) across the operating area.

Comments