Setting up the MagicBot Z1 humanoid at home takes about 3–4 hours of preparation and three phases: unbox and inspect, charge the integrated battery (~2 h), and power on for network pairing, firmware update, and calibration. The MagicBot stands 170 cm tall, weighs 55 kg, and requires at least 3 m × 3 m of clear, flat floor space with a suspension point for first boot. The robot is currently a prototype from MagicLab – adjust expectations, and consult official documentation for the latest firmware and safety steps.
What You’ll Need: Tools, Space & Time
The MagicBot Z1 is a 49‑DOF, 170 cm‑tall humanoid prototype built by MagicLab. While exact accessories vary, a typical setup requires:
- Space – At least 3 m × 3 m of clear, flat, non‑slip floor. The robot’s reach and stepping pattern demand a generous exclusion zone.
- Suspension rig – A gantry or overhead harness rated for the robot’s 55 kg weight; needed for the first power‑on and calibration.
- Included items – The shipping crate normally contains the robot, a charging dock or power supply, one or two batteries, an emergency‑stop remote, and a quick‑start card. Verify contents against the packing list immediately.
- Tools – A laptop (Windows/macOS/Linux) for network configuration and SDK use, Ethernet cable (Cat 5e or better), and a Phillips‑head driver if the feet or limbs are secured for transport.
- Additional supplies – Heavy‑duty extension cord, rubber anti‑fatigue mat, and a full‑length safety mirror to monitor posture from the side.
Estimated time per phase
| Phase | Typical duration |
|---|---|
| Unboxing & inspection | 20–30 min |
| Charging (from empty) | ~2 h |
| Network & app binding | 20 min |
| Firmware update | 30 min (depending on download) |
| Calibration & first stand | 30 min |
| Total | ~3 h 40 min |
Because the MagicBot is a prototype, these estimates may change as MagicLab releases production‑ready hardware and software.
Before You Start: Safety & Space Requirements
The MagicBot Z1 weighs 55 kg and can move at up to 9 km/h (2.5 m/s). A fall or unexpected motion can cause serious injury or property damage. Before connecting power, read every safety warning that ships with the robot and observe the following minimum precautions.
- Exclusion zone – Mark a 1.5 m boundary around the robot’s planned workspace with tape or cones. Nobody — including the operator — should be inside this zone during the first power‑on and calibration.
- Emergency stop – Keep the e‑stop remote in hand or clipped to your belt. On the robot itself, the power button (often a recessed red switch) can also cut all motor power in an emergency.
- Suspension – Hang the robot from a gantry or sturdy overhead point so its feet are just touching the floor. This prevents a fall if the actuators jerk during boot. A climbing‑grade harness looped through the back‑frame is a common solution.
- Floor surface – The MagicBot requires a flat, non‑slip indoor surface. Carpet with a dense, low‑pile backing is acceptable; uneven hardwood or tile with gaps can trip the foot sensors. Place a 2 m × 2 m anti‑fatigue mat under the work area.
- Fire‑safe charging – Charge the battery away from flammable materials. Never leave the robot unattended during charging.
- Prototype status – As the MagicBot is still a prototype, unexpected behaviour is more likely. If this is your first humanoid, consider having a second person present who can call for help.
Step 1 — Unboxing & Physical Inspection
- Place the crate on a level surface near your prepared work area.
- Cut the packing straps and lift the lid. Inside you will find foam‑cradled components: the robot body (often folded at the knees and hips), one or two battery packs, charging dock, e‑stop remote, and an accessory box.
- With a helper, carefully lift the robot from the crate using the designated lifting points (usually indicated by yellow arrows on the foam). Do not pull on the arms or head; use the torso frame.
- Inspect every limb joint for visible damage, loose cables, or shipping locks. The MagicBot’s 49°‑of‑freedom mechanics require that each joint moves smoothly by hand when unpowered. Apply gentle pressure; any grinding or clicking indicates a problem — contact MagicLab support before powering on.
- Remove any transport‑locking brackets that may be bolted to the feet or knees. Retain these bolts for future transport.
- Stand the robot on its feet (still unpowered) and check that it balances passively. If it tips immediately, the ankle‑spring preload may need adjustment — refer to the “Shipping Locks” card in the quick‑start guide.
> Image tip: Capture a photo of the robot standing in its crate with all foam removed. Use alt text: “MagicBot Z1 unboxed in home living room, showing 3 m clearance and suspension‑rig attachment points.”
Step 2 — Battery Installation & Charging
- The MagicBot uses a quick‑change lithium‑ion battery pack (capacity undisclosed, but the runtime is ~4–5 h).
- Slide the battery into the rear torso cavity until you hear a mechanical click. If resistance is felt, press the release tab and re‑seat; forcing can damage the connector.
- Connect the charging dock to mains power using the supplied heavy‑gauge cord. The dock’s LED will glow amber.
- Place the robot onto the dock — the MagicBot may support autonomous docking, but initially you will wheel the robot backwards until the charging contacts engage. A green LED on the dock and a battery icon on the robot’s status panel (if fitted) indicate charging.
- The battery takes approximately 2 hours to reach 80 % and another 1 h to 100 % (typical for high‑discharge packs). Leave it to charge fully before first use.
- Never use third‑party chargers; they can over‑voltage the pack and void the warranty.
> Accessory link: A spare MagicBot‑compatible charger is listed on BotMarket’s accessory page — check the “Accessories” tab for current availability.
Step 3 — Powering On & First Boot
- Verify the robot is suspended; the harness should be snug but not lifting the feet completely off the floor.
- Press and hold the main power button (located on the upper back or chest panel) for 3 seconds until the status LED cycles through blue → white.
- The robot’s onboard computer will boot Linux; this can take 60–90 seconds. During boot, all joints may twitch once as the CAN‑bus initialises — this is normal.
- Once boot is complete, the LED turns solid green and a short melody plays (if speaker enabled).
- Do not issue any movement commands yet. Confirm the e‑stop remote is linked: press the remote’s “stop” button; the robot should instantly sag into a relaxed state and the LED should flash red. Release the button and the robot may re‑energise after a 5‑second delay.
- If the robot fails to boot, check the battery level on the status panel. A full battery is required for first boot; if below 20 %, charge for 30 min and try again.
Step 4 — Network Configuration (Wi‑Fi vs Ethernet)
The MagicBot prototype uses a dual‑band Wi‑Fi adapter and a gigabit Ethernet port. For initial setup, Ethernet is strongly recommended because it avoids drop‑outs during firmware updates.
- Connect an Ethernet cable from the robot’s port (behind a weather‑proof flap on the lower back) to your laptop or router.
- The robot’s default network configuration is DHCP; it will obtain an IP address automatically. If your network does not have a DHCP server, the robot falls back to a link‑local address (169.254.x.x).
- On your laptop, open a terminal and scan for devices using
arp -aor a network discovery tool. Look for a hostname containing “magicbot” or “MB‑Z1”. - Once you identify the IP, SSH into the robot:
ssh root@<IP address>
The default password is typically printed on the quick‑start card or in the shipped documentation. Change it immediately after login. 5. For persistent wired development, assign a static IP to the robot’s Ethernet interface. Edit /etc/network/interfaces (Debian/Ubuntu) or use Network‑Manager, and configure an address on your LAN subnet. Ensure it does not conflict with your laptop’s static IP.
Wi‑Fi setup (post wired configuration) 1. On the robot, list available networks: ``bash nmcli dev wifi list ` 2. Connect to your home network: `bash nmcli dev wifi connect "YourSSID" password "YourPassword" ` 3. Test connectivity with ping 8.8.8.8`. If unreachable, check firewall rules.
| Connection | Recommended for | Speed | Reliability |
|---|---|---|---|
| Ethernet | First boot, firmware updates, SDK development | 1 Gbps | Highest |
| Wi‑Fi | Mobile‑app control, casual use | Up to 867 Mbps (5 GHz) | Good, but subject to interference |
Step 5 — App / Remote Control Binding
MagicLab provides a companion app (Android/iOS) that allows basic teleoperation, status monitoring, and firmware checks. The remote‑control panel is often a separate Bluetooth Low‑Energy (BLE) device.
- Download the “MagicBot Control” app from the Google Play Store or Apple App Store. (The exact name may differ; scan the QR code on the robot or in the quick‑start guide.)
- Enable BLE and location services on your phone.
- In the app, tap Add Robot. The app scans for BLE advertisements. When “MagicBot‑XXXX” appears, select it.
- Confirm pairing by pressing the button on the robot’s back (the LED blinks blue while discoverable).
- Once paired, the app displays battery level, joint temperatures, and a virtual joystick. Test the “Walk” command with the robot still suspended: it should gently move the legs in a stepping motion without shifting weight.
- If the physical e‑stop remote is not automatically linked, insert the USB dongle (if supplied) into a laptop and follow the pairing instructions in the manual. Keep the e‑stop remote within 5 m of the robot.
Step 6 — Firmware Update & Security Hardening
The MagicBot Z1 runs a custom Linux distribution with motor‑controller firmware on each actuator. Because the robot is a prototype, firmware updates are provided by MagicLab through a restricted portal.
- Check current firmware version
On the robot via SSH, run: ``bash cat /etc/magicbot/release ` The output will show version: a numeric string (e.g., 0.9.1‑beta`). Note this for the support ticket.
- Download the update – Log in to the MagicLab developer portal (credentials obtained when you signed the prototype agreement) and navigate to Downloads → MagicBot Z1. Download the latest firmware image (
.imgfile).
- Transfer the image to the robot using SCP:
scp firmware‑vX.X‑beta.img root@<robot‑ip>:/tmp/
- Apply the update – MagicLab typically provides an update script. Run:
chmod +x /tmp/update_firmware.sh
sudo /tmp/update_firmware.sh /tmp/firmware‑vX.X‑beta.img
The robot will reboot several times; do not interrupt power.
- Security hardening
- Immediately change the default SSH password using
passwd. - Disable password‑based SSH login and use key‑only authentication.
- If the robot has a BLE module for phone pairing, disable BLE advertising when not in use to reduce attack surface:
sudo systemctl stop magic‑ble‑service
sudo systemctl disable magic‑ble‑service
- Keep the e‑stop remote firmware up to date, as it may have its own firmware.
- Segment the robot onto a VLANed guest network to isolate it from your personal devices.
- Because the MagicBot is not a Unitree robot, there is no known CVE‑2025‑35027 (UniPwn) to address. However, applying the latest vendor updates is the strongest defence against any undisclosed vulnerabilities.
> Note: If you are not the original registered developer, contact MagicLab support to obtain firmware access. Unauthorised firmware modification voids the prototype evaluation agreement.
Step 7 — SDK / ROS2 Setup (Advanced)
MagicLab provides a C++/Python SDK and optional ROS2 packages for the Z1. The latest information suggests Ubuntu 22.04 with ROS2 Humble is the target environment, but check the release notes.
- Prerequisites – On your development laptop (recommended Ubuntu 22.04), install ROS2 Humble following the official instructions.
- Clone the MagicBot repository (accessible only with developer credentials):
git clone https://git.magiclab.cn/robotics/magicbot_sdk.git
cd magicbot_sdk
- Build the SDK
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/opt/magicbot
make -j$(nproc)
sudo make install
- Python bindings (if available) can be installed with:
pip3 install ./magicbot_py
- Network setup for ROS2 – The robot’s onboard computer publishes ROS topics. Set the
ROS_DOMAIN_IDto a common value (e.g., 42) on both devices, and ensure multicast is allowed. On your laptop, export:
export ROS_DOMAIN_ID=42
- Test the connection – On the robot, list topics:
ros2 topic list
You should see topics like /magicbot/joint_states and /magicbot/imu. Subscribe from your laptop with ros2 topic echo /magicbot/joint_states to verify data flow.
Important: Because the SDK is under active development, always refer to the README.md in the repository for the most current build instructions and dependencies. If you encounter a “channel factory error”, check that your laptop’s primary network interface is set to the same physical adapter (not a virtual one) and that multicast is enabled on your router.
Step 8 — Calibration & First Movement
Calibration must be performed with the robot suspended to prevent damage. This process initialises the 49 joints and sets the zero‑position for each actuator.
- Log into the robot via SSH and run the calibration script:
sudo magicbot_calibrate --all
The script cycles every joint through its full range of motion. Stay outside the exclusion zone. 2. Once complete, the robot’s status LED turns solid green, and the app displays “Calibrated OK”. 3. First stand – Slowly lower the gantry until the feet are flat on the floor. Open the app and press the “Stand” button (or send the command via SDK). The robot will lift itself to a neutral bipedal stance. Watch that both feet remain planted; if one foot lifts, abort and re‑calibrate. 4. First step – With the e‑stop in hand, use the app’s joystick to command a single forward step of 10 cm. Observe the weight transfer. If the step is smooth, increase to 20 cm, then 30 cm. 5. Walk test – Walk the robot forward 2 m and back. The MagicBot’s walking gait can reach 9 km/h, but for home safety, limit speed to 1 m/s via the app’s speed slider. 6. After the first successful walk, the robot is ready for load‑bearing tests (up to 10 kg payload), but always start with no load.
Defining Success: Minimum / Full / Advanced
| Tier | Definition |
|---|---|
| Minimum viable | Robot powers on, connects to the app, stands reliably in a neutral pose, and accepts basic teleoperation commands. |
| Full operational | Firmware is current, network is stable (Ethernet), calibration passes every joint, and the robot walks forward/backward consistently on command. |
| Advanced | SDK or ROS2 is installed, custom code can stream joint states and send position/velocity commands, and the robot can perform a simple autonomous task (e.g., follow a pre‑planned path). |
Common Setup Mistakes & Fixes
If your MagicBot isn’t behaving as expected, work through this decision tree.
1. Robot does not boot (no LED, no sound) Root: Battery not seated, battery voltage too low, or main fuse blown. Fix: Reseat battery until click. Charge for at least 30 min. Inspect the blade fuse (often near the battery connector); replace if blown (spare fuses may be in the accessory box).
2. Boots but immediately shuts down Root: Over‑current protection triggered due to a stuck joint or short in a sensor cable. Fix: Inspect all visible cables; gently rotate each unpowered joint. If a joint resists, do not force it — contact support.
3. Cannot SSH into the robot Root: Wrong IP, DHCP not assigned, or firewall blocking port 22. Fix: Connect directly via Ethernet with a crossover cable or through a switch. Use a network scanner. Try link‑local address if no DHCP server. Check that sshd is running by attaching a monitor and keyboard to the robot’s debug UART.
4. App cannot find the robot over BLE Root: BLE service not started, phone out of range, or app version mismatch. Fix: On the robot, run sudo systemctl start magic‑ble‑service. Ensure phone is within 3 m. Update the app to the latest version.
5. Robot fails calibration with “Joint N out of range” Root: Shipping lock still installed, sensor misread, or actuator fault. Fix: Remove all transport locks. Reboot and retry. If the same joint fails, run the joint‑specific test magicbot_calibrate --joint . If still failing, return the unit to MagicLab for service.
6. Robot stands but falls forward/backward immediately Root: Centre‑of‑mass offset from improper suspension‑release timing or foot‑spring preload set incorrectly. Fix: Re‑suspend, re‑calibrate, and lower more slowly. Check that the ankle‑spring preload collars match the values in the maintenance guide.
7. SDK cannot connect (no topics appear) Root: Incorrect ROS domain, DDS middleware mismatch, or network interface incorrect. Fix: Ensure ROS_DOMAIN_ID is set identically on robot and laptop. Use ros2 multicast send and receive to test. Check that your CycloneDDS config (if used) references the correct network interface.
8. High CPU temperature warning during long walks Root: Inadequate cooling (fan blocked, heatsink paste drying). Fix: Ensure the robot’s intake vents (usually on the chest sides) are not obstructed. Reduce walking speed. If the warning persists, schedule a cooling‑system service with MagicLab.
9. Wi‑Fi drops frequently causing disconnection Root: Poor signal, interference, or the robot’s antenna being shielded by the metal frame. Fix: Move router closer. Use an external USB Wi‑Fi adapter on the robot with a high‑gain antenna (if USB port available). Switch to Ethernet.
10. Robot moves a limb erratically on first command Root: Calibration offset not stored, or the e‑stop remote is interfering. Fix: Re‑calibrate and power‑cycle the robot. Keep the e‑stop remote away from the robot’s torso; some remotes use magnetically triggered reed switches that can affect nearby sensors.

Comments