Release notes
More
October 2026
Release Highlights
- Device Fault Logs: After connecting to Wuji Hand 2 or Wuji Glove, the SDK automatically logs faults when they occur or are resolved. No manual subscription is needed.
- ROS 2 Integration: New ROS 2 drivers for Wuji Hand 2 and Wuji Glove provide data publishing, launch configurations, visualization, and device scanning tools.
- Development Environments: Wuji SDK adds macOS support (Apple silicon, macOS 11.0 or later) and a Docker example for running the Python SDK on Linux.
- Recording and Offline Processing: The Wuji SDK C interface supports MCAP recording and offline processing of recorded Wuji Glove EMF poses and raw IMU data.
- Diagnostic Output: Wuji CLI changes some fields in the
wuji doctorJSON output and the diagnostic reports fromwuji logs export. Update scripts that parse these outputs to match the changes.
Breaking Changes

Wuji CLI: Diagnostic Results JSON Structure Changes
The structure of the --json and --jsonl output from wuji doctor has changed:
- Environment check results previously in
envmove tochecks. - Per-device check results previously in the
devicearray also move tochecks. - The
devicefield changes from an array to a string and no longer holds check results.
Scripts that parse diagnostic results must now read check results from checks. The doctor_diagnosis.json file in wuji logs export support bundles uses the same new structure.
New Features
Fault Logging and Diagnostics

- Wuji Hand 2 and Wuji Glove: After connecting, the SDK automatically logs currently reported faults and subsequent faults as they appear and clear, and periodically summarizes faults that remain active. Logs include the full error code, cause, and suggested action. No manual subscription is needed. At connection, Wuji Hand 2 also logs errors that were still active when it last powered off. Wuji Glove logs the error history from the current power-on session, including cleared errors. This feature requires firmware that supports error-code reporting: Wuji Hand 2 v2.13.0 or later, or Wuji Glove v1.0.4 or later.
- Wuji Glove, Wuji Hand 2, and Wuji SDK: Wuji Glove supports reporting faults such as IMU and EMF errors, and Wuji Hand 2 supports reporting joint errors. The new Python interface
wuji_sdk.describe_error(full_code)and C interfacewuji_describe_errorlook up the description, cause, and suggested action from a full error code. The Python interface also provides the corresponding fields in Chinese. - Wuji Hand 2: Adds startup-abort fault codes
0x2116–0x2119and0x2120–0x2122to help identify the stage and cause of a startup failure. Saved records persist after power is removed.
Device Information
- Wuji Glove: Adds a read-only
hw_versionresource for querying the hardware version.
ROS 2 Integration
The ROS 2 drivers currently support ROS 2 Lyrical on Ubuntu x86_64 and aarch64. Build and install the ROS 2 drivers from source. For instructions, see the ROS 2 integration guides for Wuji Hand 2.2 (Beta), Wuji Hand 2.1 (Beta), and Wuji Glove.

-
Wuji Hand 2: Adds the
wuji_hand2_driverROS 2 driver, which publishes joint states and joint diagnostics, accepts joint control commands, and provides services for enabling and disabling joints, clearing faults, emergency stops, setting current limits, and setting MIT parameters.Note: The driver does not automatically enable joints by default and provides no command timeout protection. Stopping joint commands does not make the driver automatically trigger an emergency stop or disable joints. The control program must explicitly issue a stop operation. -
Wuji Glove: Adds the data-only
wuji_glove_driverROS 2 driver, which publishes joint, pose, palm IMU, tactile, and point-cloud data. -
Wuji Hand 2 and Wuji Glove:
- Adds
wuji_msgswith the messages and services used by the Wuji Hand 2 and Wuji Glove drivers. - Adds
wuji_bringupwith launch files for the Wuji Hand 2.1 (Beta) and Wuji Hand 2.2 (Beta) model descriptions, RViz views, Wuji Glove launch files, status and wave demos for Wuji Hand 2, and a status demo for Wuji Glove. Hand 2 usesmodel_revisionto select the model:1selects Wuji Hand 2.1 (Beta) and is the default, and2selects Wuji Hand 2.2 (Beta). The launch files load only models without covers. - Adds
wuji_toolswithwuji_listfor device scanning. - Adds
wuji_sdk_vendor, which installs Wuji SDK C 2026.10.12 by default on x86_64 and aarch64 Linux.
- Adds
Cross-Platform and Container Deployment

-
Wuji SDK:
- Adds macOS support (Apple silicon, macOS 11.0 or later). The Python SDK provides prebuilt wheels that you install with
pip install wuji-sdk. The C SDK provideswuji-sdk-c-<version>-aarch64-macos.tar.gz, which includeslib/libwuji_sdk_c.dylibandinclude/wuji_sdk.h. macOS packages are provided alongside Linux and Android packages. - Adds a Docker example for running the Python SDK on Linux.
- Adds macOS support (Apple silicon, macOS 11.0 or later). The Python SDK provides prebuilt wheels that you install with
Data Recording
-
Wuji SDK:
- The C interface adds MCAP recording with compression, pause and resume, per-channel summaries, and status, quality, and alert callbacks.
- Python recording summaries add
channels, which includes each channel’s name, ID, and number of messages written, including channels that received no messages.
Offline Processing
- Wuji SDK: The C interface adds offline processing of Wuji Glove data, which computes joint angles, fingertip poses, hand skeletons, and fused IMU data from recorded EMF poses and raw IMU samples without connecting to a device.
Models and Resources
Wuji Description:
- Adds models with soft pads for both hands of Wuji Hand 2.1 (Beta) and Wuji Hand 2.2 (Beta) in their existing ROS 2 packages. URDF and MJCF filenames use the
_with_coversuffix, including{side}_with_cover-ros.urdf. USD assets are inusd/{side}_with_cover/, with entry fileswujihand2_1_cover.usdandwujihand2_2_cover.usd, respectively. Soft-pad model masses are provisional. The total hand model mass is 708.8 g with soft pads and 687.8 g without soft pads. Models with and without soft pads share the hardware STL files, and their USD assets use identical hardware geometry.
Changes in This Release
Wuji Hand 2 and Wuji Glove: Network Configuration Validation
- Data Port: The range is now
7400–65535, including7447. The discovery port50000cannot be used. Setting an invalid port returns an error and leaves the existing configuration unchanged. - Static IPv4: Devices validate static IP addresses and accept only valid unicast host addresses within a
/24subnet. Network, broadcast, loopback, link-local, multicast, and reserved addresses aren’t accepted. Wuji Glove keeps the stored configuration when it rejects an invalid address. Valid changes on Wuji Glove take effect after a reboot.
Improvements and Fixes
Error Handling and Device Diagnostics
-
Wuji SDK: Fixes parameter errors returned by Wuji Hand 2 running firmware v2.7.0 or later being misreported as internal errors. Python error messages start with
Invalid data:, and the C interface returnsWUJI_STATUS_ERR_INVALID_DATA. -
Wuji Hand 2:
- Fixes the
last_reset_reasonfield exported bywuji logs dumpincorrectly reporting0(unknown) after a controller restart. - Fixes address conflicts with normally functioning joints when a joint’s factory identity data is invalid. The status light indicates the fault.
- Fixes the
-
Wuji CLI: Fixes occasional crashes when
wuji pingexits.
Log Export
- Wuji CLI:
wuji logs exportincludes CLI operation logs by default.wuji doctorwrites diagnostic results to the operation log, truncating the recorded content if a single result exceeds 64 KiB.
Resource Access
- Wuji SDK: Fixes parameter read and write timeouts caused by occasional packet loss when Wuji Hand 2 and Wuji Glove connect over UDP.
- Wuji CLI: Fixes
wuji get,wuji set, andwuji subsometimes reporting success or sending invalid requests to a device when a resource doesn’t support the requested operation. They now report an error locally and exit with code 1.
Recording State Changes
- Wuji SDK: Python recording pause and resume calls wait for the state change to take effect before returning. Frames received during a pause aren’t replayed on resume. Previously, control calls returned after queuing the state change, which could allow pending frames to cross pause and resume boundaries.
Wuji Hand 2 Firmware Upgrade
- After a restart, the device validates the staged upgrade package again and stops the upgrade if validation fails, preventing corrupt firmware from being sent.
- A whole-hand upgrade stops if the package lacks firmware matching the device’s main controller, preventing a false success report after only the joints are upgraded.
- Fixes firmware upgrades getting stuck at the erase stage when no IMU is connected.
Usage Data Collection
- Wuji SDK: Fixes
WUJI_TELEMETRY_DISABLE=1stopping uploads while still collecting and storing data locally. When this variable is set before the program starts, the SDK doesn’t collect, store locally, or upload usage data.
Product Versions and Installation
| Product or Software | Version | Installation |
|---|---|---|
| Wuji Hand 2 Firmware | v2.13.1 | wuji upgrade |
| Wuji Glove Firmware | v1.0.4 | wuji upgrade |
| Wuji SDK | v2026.10.26 | Python: pip install --upgrade wuji-sdk C: GitHub Releases |
| Wuji CLI | v2026.10.26 | wuji update |
| ROS2 | v2026.10.26 | Build from the source in the GitHub Release |
| Wuji Description | v2026.10.26 | GitHub Releases |
Release Highlights
- Compatibility and migration: Wuji Description moves to Hand 2.1 and Hand 2.2 ROS 2 packages. Update resource paths, dependencies, and launch configurations.
- Runtime and operations: Wuji SDK and Wuji CLI Linux artifacts support Ubuntu 20.04 LTS and later on x86_64 and arm64. The Python SDK now supports Python 3.8 and later. Wuji CLI checks installed agent skills for expiration and warns when they are out of date. It also improves device connections, data subscriptions, and firmware upgrades.
- Status and diagnostics: The Wuji SDK for Wuji Hand 2 reads
kpandkdfor all 20 joints after connection. Communication diagnostics and firmware upgrade errors now provide more useful results. Starting with firmware v2.10.0, an upgrade stops early when a selected joint is offline and shows the device rejection reason.
Breaking Changes
Wuji Description Model Migration
- Wuji Description: The Beta 1 and Beta 2 packages, their
_with_mountvariants, and the full-hand STEP assemblies are removed. Use the Hand 2.1 and Hand 2.2 models rooted at the arm flange mount. Updatecolcon --packages-select,package://URIs, dependencies, and launch configurations towuji_hand2_1_descriptionorwuji_hand2_2_description.
New Features
Runtime and Version Support
- Wuji SDK and Wuji CLI: Python SDK, C SDK, and CLI Linux artifacts support Ubuntu 20.04 LTS (glibc 2.31) and later on x86_64 and arm64. The Python SDK now supports Python 3.8 and later.
- Wuji CLI: Added links to agent skills and documentation in
wuji --help, making Wuji CLI guidance easier for agents to find. Wuji CLI checks installed agent skills for expiration and warns on every command when a skill is out of date. Runningwuji updatealso updates the matching skills.
Joint Parameter Readback
- Wuji Hand 2: After a connection is established, the Wuji SDK for Wuji Hand 2 reads back
kpandkdfor all 20 joints once and writes them to the SDK log as one line in the formparam readback sn=<SN> path=mit_params thumb/S1 kp=… kd=… …. An offline joint is logged asoffline. If the readback fails, the SDK logs a warning and the connection remains active.
CLI Device Operations
- Wuji CLI: Wuji CLI now records commands, exit codes, durations, and errors. View them with
wuji logs list, or select them with--source cliwhen exporting logs.
Wuji Description Models and Resources
- Added the Hand 2.1 model at
hand2/hand2_1/body/as the standalone ROS 2 packagewuji_hand2_1_description, with left- and right-hand models and URDF, MuJoCo MJCF, and Isaac Sim USD assets. - Added the Hand 2.2 model at
hand2/hand2_2/body/as the standalone ROS 2 packagewuji_hand2_2_description. - Added palm mounting-interface STEP assemblies for each hand under the corresponding
attachment/directory. These files are outside the ROS 2 package root.
Changed
Firmware Parameters
- Wuji Hand 2 Firmware: For new or reset joint configurations, this release updates the default MIT impedance control
kdgain to 0.1 and useskp= 5.0. Firmware upgrades preserve previously saved joint parameters.
Improvements and Fixes
22 changes in 5 areas.
Device Connections and Action Examples
- Wuji SDK: Connecting to a device the SDK found on the network, or that you connect to by address, no longer fails when another program on the same machine, such as a DDS or ROS 2 stack, holds UDP port 7446. The SDK connects without peer discovery and logs a warning that other SDK processes cannot find and share that device on their own. A device reachable only through another SDK process still needs that port.
- Wuji Hand 2: Python
2.publish.pyand C1_control_motion.cnow wait until one diagnostics update reports all 20 joints as Enabled before commanding the hand. Previously, an update covering only online joints counted as the whole hand being ready, so an example could start commanding a hand with joints still disabled. - Wuji Hand 2: Python
opposition.pyand7.mit_sweep.py, together with Copposition.cand7_mit_sweep.c, now scan Wuji Hand 2 devices, list their serial numbers, and connect to the selected device. When multiple hands are found, Enter or closed standard input selects the first device. Previously, the examples could connect to the wrong device type or fail when multiple devices were found. - Wuji Hand 2: The real-time teleoperation examples (
1.teleop_real.pyand1_teleop_real.c) no longer make the hand jump at startup. They require all 20 joints to be online and enabled, read the current hand pose, and transition to the glove pose over about one second while reading glove data on every frame. - Wuji Glove: Right-hand devices now use the configured IP address.
- Wuji Glove: Left- and right-hand detection now handles inconsistent side-detection signals correctly.
Data Reception and Subscriptions
- Wuji SDK: Subscriptions now continue delivering new data after the SDK briefly falls behind. Previously, an internal buffer overflow could silently stop the subscription.
- Wuji Glove: Device data, including
emf_poses, continues without a one-second pause, dropped frames, orlaggedwarnings when other programs write heavily to the same disk. - Wuji Hand 2: The
joint_statesandjoint_diagnosticssubscriptions no longer drop frames or logVirtual subscription '...' lagged N messageswhen the host is busy. - Wuji Glove: Every point near the little-finger base in
tactile_point_cloudnow reports its actual pressure value. Previously, three points near the base reported-1, and the corresponding three tactile cells were missing. The point count stays unchanged. - Wuji Hand 2: For devices running firmware v2.6.0 or earlier that accept SDK connections on port 7447, a stream-rate request with no response now causes Python
Subscription.set_rate()to raiseWujiExceptionwithOperation timeout - device not responding, and Cwuji_sub_set_rate()to returnWUJI_STATUS_ERR_TIMEOUT. Previously, Python reported aWujiExceptionstarting withInternal error:, and C returnedWUJI_STATUS_ERR_INTERNAL. - Wuji Glove: The EMF stream resumes without a restart after a firmware upgrade fails or is rejected.
- Wuji Glove: Timestamped sensor subscriptions no longer use the device’s first power-on time in their first few frames.
- Wuji Glove: Invalid or rejected requests from another host to the data port no longer redirect subscription data to that host or cause frame loss for the original client.
Communication Diagnostics
- Wuji Hand 2: The
sdk_droppedfield in thejoint_diagnosticscommunication summary now includes frames dropped by the subscription forwarder, covering the forwarding stage that was previously omitted. - Wuji Hand 2:
joint_diagnostics.comm.e2e_lostno longer counts frames skipped byset_rate()as lost, so lowering the stream rate does not increase the lost-frame count.
Firmware Upgrades
- Wuji Hand 2: Starting with firmware v2.10.0, the SDK firmware upgrade stops before sending data when a selected joint is offline and lists the offline joints. If the hand rejects the upgrade target and returns a reason, the upgrade fails and shows that reason. Previously, the upgrade reported only a generic error, and firmware v2.6.0 and earlier could report a rejected upgrade as successful.
CLI Upgrades and Visualization
- Wuji CLI:
wuji upgradeshows progress during longer upgrades and displays the installed firmware version afterward. - Wuji CLI: When
wuji upgraderuns with--jsonor--jsonlwithout--yes, it returns the correct error code. - Wuji CLI: When a device rejects a raw
.binfirmware file,wuji upgradeno longer reports success. - Wuji CLI: Fixed
wuji update --skillshanging while updating agent skills. - Wuji CLI: Improved the initial scale of the Wuji Glove tactile display in
wuji vizand fixed the Wuji Glove TX model.
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji Hand 2 Firmware | v2.12.0 | wuji upgrade |
| Wuji Glove Firmware | v1.0.3 | wuji upgrade |
| Wuji SDK | v2026.10.12 | Python: pip install --upgrade wuji-sdkC: Download from GitHub Releases |
| Wuji CLI | v2026.10.12 | wuji update |
| Wuji Description | v2026.10.12 | Download from GitHub Releases |
September 2026
Breaking Changes
Connection Port and SDK API Migration
- Wuji Hand 2: The SDK connection port is now configurable — Python
hand.port(), Cwuji_hand_2_get_port()andwuji_hand_2_set_port()— and the default is 50001 instead of 7447. Applications that connect automatically through the SDK use the correct port automatically. Applications that connect to 7447 directly must change to 50001, and firewall rules that only allow 7447 need updating. Valid ports are 10000–65535, except the discovery port 50000, and a new port takes effect after the device restarts. - Wuji SDK: Python SDK public operations raise
WujiExceptionor one of its subclasses when a failure happens inside the SDK, so applications can catchWujiExceptionat the SDK boundary. Argument-type and overflow errors raised by the Python interpreter before the SDK call keep their built-in Python exception types. - Wuji Hand 2: Python
WujiHand2.joint_id_from_bus_node()and Cwuji_hand_2_joint_id_from_bus_node()have been removed. Using them to decode streamnidcould silently misassign joints. UseWujiHand2.nid_to_joint_index()andwuji_hand_2_nid_to_joint_index()to convertnidto the joint index used by command arrays. For the reverse conversion, useWujiHand2.joint_index_to_nid()andwuji_hand_2_joint_index_to_nid(). Invalid inputs raiseWujiExceptionin Python and returnWUJI_STATUS_ERR_INVALID_ARGin C. - Wuji Hand 2: The fingertip info calls that take a finger argument,
hand.get_fingertip_info(finger)andwuji_hand_2_get_fingertip_info(), have been removed. Each finger now uses its own read call, for example Pythonhand.fingertip_thumb_info().get()and Cwuji_hand_2_get_fingertip_thumb_info(dev, &out), and the other fingers use the correspondingindex,middle,ring, andpinkycalls. Python raisesAttributeErroron the old name, and C fails to link against the removed symbol. Struct layouts are unchanged.
New Features
Joint Feed-Forward Compensation
- Wuji Hand 2: The joint controller adds built-in feed-forward compensation, enabled by default. After upgrading to this firmware version with Wuji SDK v2026.9.22 or later, you can turn the compensation on or off. This feature only applies to Wuji Hand 2 units shipped from October 2026 onward.
Visualization and Support Tools
- Wuji CLI:
wuji vizsupports live Wuji Glove visualization. - Wuji CLI: Added the
wuji-cli-supportagent skill to collect fault details and prepare a support report with available attachments.
CLI Updates and Skills Sync
- Wuji CLI:
wuji update --checkshows the release notes of the latest version. After a successful binary upgrade,wuji updatesyncs the Wuji CLI agent skills for the matching version. A sync failure doesn’t affect the binary upgrade result.wuji update --skillssyncs skills for the current CLI version only.
Changes
Device Access Across Applications
- Wuji Hand 2: When a device is shared across applications through the SDK Bridge, once one application connects directly to the device, other applications can read device state and receive live updates. Only the directly connected application can write to the device.
Joint Error Information
- Wuji Hand 2: The machine-readable joint error information provides English descriptions, causes, and suggested actions by default. Error codes, names, and device behavior are unchanged.
Motion and Sensor Examples
- Wuji Hand 2: The fingertip examples in Python and C now skip a finger whose sensor info is temporarily unreadable and keep decoding the other fingers. They stop only when no finger has info. Info can be temporarily unreadable when no sensor is fitted, the sensor firmware is older, or collection hasn’t finished after power-on.
- Wuji SDK: The live teleoperation examples now use MIT impedance gains of
(kp, kd) = (5.0, 0.1)by default. The previous default was(3.0, 0.05).
Visualization and Tactile Zeroing
- Wuji CLI: Visualization and runtime tactile zeroing adapt to the connected hardware. Devices without tactile sensing show joint pose only, while tactile-equipped devices keep the tactile view.
Improvements and Fixes
Device Connections and Identification
- Wuji SDK: Fixed read and write timeouts when one application accesses multiple devices at the same time, device access failures across applications, and multi-application access failures on Linux hosts with IPv6 disabled.
- Wuji Hand 2: Fixed the new connection being dropped about two seconds after reconnecting right after a disconnect.
- Wuji Glove: Fixed a mismatch on right-hand devices between the configured IP address and the address actually in effect. Both hands now use the IP address as configured. Devices upgraded from versions earlier than 1.0.0 migrate their configuration automatically, and the effective IP address stays the same across the upgrade and when rolling back to earlier firmware.
- Wuji Glove: Fixed left/right hand detection for mixed signal states. A device whose two side-detection signals disagree was previously always reported as a left hand. Each case is now reported as the correct hand.
Data Recording and Diagnostics
- Wuji SDK: Fixed MCAP recording storing both the source event time and the host receive time as the receive time, which let transport latency skew timelines and cross-topic alignment. When a topic provides a source event time, both timestamps are now kept separately.
- Wuji Hand 2: Fixed
sdk_droppedinjoint_diagnosticsmissing SDK-internal frame drops. - Wuji Hand 2: Fixed the sensor coordinate frame identification in IMU samples. Samples now identify the frame from the hand’s side, so applications can interpret acceleration and angular velocity data.
- Wuji Hand 2: Fixed joints that fail to come online after power-on not triggering the offline warning. The hand-back status light now shows a yellow warning.
- Wuji Glove: Fixed timestamped sensor data subscriptions using device uptime in their first few frames. Subscriptions now carry the host-synchronized real time from the first frame.
Error Information and Log Exports
- Wuji SDK: Operations through the original handle after the device disconnects now raise
WujiExceptionwith a message that states the device is disconnected. Previously, the protocol session returnedInternal errorand topic subscriptions returnedResource not found. - Wuji Hand 2: Fixed the C function
wuji_hand_2_describe_errorleaving the previous result inWujiErrorInfowhen it returnsWUJI_STATUS_ERR_NOT_FOUND, including for error code0. Fields that cannot hold the full text stay empty instead of being truncated. - Wuji Hand 2: Fixed an issue where long lines in a flash-log export came back empty, or kept only their first few characters with no sign of truncation. Such a line now keeps its readable beginning and ends with
…. - Wuji CLI: Fixed
wuji logs dump / exportfailing withsession closedwhen run against multiple devices in one command. Each device’s log bundle can now be exported.
Motion Examples
- Wuji Hand 2: Fixed the opposition trajectory playback (
opposition) and MIT joint sweep (mit_sweep) examples jumping straight to a fixed zero pose on start. The Python and C examples now read the current joint pose first, ease to the trajectory start over about one second, and then run the fixed sequence. - Wuji Hand 2: Fixed the C opposition trajectory playback example printing the same generic message for every failure. It now reports the step that failed and shows the error message returned by the SDK. If no device is found, it prompts you to check power and network connections.
Firmware Upgrades
- Wuji Hand 2: Fixed the host that could stop responding and never finish the upgrade after the hand rebooted into the new firmware.
- Wuji Glove: Fixed an issue where the EMF data stream stopped permanently after a failed or rejected firmware upgrade and could only be recovered by restarting the device. The stream pauses while the upgrade runs and resumes on its own when the upgrade fails or is rejected, with no restart required.
CLI Installation and Updates
- Wuji CLI: Fixed the one-click installer falsely reporting
Failed to install NandPromptScript does not support global skill installation. Skills are now installed only for detected agents, and are copied to~/.agents/skillswhen no agent is available. - Wuji CLI: Fixed
wuji updateandwuji update --checkusing different messages for the same state. - Wuji CLI: Fixed the installer fetching skills from the default branch when
VERSIONpins a specific version. Skills are now installed from that version’s release tag, including runs that skip the CLI installation.
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji Hand 2 Firmware | v2.10.0 | Update via Wuji CLI |
| Wuji Glove Firmware | v1.0.2 | Update via Wuji CLI |
| Wuji SDK | v2026.9.22 | pip install --upgrade wuji-sdk |
| Wuji CLI | v2026.9.22 | wuji update or the install script |
August 2026
Breaking Changes
Calibration and User Data
-
Wuji CLI: Hand model calibration now uses
wuji calib hand-model. The removedwuji calib ikcommand has no compatibility alias. -
Wuji CLI:
wuji calib hand-modelevents under--jsonand--jsonlnow useschema_version: 2andcalibration: "hand_model".wuji user importuseslegacy_hand_model_ignoredanddefault_user_hand_model_disabledto identify why components were skipped.
New Features
Motion Control and Examples
- Wuji Hand 2: Added
wuji_hand_2_decode_joint_statusto decode Wuji Hand 2 joint status words into the four-stateext_state, anenabledconvenience flag, and position, velocity, and current limit flags. Applications no longer need to parse status-word bits.
Logs and Diagnostics
-
Wuji Hand 2: Added blocking Python
hand.export_flash_logs()and Cwuji_hand_2_export_flash_logs()to export device Flash history logs as JSONL. They write to~/.wuji/logs/by default and add a numeric suffix if a file name already exists. Firmware without saved Flash logs reports the export as unsupported. Firmware v2.6.0 and later supports simultaneous exports. When multiple programs export from the same device, the export either completes or reports that the device is busy, and the output directory contains only complete results. Earlier firmware can’t detect simultaneous exports, so export one at a time. -
Wuji Hand 2: Added
0x2115to the error catalog for motor phase-current imbalance. The current firmware observes this condition without raising an error or stopping the joint.
Calibration and User Data
- Wuji Glove: Added
wuji_glove_get_tactile_binary_sensitivityto the C SDK. It reads the contact sensitivity currently in effect for the connected Wuji Glove and pairs with the existing setter. It returns the default value of1.0until a sensitivity is set and clamps stored values to the runtime range of0.5–3.0.
Tactile Data and Sensors
- Wuji Hand 2: Fingertip sensor metadata now reports the total-force contact point and axis directions. Applications can use the information to calculate force and torque at the fingertip. Existing applications that do not use the new information continue to work unchanged.
Visualization and Interface
- Wuji CLI: Added
wuji vizlive visualization for viewing Wuji Hand 2 poses and fingertip tactile data.
Changes
Device Connections and Resource Access
- Wuji SDK: The examples now release the device on normal exit paths via
manager.disconnect_all()in afinallyblock. A connected device stays owned bySdkManageruntil you calldisconnect()ordisconnect_all(), or the process exits. Dropping its handle doesn’t disconnect it, so long-running programs should disconnect explicitly.
Logs and Diagnostics
- Wuji Hand 2: An active
joint_diagnosticssubscription now writes a readable SDK log when a joint error appears, changes, or clears. The log includes the hexadecimal code, name, description, cause, suggested action, and clear policy. A held error doesn’t repeat. PythonJointDiagnosticsEntryoutput now shows0x2102(Overcurrent), keeps zero as0x0000, and shows unknown codes as0xFFFF(Unknown).
Tactile Data and Sensors
-
Wuji Hand 2: Updated fingertip tactile examples.
-
Wuji Hand 2: Updated fingertip sensor resultant-force application-point and orientation examples.
-
Wuji Hand 2: Updated fingertip sensor mounting information.
Calibration and User Data
-
Wuji Glove: Updated hand model calibration terminology.
-
Wuji CLI:
wuji calib hand-modelnow provides clearer guidance, pose feedback, and result presentation. -
Wuji CLI:
wuji usernow provides a clearer, more consistent terminal experience for managing profiles and moving calibration data.
Motion Control and Examples
-
Wuji Retargeting: Pinch-gesture retargeting now provides improved thumb-to-fingertip contact in both the Python and C SDKs.
-
Wuji Hand 2: A corrupted encoder frame now raises a warning immediately. Persistent corruption stops the affected joint.
Other Improvements
- Wuji Hand 2: Improved system performance.
Firmware and Software Updates
- Wuji CLI:
wuji upgrade --filenow validates firmware files locally. Invalid files do not reach the device.
Installation and Runtime
- Wuji CLI: The one-click install script now installs agent skills to the user-global location for use across projects.
Improvements and Fixes
Device Connections and Resource Access
-
Wuji SDK: Reading an SDK parameter that the device defines but that has never been written now raises
Parameter not setinstead ofPath not found, which previously made a valid-but-unset parameter look like a nonexistent path.Path not foundis now reserved for paths that don’t exist. The C SDK returnsWUJI_STATUS_ERR_NOT_FOUNDfor both cases as before. Thewuji_last_error()message distinguishes them. -
Wuji SDK: Connecting to an address without a port, such as
192.168.1.110instead of192.168.1.110:7447, now says a port is required instead of reporting that direct USB path connection is unsupported.
Calibration and User Data
- Wuji SDK: Previewing or importing a user data file now stops up front when the file names a user the SDK can’t accept, and existing data stays untouched. The error message names the rejected user. Previously, preview could accept such a file and import could fail with an internal error.
Motion Control and Examples
-
Wuji Hand 2: Creating a joint handle with an index outside
0..=19now raisesValueErrorimmediately. Previously, out-of-range inputs produced a handle whose metadata could raisePanicExceptionor expose the invalid index. -
Wuji Hand 2: Fixed joints falsely reporting overcurrent and stopping during thumb-to-finger pinching.
Logs and Diagnostics
-
Wuji Hand 2:
describe_error()returns adict. Read it by key, as ininfo["severity"]. Type hints now name all eight keys. Previously, the documentation described an object with attributes, soinfo.severityraisedAttributeError. -
Wuji Hand 2: Fixed an issue that could cause the device to stop responding when reading Flash memory.
-
Wuji CLI:
wuji doctorno longer fails devices without a diagnostic recipe. A device with no matching diagnostic recipe, such as Wuji Hand 2, is now reported as skipped instead of failed, and the command exits with code0. Genuine connection or collection failures still report as failed and exit with code1. -
Wuji CLI:
wuji logs listandwuji logs exportnow support log directory names containing non-UTF-8 characters.
Other Improvements
- Wuji Hand 2, Wuji Glove Firmware, Wuji CLI: Fixed some known issues.
Data Streams and Time Sync
- Wuji Glove: Fused IMU orientation and wrist transforms now stay stable when device timestamps switch to synchronized time after connection. Previously, this switch could cause an orientation jump.
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v2026.8.31 | pip install --upgrade wuji-sdk |
| Wuji Hand 2 Firmware | v2.6.0 | Update via Wuji Studio |
| Wuji Glove Firmware | v0.12.0 | Update via Wuji Studio |
| Wuji CLI | v2026.8.31 | wuji update or the install script |
Breaking Changes
Firmware and Software Updates
- Wuji Glove, Wuji SDK: Removed the EMF pose rate divider—Python
glove.emf_poses_rate_divider(), Cwuji_glove_get_emf_poses_rate_divider/wuji_glove_set_emf_poses_rate_divider, and the matching examples. Upgrade the device firmware to v0.11.4 or later, then useset_rateon anemf_posessubscription. The setting resets when the last subscription closes or the device reconnects. Loweringemf_posesalso lowers the EMF input rate used for hand tracking.
Logs and Diagnostics
- Wuji CLI: Host environment diagnostics:
wuji doctornow checks host software versions, system info, and network interfaces before scanning for devices, and reports address-conflict issues found during the scan. BREAKING: under--json, the output is now organized by diagnosis layer —env(host environment checks) anddevice(device discovery listed as a generic entry withoutsn, plus per-device results) — replacing the old flatsystem/deviceslayout. Running with no device attached is now a normal exit (0 unless a host check fails) instead of an error. Scripts that read the old field names must migrate.
New Features
Firmware and Software Updates
- Wuji SDK: Added
Subscription.set_rate(frequency_hz)to lower a subscribed stream’s device push rate at runtime, in samples per second. Upgrade the device to firmware that supports stream rate control before using this method (Wuji Glove v0.11.4 or later, Wuji Hand 2 v2.3.0 or later). Pass 0 to restore the device default. The call returns the rate the device applies, which may be quantized. Supported onemf_poses,tactile,tactile_zones, andimu_raw/*(Wuji Glove) and onjoint_states,joint_diagnostics,imu, andfingertip/*/data(Wuji Hand 2). Derived streams—includinghand_joint_angles,hand_skeleton,tip_poses, andimu_data/*—follow their source rate and rejectset_rate. The setting affects every subscriber of the stream and resets to the device default when the last subscription to the stream is closed or the device reconnects. Examples:examples/python/wuji_glove/6.set_stream_rate.pyandexamples/c/wuji_glove/1_set_stream_rate.cfor the Wuji Glove, andexamples/python/wuji_hand_2/4.set_stream_rate.pyandexamples/c/wuji_hand_2/4_set_stream_rate.cfor the Wuji Hand 2.
Data Streams and Time Sync
-
Wuji SDK: C SDK: Added
wuji_sub_set_rate(sub, frequency_hz, out_actual_hz)on any subscription handle, matching the PythonSubscription.set_ratesemantics. Streams that do not support rate control returnWUJI_STATUS_ERR_UNSUPPORTED (-8)without sending a rate-control request to the device. -
Wuji Hand 2 Firmware: Added adjustable push rate for subscribed data streams: the host can now ask the device to send a stream more slowly, saving bandwidth and downstream processing on the host. The device applies a rate it supports and reports back the rate in effect. Adjustable streams are the real-time joint stream, the five fingertip tactile streams, and the IMU stream. Rates reset to full speed when the last subscriber of a stream goes away, and when the host disconnects or reconnects. Requires Wuji SDK v2026.8.17 or later.
-
Wuji Glove Firmware: Added adjustable push rate for subscribed data streams: the host can now ask the device to send a stream more slowly, saving bandwidth and downstream processing on the host. The device applies a rate it supports and reports back the rate in effect. Adjustable streams are the tactile frame, the tactile zones, the EMF tracking stream, and the six IMU streams. Rates reset to full speed when the stream is no longer in use or the device reconnects. Requires Wuji SDK v2026.8.17 or later.
Models and Mechanical Resources
-
Wuji Description: Added the Wuji Hand 2 (Beta 2) simulation models — the Beta 1 models plus one soft-pad link per fingertip, shipped for both hands as a no-mount robot model rooted at
{l,r}_wrist.- Fingertip soft pads: each pad (
{p}_{finger}_tip_sensor_frame) is fixed-welded onto the distal segment via{p}_{finger}_tip_sensor_frame_fixedand shown light blue against the silver body. Each pad carries its measured mass — 6.3 g for the thumb pad and 3.0 g for each of the other four fingertip pads — and the distal-segment masses were re-measured to match, dropping to 10.9 g for the thumb distal and 5.0 g for each other-finger distal. - Coordinate contract: unchanged from Beta 1 and verified — the same 20 revolute joints with identical integer unit axes, and zero-position fingertip spacing matched left/right within 0.56 mm. The five fingertip query sites (
{l,r}_{finger}_tip) carry over from Beta 1 unchanged and remain available as MJCF<site>elements in display group 3. - Formats: URDF (plus
package://wuji_hand2_beta2_descriptionROS variants), MuJoCo MJCF, layered Isaac Sim USD, and anatomically named STL meshes (31 per hand), plus a with-mount full-hand STEP CAD assembly per hand (hand2/hand2_beta2/body/step/wuji-hand2-description-{left,right}_beta2_with_mount_step.STEP) for mechanical integration. These STEP files are byte-identical to the Beta 1 assemblies and don’t yet include the fingertip soft pads, so use them for envelope and mounting-interface work and take the models underbody/as the reference for the pads.
- Fingertip soft pads: each pad (
-
Wuji Description: Added revision-aware model naming for the Wuji Hand 2 (Beta 2): robot/model names are
wujihand2-beta2-{side}for the no-mount model andwujihand2-beta2-{side}-mountfor the with-mount model, the USD entry point iswujihand2_beta2.usdwithwujihand2_beta2_{base,physics,robot,sensor}.usdsublayers, and the USD root prim iswujihand2_beta2_{side}— no more name collisions with Beta 1 assets. -
Wuji Description: Added the standalone ROS2 package
wuji_hand2_beta2_descriptionrooted athand2/hand2_beta2/body/(CMakeLists.txt+package.xml), with the Beta 2{left,right}-ros.urdfresolving meshes viapackage://wuji_hand2_beta2_description/meshes/.... The distinct package name (compared with Beta 1’swuji_hand2_description) lets both revisions coexist in one workspace, since their mesh sets differ. -
Wuji Description: Added palm mounting-interface CAD and dimensioned drawings for the Wuji Hand 2, one pair of files per hand under
hand2/hand2_beta1/attachment/andhand2/hand2_beta2/attachment/.- STEP assembly (
wuji-hand2-description-{left,right}-mount_beta{1,2}_step.STEP): the palm shell together with its wire harness, not the full hand. - A3 drawing (
wuji-hand2-description-{left,right}-mount_beta{1,2}.pdf): a single page dimensioning the threaded holes a custom arm-side adapter bolts into — one M3×0.5 fine-pitch 6H hole (thread depth > 5.5 mm, ⌀4 (0/+0.05) counterbore 2.35 ±0.03 deep) and two M4×0.5 fine-pitch 6H holes (thread depth > 4 mm, ⌀7 (0/+0.06) counterbore 1 mm deep), located by the 28.00 (0/−0.05) and 5.15 (+0.15/−0.05) reference dimensions. - Scope: use these when machining a custom arm-flange adapter or fixture. The models under
body/stay the reference for simulation. - Files: the left and right files are mirror images of each other, and the Beta 1 and Beta 2 files are byte-identical because the palm mounting interface did not change between the two revisions.
attachment/sits outside the ROS2 package root atbody/, socolcondoesn’t install it.
- STEP assembly (
-
Wuji Description: Added the with-mount variant of the Wuji Hand 2 for both revisions, which adds the arm-flange mount link (
{l,r}_mount, 69 g) as the model root with the wrist shell fixed-welded onto it via{l,r}_wrist_fixed.- Which to load: the with-mount model bolts the hand onto an arm, and the no-mount model applies when the wrist is the attachment point. Joint names, axes, limits, and actuators are identical between the variants, so one installed package per revision serves both and either can be loaded at any time.
- Layout: both variants ship side by side inside each revision’s
body/directory, told apart by a_with_mountfilename suffix —urdf/{left,right}_with_mount.urdf,urdf/{left,right}_with_mount-ros.urdf,mjcf/{left,right}_with_mount.xml, andusd/{left,right}_with_mount/. - Beta 2 (
hand2/hand2_beta2/body/): the ROS URDFs resolve viapackage://wuji_hand2_beta2_description/meshes/..., the same prefix the no-mount models use. The two variants share the 31 hand meshes inmeshes/{left,right}/byte for byte, and the with-mount variant adds only{l,r}_mount.STL, bringing that directory to 32 meshes per hand. - Beta 1 (
hand2/hand2_beta1/body/): the ROS URDFs resolve viapackage://wuji_hand2_description/meshes/..., the same prefix the no-mount models use, and the USD entry filename stayswujihand2.usd— only the containing directory differs. In the MJCF the wrist shell ({l,r}_wrist) is its own body under{l,r}_mountrather than fused into it, so the wrist flange frame stays addressable. All 26 hand meshes inmeshes/{left,right}/are shared byte for byte and the with-mount variant adds only{l,r}_mount.STL, bringing each directory to 27. The two variants stay kinematically equivalent: with the fixed mount offset taken out, fingertip poses agree to within 0.006 mm.
Logs and Diagnostics
-
Wuji CLI: Wuji logs dump: new subcommand collecting device-side diagnostic snapshots for Wuji Hand 2 devices — scans all devices by default or targets one via
--sn/--address/--handedness. It captures identity, fault/status, bus voltage and temperature, communication diagnostics, and Flash KV history as<sn>_<ts>_device.json+<sn>_<ts>_flash.jsonl. Field failures land in the snapshot’sfailureslist without aborting. The exit code is non-zero if any device failed. -
Wuji CLI: Device snapshots in support bundles:
wuji logs exportnow includes these device diagnostic snapshots and flash logs in the support bundle by default (underdevices/), with no extra flag needed.
Calibration and User Data
-
Wuji CLI: Hand model calibration recordings in support bundles:
wuji logs exportnow automatically includes hand model calibration runs from~/.wuji/calibration/recordings/that intersect the selected local-date range, including the manifest, the full recording, and the completed step recordings. -
Wuji CLI: Script-friendly JSON fields: Added
missing_model_filestowuji user show --jsonand adetailfield on skipped component rows (reason:incomplete_model,not_in_bundle, ornot_declared_in_manifest).
Changes
Device Connections and Resource Access
- Wuji SDK:
device.get()/manager.get()now raiseWujiExceptionfor a nonexistent parameter path. Previously they silently returnedNone.
Logs and Diagnostics
-
Wuji Hand 2, Wuji SDK: Printing a
JointDiagnosticsEntrynow showserror_code_currentin hexadecimal (0x2103) instead of decimal (8451), matching how error codes are written in the documentation.error_code().get()still returns an integer — format it asf"0x{code:04X}"if you print it directly. -
Wuji CLI: Structured JSON errors: Under
--json/--jsonl, most command errors now print structured JSON to stderr, keeping stdout clean for scripts. -
Wuji CLI: Colored error labels: Errors in human mode print a red
error:label (rustc style), matching the existingwarning:label.
Firmware and Software Updates
- Wuji Hand 2, Wuji SDK: On device firmware v2.4.0 and later, fingertip per-point force arrives normalized to the sensor’s full scale — normal axis 0 to 1, tangential axes -1 to 1, clamped beyond that. Firmware before v2.4.0 keeps reporting each point in newtons. The aggregate force and the temperature reading are in newtons and Celsius on both. Read
scaleandunitfrominfo.formatrather than assuming either convention, and re-fetch the info after a firmware upgrade so your decoder picks up the new scale.
Calibration and User Data
- Wuji Retargeting: The live teleoperation examples (
examples/python/retargeting/1.teleop_real.pyandexamples/c/retargeting/1_teleop_real.c) now list the SDK users at startup and let you pick which one to teleoperate under, instead of always switching to the default user. Press Enter to keep the user you are already on, pick the default user to run on the built-in hand URDF, or pick a named user to teleoperate on that user’s calibrated hand model — a named user that has not been calibrated yet also runs on the built-in URDF. The previously selected user is still restored on exit.
Tactile Data and Sensors
- Wuji Hand 2 Firmware: Changed fingertip per-point force reporting from absolute force readings to normalized values, so readings are directly comparable across fingers and sensor types without knowing each sensor’s force range.
- Each sensing point reports its normal axis from 0 to 1 and its two tangential axes from -1 to 1, measured against a full-scale reference. Anything beyond full scale is clamped to the limit.
- The three-axis resultant force and the temperature reading are unchanged.
- The sensor metadata still describes the scale and the unit that apply to every reading, so applications that decode from the metadata pick up the new range automatically.
Motion Control and Examples
- Wuji Retargeting: Updated the
wuji-descriptionhand model submodule tov2026.8.3and pointed the Wuji Hand 2 example configs (adaptive_analytical_wuji_glove_wuji_hand_2_{left,right}.yaml) at the newhand2/hand2_beta1/body/asset layout. Retunedmediapipe_rotationfor the updated model orientation (leftx = 180, righty = 180, bothz = -90). No change to IK or simulation behavior.
Models and Mechanical Resources
-
Wuji Description: Changed the Wuji Hand 2 (Beta 1) right hand to a new mechanical CAD export. Kinematics and dynamics are unchanged, and the left hand is byte-identical to the previous release.
- Motion and mass: the same 20 revolute joints with identical integer unit axes, zero-position fingertip sites moving at most 0.0022 mm, body origins at most 0.0018 mm, and per-body and total mass identical to the digit (0.6207 kg for the no-mount model).
- Thumb frames: the no-mount export now models
r_thumb_middlein the same frame as the with-mount export —r_thumb_mcpandr_thumb_ipboth carry zero roll, where the previous export applied +6.3186° on the first and took it back off on the second. Both variants sharer_thumb_middle.STLbyte for byte, andmeshes/right/stays symmetric withmeshes/left/. - Meshes:
r_thumb_middle.STLis the only right-hand mesh this export changes. Every other mesh, including all distal and tip meshes, is byte-identical to the previous release, so MJCF collision geometry and rendering are untouched.
-
Wuji Description: Changed the Wuji Hand 2 (Beta 2) MJCF body tree so that each fingertip soft pad is its own body (
{p}_{finger}_tip_sensor_frame) instead of being fused into the distal segment.- Why: MuJoCo’s URDF compiler merges zero-DOF welded links by default, which left the pads with no body of their own — no place to attach a
force/torquesensor, no body-level pose query, and a body list that disagreed with the URDF and USD. - Masses: each pad now carries its own mass and inertia (thumb 6.3 g, other fingers 3.0 g) and the distal segments carry only theirs (thumb 10.9 g, others 5.0 g). The pads’ collision geometry is unchanged and still participates in contact exactly as before.
- Sites: the empty
{p}_{finger}_tipframe links stay merged and remain available as MJCF<site>elements, which is the idiomatic MuJoCo form for a queryable frame. - Kinematics and dynamics: unchanged — total mass, fingertip site poses, whole-hand center of mass, composite inertia, and contact counts all match the previous models to within floating-point noise. The same applies to the with-mount variant, where the wrist shell (
{l,r}_wrist) is likewise its own body under{l,r}_mountrather than fused into it, so the wrist flange frame is addressable.
- Why: MuJoCo’s URDF compiler merges zero-DOF welded links by default, which left the pads with no body of their own — no place to attach a
Improvements and Fixes
Data Streams and Time Sync
-
Wuji SDK: C SDK: Calling an operation that a resource does not permit, such as reading a write-only resource or subscribing to a publish-only topic, now returns
WUJI_STATUS_ERR_UNSUPPORTEDinstead ofWUJI_STATUS_ERR_INTERNAL. -
Wuji SDK: Python and C SDKs: After a device disconnects or is taken over by another host, Python
recv()andrecv_async()now raiseWujiExceptionimmediately, and C subscription callbacks terminate without delivering buffered frames. Previously, Python could return buffered frames orNone, and C callbacks could deliver buffered frames before terminating. -
Wuji Hand: Disconnecting now releases the USB device even when a joint-state subscription is still open. The same process can reconnect immediately without first closing the subscription or deleting the hand object.
-
Wuji Glove Firmware: Fixed Palm IMU frame sequence numbers skipping values on a healthy link.
FrameHeader.seqnow increases exactly by one for every published frame, so a gap in the sequence again means real frame loss. Previously the counter could report a 0.35% phantom frame loss.
Device Connections and Resource Access
-
Wuji Hand: Direct hand methods (
read_joint_state(),enable()/disable(),clear_all_faults(), effort-limit and diagnostics accessors, opening a realtime controller) now fail with a disconnect error afterdisconnect()instead of continuing to operate the device. Python raisesWujiException. C returnsWUJI_STATUS_ERR_DISCONNECTED. -
Wuji Studio: Fixed device connection issues.
-
Wuji CLI: Unknown resource paths:
wuji getwith an unknown resource path now errors clearly instead of silently returning success without a value.
Tactile Data and Sensors
-
Wuji Hand 2 Firmware: Fixed fingertip force readings not responding below 2 N.
-
Wuji Hand 2 Firmware: Fixed fingertips not returning to a clean zero reading after contact is released.
-
Wuji Hand 2 Firmware: Improved reading consistency across the sensors on the thumb fingertip.
Firmware and Software Updates
- Wuji Studio: Fixed an issue where incorrect firmware appeared in the firmware list during updates.
Calibration and User Data
-
Wuji CLI: Incomplete tactile models reported:
wuji user export,import,import --preview, andshownow list an incomplete tactile model (missingcontact.safetensors,contact.npz, orcontact.json) as skipped, naming the device SN and missing files, instead of dropping it silently. Exporting only a partial model no longer claims there is no calibration data — the error names the device and files and points towuji calib tactile. -
Wuji CLI:
--jsonalways reportscurrent_user:wuji user create/switch/rename/deleteunder--jsonnow always report the resultingcurrent_user(renamealso reportsprevious_name), so scripts don’t need a follow-upuser list.
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v2026.8.17 | pip install --upgrade wuji-sdk |
| Wuji Hand 2 Firmware | v2.4.0 | Update via Wuji Studio |
| Wuji Studio | v2026.8.17 | Download |
| Wuji Retargeting | v2026.8.17 | Download |
| Wuji Description | v2026.8.14 | Download |
| Wuji Glove Firmware | v0.11.4 | Update via Wuji Studio |
| Wuji CLI | v2026.8.17 | wuji update or the install script |
Breaking Changes
Logs and Diagnostics
- Wuji Hand 2, Wuji SDK: The joint diagnostics structs gained new fields, so their C ABI changed. Applications that use
WujiJointDiagnosticsEntryorWujiJointDiagnosticsFramemust be recompiled against the new header before linking the new library — linking new against old will read and write past the end of the old structs. Existing fields keep their meaning and order, and no source changes are needed. The added fields carry the per-joint bus communication quality and the frame-level communication summary described above.
Firmware and Software Updates
- Wuji CLI: Unified device type display names to lowercase snake_case.
wuji upgrade --typenow requires snake_case values (e.g.wuji_gloveinstead of"Wuji Glove"). Affectsping’s Device Type column,doctorreport headers,upgrade --checkoutput, help examples, and all documentation.
New Features
Logs and Diagnostics
-
Wuji Hand 2, Wuji SDK: The
joint_diagnosticsstream now carries built-in communication health — each joint reports its bus response rate and timeout count, and every frame includes a summary with end-to-end (Ethernet) stream loss, request retry/timeout counters, and the fingertip tactile online bitmap. The SDK maintains all of it automatically in the background, so no polling is required. -
Wuji Hand 2 Firmware: Added warning code
0x0015: abnormal motor parameters -
Wuji CLI: Logging:
wuji logsprovides a command group (path,list,export) for log directory discovery, file listing, and support-bundle export. It collects host-side logs (from the SDK, Studio, and similar tools) into a bundle you can send with your device SN to HumansX support (authorized distributor in Japan).
Calibration and User Data
-
Wuji Glove, Wuji SDK: Added guided tactile calibration — record prompted hand motions to train a per-glove contact model for real-time contact detection (
tactile_binary). Python:glove.calibrate_tactile()/glove.calibrate_tactile_blocking(). C: blocking guided flow with pose-prompt callbacks.Models load automatically. Training requires a
model-exportbuild — see the motion guide. -
Wuji Glove, Wuji SDK: C SDK: Added
wuji_glove_set_tactile_binary_sensitivityfor standalonetactile_binaryobservation tools. It changes the SDK-local contact sensitivity for the connected glove and rejects non-finite or non-positive values. -
Wuji Glove, Wuji SDK: C SDK: Added the runnable user-management example
examples/c/wuji_glove/3_user_management.cfor inspecting the current SDK user, creating or updating named users, and switching users before calibration. -
Wuji Glove, Wuji SDK: Added
tactile_residualobservation examples — the continuous signed signal behindtactile_binary, where you set your own contact threshold instead of using a built-in one. Python:glove.tactile_residual(), C:wuji_glove_subscribe_tactile_residualtyped callback. Calibrate the glove first. -
Wuji CLI: Tactile calibration:
wuji calib tactilecollects, trains, verifies, and installs a contact model for Wuji Glove, with a--non-interactivemode for hands-off runs. -
Wuji CLI: Hand model calibration:
wuji calib hand-model(shipped aswuji calib ik, since renamed) guides device selection, live pose, and reference images, then saves and hot-reloads the completed model for the active profile. It builds a hand model that matches your physical hand, so pinches, four-finger bends, and other gestures produce expected output on your Wuji Glove. -
Wuji CLI: User profiles:
wuji usermanages calibration profiles for Wuji Glove, creating, describing, switching, listing, showing, renaming, and deleting profiles, and importing or exporting their IK and tactile calibration data. Results are stored per profile and per hand, so gloves on the same hand share one result under the same profile. -
Wuji CLI: Agent skills: new agent skills were added to cover each of the commands above — profile management, calibration, and logs.
Firmware and Software Updates
-
Wuji Hand 2 Firmware: Added a status light on the hand’s back logo that shows the device state at a glance — powering up, ready, running, updating firmware, and warning or fault conditions. See the status light guide
-
Wuji Hand 2 support:
wuji upgradesupports firmware upgrades on Wuji Hand 2 with tactile sensors.
Models and Mechanical Resources
- Wuji Description: Added
glove/attachment/Pico-controller-attachment.STEP, a STEP AP214 CAD assembly for mounting a PICO 4 Ultra controller on the Wuji Glove. It joins the existing Wuji Glove mounting interface and PICO tracker adapter in the same directory.
Changes
Device Connections and Resource Access
- Wuji SDK: C SDK: The Linux x86_64 and aarch64 (gnu) tarballs now ship one library file,
libwuji_sdk_c.so. Wuji Hand support no longer needs thelibwujihandcpp.sothat earlier tarballs bundled beside it, andlibstdc++.so.6andlibusb-1.0.so.0are no longer runtime dependencies. The C API and link line are unchanged, so existing applications keep working without a rebuild. If you deployedlibwujihandcpp.sofrom an earlier tarball, you can delete it — the SDK doesn’t load it anymore.
Calibration and User Data
-
Wuji Glove, Wuji SDK: The C hand model calibration example is now
examples/c/wuji_glove/4_user_calibration.c(renamed from3_user_calibration.c) and calibrates the SDK user you are already on instead of creating or switching one — use the new3_user_management.cexample first if you need to create or switch users. It also gained a--blockingmode, which runs calibration to completion without the cooperative Ctrl+C cancellation the default asynchronous path offers. -
Wuji Retargeting: Retuned the
mediapipe_rotationbias in the Wuji Glove example configs (adaptive_analytical_wuji_glove_{left,right}.yamlandadaptive_analytical_wuji_glove_wuji_hand_2_{left,right}.yaml) for the new per-serial calibration. The manualwrist_offset_cm/thumb_offset_cmstay disabled because the SDK applies a per-serial calibrated URDF.
Motion Control and Examples
- Wuji Hand:
RealtimeControllercan now be shared across Python threads — for example a writer thread streaming targets while a reader thread polls actual positions — without any locking. Previously, touching the controller from a second thread raised an error.
Improvements and Fixes
Device Connections and Resource Access
-
Wuji SDK: Device scanning no longer hangs indefinitely in the rare case where a network peer disappears during discovery. The network discovery step is now time-bounded, so scanning always returns within a few seconds with the devices found so far. Covers both the Python SDK and the C SDK.
-
Wuji SDK: Network device discovery now works on Linux hosts with multiple network interfaces or IP addresses when the host’s primary IP address is not on the device’s subnet — previously scanning on such hosts could permanently find no devices. Covers both the Python SDK and the C SDK.
-
Wuji Hand 2, Wuji SDK: The SDK no longer binds a fixed local network port when connecting a hand. The local port is now assigned automatically by the operating system, so the SDK will not conflict with ports used by your own applications.
-
Wuji Hand: Connecting to a hand that isn’t ready no longer crashes your application — it now fails with a catchable error that names any joint that didn’t respond. Covers both the Python SDK and the C SDK.
-
Wuji Studio: Device connection: Connecting a Wuji Hand 2 no longer falsely reports “read-only mode”.
Motion Control and Examples
-
Wuji Hand 2, Wuji SDK: Setting
effort_limitto a value the device rejects (e.g. above the current ceiling) now raises aValueErrorinstead of a generic error. The device keeps its previous limit. -
Wuji Retargeting: Fixed
teleop_real.pycrashing at startup withAttributeErroron the Wuji Hand 2 (network) backend after the Wuji SDK 2026.7.1 resource-API redesign. Control behavior is unchanged. Requires Wuji SDK ≥ 2026.7.1 and matching firmware.
Models and Mechanical Resources
- Wuji Glove, Wuji SDK: EMF finger poses now use the selected hand URDF to reject unreachable mirrored positions, reducing incorrect position reversals caused by transient interference.
Tactile Data and Sensors
-
Wuji Hand: Physically unplugging the tactile glove at runtime is now detected.
is_tactile_attached()returnsfalse, the tactile status stream reportsNotPresent(state 0) typically within 200 ms, and other tactile reads return a clear “tactile not present” error — previously they all kept reporting a healthy, attached glove indefinitely and only the frame age hinted at the loss. The hand itself is unaffected and keeps working. Re-attaching the glove still requires reconnecting the hand. Applies to both the Python SDK and the C SDK (wuji_hand_is_tactile_attached). -
Wuji Hand: C SDK: Wuji Hand tactile-glove calls no longer crash the process when the glove is missing or faulty — they return an error status instead (details via
wuji_last_error()).
Other Improvements
- Wuji Hand 2 Firmware: Fixed some known issues
Firmware and Software Updates
- Wuji Studio: Firmware upgrade: Fixed successful upgrades occasionally being reported as failed.
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v2026.8.3 | pip install --upgrade wuji-sdk |
| Wuji Hand 2 Firmware | v2.2.3 | Update via Wuji Studio |
| Wuji Studio | v2026.8.3 | Click to download |
| Wuji Retargeting | v2026.8.3 | Click to download |
| Wuji Description | v2026.8.3 | Click to download |
| Wuji CLI | v2026.8.3 | wuji update or the install script |
July 2026
Breaking Changes
Models and Mechanical Resources
- Wuji Description: Removed the previous Wuji Hand 2 (Beta) model revision rooted at
{l,r}_base_link, along with its structural STEP assemblies and arm-flange adapter mount—it is superseded by the recalibrated Wuji Hand 2 (Beta 1) revision.
New Features
Models and Mechanical Resources
-
Wuji Description: Added the Wuji Hand 2 (Beta 1) delivery, the first revision recalibrated under the new coordinate-system rules, with the coordinate conventions fixed from this revision on—integer unit joint axes, anatomical link/joint naming (for example
r_thumb_cmc_flex), the{l,r}_wristroot link, and the actuator naming scheme ({l,r}_{THJ|FFJ|MFJ|RFJ|LFJ}{0-3}, J0 = flexion … J3 = DIP)—later revisions stay compatible and only update physical parameters and geometry details, and each hand has 20 actuated revolute joints (5 fingers × 4 joints). -
Wuji Description: Added Wuji Hand 2 (Beta 1) left- and right-hand models: URDF with relative mesh paths plus a ROS variant using
package://wuji_hand2_descriptionpaths, MuJoCo MJCF with collision geometry as the convex hull of each link mesh, layered Isaac Sim USD assets whose drive gains hold the pose on bare Play, and anatomically named STL meshes—the kp/kv drive gains are carried over from the Wuji Hand platform calibration and will be updated once system identification on Wuji Hand 2 hardware is complete. -
Wuji Description: Added full-hand STEP CAD assemblies (left and right) for mechanical integration and fixture design.
-
Wuji Description: Added the standalone ROS2 package
wuji_hand2_description, so the Wuji Hand 2 (Beta 1) ROS URDFs resolve their meshes independently of the Wuji Handwuji_descriptionpackage. -
Wuji Description: Added five fingertip query sites per hand (
{l,r}_{finger}_tip, display group 3) for grasp-point queries and fingertip trajectory evaluation.
Changes
Models and Mechanical Resources
- Wuji Description: Changed the Wuji Hand 2 (Beta 1) collision policy: every link now participates in collision with only 10 assembly-overlap pairs excluded (each finger’s proximal and proximal_abd against the wrist), inter-finger and fingertip–palm contacts stay live, display layers are group 1 visual (silver), group 2 collision (translucent light purple), and group 3 fingertip sites, and the fingertip soft pads ship with the package but are not yet attached as collision geometry—fingertip contact is carried by the distal-segment geometry, so the contact point sits slightly off the real finger pad.
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji Description | v2026.7.23 | Download |
Breaking Changes
Motion Control and Examples
- Wuji Retargeting:
RetargetSessionandHandModelnow live at the package top level and thewuji_sdk.retargetingsubmodule is removed (breaking change, Python) — update imports tofrom wuji_sdk import RetargetSession, HandModel
New Features
Calibration and User Data
-
Wuji Hand 2, Wuji SDK: First official release of fingertip tactile sensing: subscribe to self-describing per-finger sensor streams (
FingertipSensorInfometadata describes how to decode eachFingertipSensorDataframe — see the3.fingertip_typed.pyexample), recalibrate all five fingertips to a fresh zero baseline withhand.tactile_calibrate()(Python) /wuji_hand_2_tactile_calibrate(dev)(C) while keeping the sensor surfaces unloaded, and query each sensor’s model and calibration state withhand.tactile_status(finger)to confirm a recalibration has finished -
Wuji Hand 2 Firmware: Query tactile sensor status (model and calibration status)
-
Wuji Hand 2 Firmware: Recalibrate the fingertip tactile sensors at runtime, resetting all five fingertips to a fresh zero baseline (triggered through the SDK’s
tactile_calibrate)
Motion Control and Examples
- Wuji Retargeting: Added the hand retargeting API (
wuji_retarget_session_create/_step/_reset/_free) that maps 21 hand keypoints (MediaPipe order) to 20 joint angles in firmware order, matching the PythonRetargetSession, with degenerate or invalid keypoint frames returning the newWUJI_STATUS_ERR_ALGORITHMstatus and details fromwuji_last_error()
Data Streams and Time Sync
- Wuji Hand 2 Firmware: Per-finger tactile data streams with the frame layout defined by self-describing sensor metadata — the host fetches the metadata first, then decodes the stream against it
Changes
Motion Control and Examples
-
Wuji Retargeting:
RetargetSessionnow works out of the box without the[retarget]extra and with lower per-step latency —numpyis still used for keypoint/qpos arrays -
Wuji Retargeting: Refined retargeting output with improved thumb articulation — joint angles for identical inputs may differ from previous releases
-
Wuji Hand 2 Firmware: An enabled joint that loses communication with the main controller now stops the motor and reports a fault instead of continuing on the last received command, and re-enabling requires an explicit host command
Other Improvements
- Wuji Hand 2 Firmware: Improved encoder health monitoring: high-speed operation no longer triggers spurious encoder warnings, and genuine encoder link degradation is detected earlier and more reliably
Improvements and Fixes
Firmware and Software Updates
- Wuji Hand 2, Wuji SDK: Firmware upgrade failures now report the detailed error (specific reason, error code, and any failed nodes) instead of a generic “Unknown error”
Data Streams and Time Sync
- Wuji Hand 2 Firmware: Fixed real-time stream timestamps gradually drifting from host time and failing to realign after reconnecting the SDK while the device stays powered on
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v2026.7.21 | pip install --upgrade wuji-sdk |
| Wuji Hand 2 Firmware | v2.1.0 | Update via Wuji Studio |
Improvements and Fixes
Installation and Runtime
- Wuji CLI: Fixed the install script exiting before it installed the agent skills
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji CLI | v2026.7.15 | wuji update or the install script |
Breaking Changes
Data Streams and Time Sync
-
Wuji SDK:
WujiConnectOptionschanged layout to match PythonConnectOptionsfor bridge and background time-sync settings. Rebuild C applications against the updatedwuji_sdk.h. Usewuji_connect_options_default()before overriding fields when passing non-NULL options towuji_connect, or passopts_or_null = NULLto keep default connection behavior -
Wuji Hand: The joint-state stream is now
hand.joint_states()(washand.joint_state()), and the frame class isHandJointStates(wasHandJointState), matching Wuji Hand 2 and the ROS/joint_statesconvention
Other Improvements
-
Wuji SDK: Removed the unused
wuji_glove_subscribe_tactile_zones_cache() -
Wuji Hand 2 Firmware: This firmware targets Beta 2 hardware. Beta 1 hardware will not receive this update — the firmware list only offers packages that match your device hardware
Motion Control and Examples
-
Wuji Hand: The joint-command publisher now takes an array of structs.
JointCommandPublisher.send(...)changed from three parallel listssend(positions, velocities, efforts)to a single list of per-joint commandssend(joints), where each entry is aJointCommand(position, velocity, effort)— pass exactly 20. The oldpublish(...)alias was removed. This matches Wuji Hand 2 exactly -
Wuji Hand: The joint-command publisher is now opened via
hand.joint_command().publish(). The resource accessor was renamed from.publisher()to.publish(), and the shortcut methodhand.joint_command_publisher()was removed. The returnedJointCommandPublisher(send(...)/close()) is unchanged
Tactile Data and Sensors
- Wuji Hand: Tactile-glove classes now carry a
TactileGloveprefix so they cannot be confused with the Wuji Glove’s generic tactile streams:TactileStatus→TactileGloveStatus,TactileDiagnostics→TactileGloveDiagnostics,TactileDeviceInfo→TactileGloveDeviceInfo, and the sub-module handleWujiTactile→WujiTactileGlove. Accessors and wire formats are unchanged — update type references andisinstancechecks to the new class names
Device Connections and Resource Access
-
Wuji Hand 2, Wuji SDK:
disconnect()now fully releases the hand — after disconnecting, the hand is immediately available to any other application or machine, exactly as if your application had exited. Previously the hand could remain held by the application until it exited -
Wuji Hand 2, Wuji SDK: Fixed a bug where applications that repeatedly connect and disconnect could see each new connection take longer than the last. Connections now stay consistently fast, no matter how long the application has been running
Calibration and User Data
-
Wuji Glove, Wuji SDK: Hand calibration now belongs to the SDK user and hand side instead of an individual glove. Swapping to another glove of the same side no longer requires recalibration. Calibration recorded by older SDK versions is not loaded anymore. Upgrade firmware and the SDK together, then recalibrate both hands under your user profile.
-
Wuji Glove, Wuji SDK: The
hand_profilecalibration option is deprecated and ignored (passing it emits aDeprecationWarning). The calibration result was simplified tohandednessplus a singlecalibrated_urdfpath. Thecalibration.hand_profileandcalibration.hand_model_paths.*parameters were removed: setting them now fails, and values left by older versions are ignored -
Wuji Glove, Wuji SDK: The tactile contact model is now located automatically from the current SDK user and device serial number, the same convention as the calibrated hand model, and stored under the SDK’s own tactile directory. The
algorithms.tactile_binary.model_dirparameter was removed: setting it now fails, and values left by older versions are ignored. Integrations that set this parameter should stop setting it, as the model is resolved automatically once you select the SDK user -
Wuji Glove, Wuji SDK: Calibration bundles use a new format with user-level hand models and per-glove tactile data. Importing bundles from older SDK versions keeps the tactile data but skips the old hand calibration (it is no longer loaded — recalibrate under your user profile). Bundles exported by this version require an up-to-date SDK to import
-
Wuji Studio: The calibration file format changed. Calibration files created before this release are incompatible with the new format and are not migrated, so calibrate the left and right hands again after upgrading
New Features
Calibration and User Data
-
Wuji SDK: Export, preview, and import your Wuji user data as a portable
.zipbundle.SdkManager.export_user_data(user_id, out_path)writes everything a user owns — calibration hand models plus the tactile model and its latest complete calibration run — into one file.preview_user_data(zip_path)validates a bundle and reports its contents without importing it.import_user_data(zip_path)restores a bundle to the user who created it (creating that user if it doesn’t exist) and overwrites that user’s existing data, without changing the current user -
Wuji SDK: C SDK: added SDK user management and Wuji Glove hand model calibration APIs matching the Python SDK. C applications can create and switch SDK users, run calibration with structured feedback, cancel asynchronous calibration sessions, and receive the per-user calibrated URDF path. The calibration example provides the same in-place terminal dashboard and throttled API log mode as the Python example
-
Wuji SDK: C SDK: added user data import/export and preview, mirroring the Python API.
wuji_user_data_export/wuji_user_data_importmove a user’s data as a portable.zipbundle, andwuji_user_data_previewvalidates and lists a bundle’s contents without writing to disk. All three return aWujiStatus— callwuji_last_error()for the message on failure.WUJI_STATUS_ERR_NOT_FOUNDmeans the bundle file doesn’t exist, andWUJI_STATUS_ERR_INVALID_DATAmeans the bundle is present but fails validation (corrupt zip, bad manifest, checksum mismatch, or unsafe path) -
Wuji Studio: User data import and export: export your calibration hand models, tactile models, and captured runs to a portable
.zipfrom the user avatar menu, and import one back. Import previews the archive, shows its owner, and warns that it overwrites matching data before you confirm. Data is restored to the archive’s owner profile, which is created if it doesn’t exist, and you can switch to that profile afterward. Desktop app only
Device Connections and Resource Access
-
Wuji SDK:
scan()now reports each device’s type:DiscoveredDevice.device_typeis aDeviceTypeenum (WujiGlove/WujiHand2/WujiHand), so you can tell what a device is before connecting.Unknownmeans the type was not available at scan time -
Wuji SDK: Added device type at scan time:
WujiDiscovered.device_idis now aWujiDeviceTypeenum (WUJI_DEVICE_TYPE_WUJI_GLOVE/_WUJI_HAND_2/_WUJI_HAND/_UNKNOWN) andWujiDiscovered.modelcarries the readable type string, so you can tell what a device is before connecting -
Wuji CLI: Device management: scan and list devices over USB / UDP with
wuji devices, and probe device connectivity withwuji ping, covering all discovered devices by default or targeting one by SN, IP, or handedness -
Wuji CLI: Parameter read/write:
wuji getandwuji setread and write device parameters with typed JSON output
Motion Control and Examples
- Wuji Hand: The Wuji SDK real-time controller now exposes
get_actual_effort()(per-joint effort in amps, read from the same non-blocking upstream cache asget_actual_position()) in the Python SDK, and the C SDK exposes the matchingwuji_hand_realtime_controller_get_actual_effort. This API belongs to wuji-sdk, not wujihandcpp
Logs and Diagnostics
-
Wuji Hand: Added Wuji Hand support to the C SDK. Connect by USB serial number (
wuji_hand_connect_sn), then read joint positions, per-joint diagnostics (bus voltage / temperature / error code), firmware soft limits, handedness, and whether a tactile glove is attached. Control withenable/disable/clear_all_faults, set and read the effort limit, stream commands through a joint-command publisher (a list of 20JointCommandstructs —position/velocity/effortper joint, the same shape as Wuji Hand 2, so command code is portable between the two), and run a low-pass-filtered real-time position controller. Subscription streams for joint state and tactile pressure are also available. Supported on Linux x86_64 / aarch64 (gnu) only. On Android these functions are present but returnWUJI_STATUS_ERR_UNSUPPORTED. Worked examples are underexamples/c/wuji_hand/ -
Wuji CLI: First release of Wuji CLI: the official command-line tool for Wuji devices — connect devices, upgrade firmware in batches, and automate with scripts, all without a GUI, plus one-command diagnostics with
wuji doctor. -
Wuji CLI: Health diagnostics:
wuji doctorchecks device health, including EMF disconnection detection and tactile dead-pixel / bad-column detection. Wuji Glove only for now, with more diagnostics and device types to come -
Wuji CLI: Output formatting: most commands support
--json/--jsonloutput modes and device selection by--sn,--address, or--handedness
Firmware and Software Updates
-
Wuji CLI: Firmware upgrade: upgrade device firmware from the official catalog with
wuji upgrade. Check which devices have updates with--check, upgrade one or all devices, install a specific version with--to, flash a local package with--file, and browse available versions with--list. Downloads are sha256-verified and cached, flashing asks for confirmation (skip with--yes), and a per-device report is printed -
Wuji CLI: Self-update:
wuji updatedownloads, verifies, and installs the latest release in place (--checkto check only)
Data Streams and Time Sync
-
Wuji CLI: Resource discovery: list a device’s readable/writable parameters and subscribable topics with
wuji resources -
Wuji CLI: Data subscription: subscribe to a topic’s real-time data with
wuji sub <topic>, and control the frame count with--count
Installation and Runtime
- Wuji CLI: Shell completions: generate completion scripts for bash, zsh, fish, powershell, and elvish with
wuji completions
Other Improvements
- Wuji CLI: Colored output: consistent semantic colors for statuses, warnings, and values, with
NO_COLORsupport and a plain-text fallback on non-TTY output
Models and Mechanical Resources
- Wuji Description: Added Wuji Glove mounting attachments:
Wuji-glove-attachment.STEP(the Wuji Glove mounting interface) andPico-tracker-attachment.STEP(a Pico tracker adapter), both STEP AP214 assemblies for mechanical integration
Changes
Firmware and Software Updates
- Wuji Glove Firmware: Aligned the tactile point cloud to 526 active taxels. The firmware still scans the raw 24×32 sensor array and drops the dead column, publishing 24×31 (744-value) tactile frames, and the point-cloud active mask excludes eight more hardware-masked taxels on top of that. Update the Wuji SDK to a matching version so point-cloud decoding uses the same 526-taxel mapping
Calibration and User Data
-
Wuji Studio: Calibration results are now saved per Wuji Studio user and hand, and Wuji Gloves for the same hand share that user’s result
-
Wuji Studio: Hand Profile is renamed to Hand Model Source, and the legacy Wuji Hand 2 and Wuji Hand profiles are deprecated. Existing layouts now show SDK Managed, which uses the matching calibrated model, or the SDK default model when not calibrated, and Custom URDF remains available
Improvements and Fixes
Device Connections and Resource Access
- Wuji SDK: Fixed an issue where connecting multiple devices in the same process (for example a Wuji Glove and a Wuji Hand 2) could fail depending on the connection order
Data Streams and Time Sync
- Wuji SDK: Fixed a crash on exit. If a device disconnected while a callback subscription was still running and the process then exited, the app could crash with a fatal Python error or segmentation fault. Background subscription threads now stop cleanly before the interpreter shuts down
Calibration and User Data
-
Wuji Glove, Wuji SDK: The Default profile uses Wuji’s built-in URDF, and calibration recorded earlier does not apply. To calibrate, create and switch to your own user profile first
-
Wuji Studio: Fixed cases where a compatible Wuji Glove could appear unsupported or show the wrong calibration status. When the status cannot be checked, Studio now offers a retry
Motion Control and Examples
- Wuji Retargeting: Optimized wheel packaging — download and installed size are significantly smaller. No functional change
Other Improvements
- Wuji Hand 2 Firmware: Fixed other known issues and improved overall stability
Firmware and Software Updates
- Wuji Studio: Devices in the firmware upgrade view are now grouped by their actual product type, so Wuji Hand devices no longer appear under the “Wuji Glove” group. Unrecognized devices are listed under a new “Other Devices” group
Models and Mechanical Resources
- Wuji Description: Fixed the ROS
package://mesh paths for the Wuji Hand 2 (Beta 1) URDF: thewuji_descriptionpackage now installs the model assets into its share directory, and mesh paths are model-scoped, so the model loads correctly under ROS
Tactile Data and Sensors
-
Wuji Studio: Studio now blocks incompatible legacy tactile recordings during playback and shows a clear warning, avoiding incorrect tactile rendering
-
Wuji Studio: Playing back tactile recordings in the older format (before v2026.6.18) shows an incompatibility warning as a message notification in the bottom-right corner
Visualization and Interface
- Wuji Studio: Fixed tactile matrix panels still rendering the old 24×32 preset layout after an in-place upgrade. The layout now migrates on startup, and custom column counts are preserved
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v2026.7.14 | pip install --upgrade wuji-sdk |
| Wuji Hand 2 Firmware | v2.0.0 | Update via Wuji Studio |
| Wuji Studio | v2026.7.14 | Click to download |
| Wuji Description | v2026.7.14 | Click to download |
| Wuji Glove Firmware | v0.11.2 | Update via Wuji Studio |
| Wuji CLI | v2026.7.14 | wuji update or the install script |
Improvements and Fixes
Device Connections and Resource Access
- Wuji Hand 2.1 Beta Firmware: Fixed device connection failures in some network environments
Other Improvements
- Wuji Hand 2.1 Beta Firmware: Fixed other known issues
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji Hand 2.1 Beta Firmware | v1.2.4 | Update via Wuji Studio |
Improvements and Fixes
Device Connections and Resource Access
- Wuji Hand: Fixed reconnecting within the same process: after
disconnect(), callingconnect()again for the same hand failed and previously required exiting the process to recover. The handle is no longer usable afterdisconnect(). Create a new connection to reconnect
Motion Control and Examples
- Wuji Retargeting: Fixed the live teleoperation example (
examples/python/retargeting/1.teleop_real.py) that failed to run:manager.connect()defaults toenable_bridge=True(Zenoh Bridge enabled), so the glove → retarget → hand loop did not work when the example used the default connection options. The example now connects withConnectOptions(enable_bridge=False), bypassing the Bridge for a direct connection
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v2026.7.2 | pip install --upgrade wuji-sdk |
Breaking Changes
Motion Control and Examples
-
Wuji Hand 2: Interface redesigned into a unified resource-style API. Every feature is accessed via
.get()/.set()/.subscribe()/.publish(), with the same methods for whole-hand and per-joint use. Upgrade device firmware and the SDK together, and update calling code to the new API. -
Wuji Hand 2: Control actions
enable()/disable()/clear_fault()/set_origin()/clear_origin()accept a length-20 mask for subset operations.emergency_stop()always acts on the whole hand -
Wuji Hand 2: Real-time control moved to a publish model:
hand.joint_command().publish().send(joints)takes 20JointCommandentries (each with position / velocity / effort). The previoussend(positions, velocities, efforts)three-list form is retired -
Wuji Hand 2: Configuration resources
mit_params(kp/kd) andeffort_limit(A) reject NaN / inf / negative writes -
Wuji Hand 2: Control mode is no longer set from Python. The device runs MIT control by default
Logs and Diagnostics
- Wuji Hand 2: Feedback as subscription streams:
hand.joint_states()andhand.joint_diagnostics(), with feedback frames carrying aFrameHeader(seq / timestamp_us / frame_idl_wrist/r_wrist), containing only online joints
Tactile Data and Sensors
- Wuji Glove: Updated
tactile_point_cloudto the 526-taxel active point-cloud contract — use a matching firmware version to keep point-cloud frames consistently at 526 points
Calibration and User Data
- Wuji Glove: The default SDK user now always uses the built-in default hand URDF for IK-derived streams (
hand_skeleton,hand_joint_angles,tip_poses) and ignores stored calibration URDF paths. Callingcalibrateas the default user fails fast with error code0x4108. Create or switch to a named SDK user before calibration so generated URDFs are scoped to that user
New Features
Logs and Diagnostics
-
Wuji SDK (C SDK): Added Wuji Hand 2 support, mirroring the Python resource-style API:
joint_states/joint_diagnosticssubscription streams,mit_params/effort_limitconfiguration, control actions (enable / disable / clear_fault / emergency_stop / user origin), and a joint-command publisher. Whole-hand reads cover 20 joints with a per-joint online bitmap so offline joints are distinguishable, and string getters use a two-call size query (pass aNULLbuffer to get the required length, then call again to fill it) -
Wuji Hand 2:
describe_error(code)translates a status / error code into a human-readable description.
Data Streams and Time Sync
-
Wuji SDK (C SDK): New
wuji_glove_get_emf_poses_rate_divider/wuji_glove_set_emf_poses_rate_dividerlower the Wuji Glove EMF output rate (divider N ≥ 1, output rate = input rate / N, for example N=4 → 30 Hz). Every derived stream (hand_joint_angles / tip_poses / hand_skeleton / tactile_point_cloud) drops to the same rate, reducing IK CPU load. Applied at runtime and preserved across reconnects -
Wuji SDK (C SDK): New
wuji_glove_sync_timetriggers a single time-sync round-trip with a Wuji Glove, fillingWujiTimeSyncResultwith the clock offset, round-trip time, and measurement timestamp in microseconds, matching Pythonglove.sync_time()
Models and Mechanical Resources
- Wuji SDK (C SDK): New
wuji_glove_get_hand_model_path/wuji_glove_set_hand_model_path(and Pythonglove.hand_model_path().get()/set(path)) select a custom hand URDF for Wuji Glove online IK. Python subscription examples now expose--hand-model-path
Changes
Calibration and User Data
- Wuji Glove: Finger-segment lengths and joint origins are updated to the latest calibration. Default hand-tracking output (
hand_skeleton,hand_joint_angles,tip_poses) is more accurate when no user calibration profile is loaded. Joint and link layout unchanged.
Motion Control and Examples
-
Wuji Retargeting: Ships with wuji-sdk, mapping hand keypoints to Wuji Hand / Wuji Hand 2 joint angles. Install with
pip install wuji-sdk[retarget](Linux x86_64 / aarch64 only). The standalone Wuji Retargeting repo is no longer updated. -
Wuji Retargeting: Maps 21 MediaPipe-format hand keypoints to Wuji Hand joint angles.
wuji_sdk.retargeting.RetargetSession.for_hand(HandModel.WujiHand2, side=Handedness.Right)builds a session in one line.session.step(keypoints)returns a 20-value joint command ready to send to the device with no extra reordering -
Wuji Retargeting: Includes a Wuji Glove → retargeting → Wuji Hand / Wuji Hand 2 live teleoperation example at
examples/python/retargeting/1.teleop_real.py
Improvements and Fixes
Data Streams and Time Sync
-
Wuji Glove Firmware: Fixed intermittent hand-pose jumps: IMU FIFO packets are validated before fusion, so invalid samples no longer corrupt the pose estimate
-
Wuji Glove Firmware: Fixed IMU initialization not respecting the factory configuration. Palm-IMU devices no longer probe disabled slots or report partial initialization
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v2026.7.1 | pip install --upgrade wuji-sdk |
| Wuji Glove Firmware | v0.11.1 | Update via Wuji Studio |
June 2026
Changes
Tactile Data and Sensors
-
Wuji Glove, Wuji SDK: Tactile data layout updates to 744 values in 24×31 (was 768, 24×32), shrinking
tactile,tactile_residual,tactile_binaryframes and the per-zone layout, with invalid taxels still reported as-1.0 -
Wuji Studio: MCAP playback now rejects legacy 24×32 (768) or corrupted tactile recordings with a warning instead of rendering them at the wrong dimensions
Visualization and Interface
- Wuji Studio: Tactile matrix and per-zone matrix panels now display the new 24×31 (744) layout
Firmware and Software Updates
- Wuji Glove Firmware: Tactile output now uses the new 24×31 matrix format, requires matching Wuji Studio and SDK versions, older 768-point firmware is incompatible
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v2026.6.18 | pip install --upgrade wuji-sdk |
| Wuji Studio | v2026.6.18 | Click to download |
| Wuji Glove Firmware | v0.11.0 | Update via Wuji Studio |
New Features
Data Streams and Time Sync
-
Wuji SDK: Added a prebuilt C SDK (
libwuji_sdk_c.so+wuji_sdk.h), currently scoped to Wuji Glove only, covering device connection, cross-device coordinate transforms (tf/tf_static), and stream subscriptions (tactile, tactile zones, EMF poses, hand joint angles, hand skeleton, tactile point cloud), forx86_64-linux-gnu/aarch64-linux-gnu/aarch64-android. -
Wuji Glove, Wuji SDK: Added
glove.emf_poses_rate_divider()to lower EMF pose output rate (default 1, set N to publish at input_rate/N, e.g. N=4 → 120Hz down to ~30Hz). All EMF-derived streams (emf_poses/hand_joint_angles/tip_poses/hand_skeleton/tactile_point_cloud) drop to the same rate to reduce IK compute, while IMU (imu_*,tf) and raw tactile streams (tactile/tactile_zones/tactile_residual/tactile_binary) keep original rate. Runtime-effective, persists across reconnects. -
Wuji Hand: Added the
wuji_sdk.WujiHandclass — Wuji Hand is now usable directly throughwuji-sdk(alongside the existingwujihandpy), with USB auto-discovery and connection, motor enable/disable, per-joint effort limits, real-time 20-joint position subscription and command publishing withLowPasssmoothing, and an optional plug-in tactile glove stream.
Calibration and User Data
-
Wuji SDK: Added local SDK user profiles via
SdkManager.create_user(display_name)andswitch_user()— each profile keeps its own calibration data per device, and switching profiles reloads calibration on connected devices immediately. -
Wuji Glove: Added Python-side hand model calibration via
glove.calibrate()with per-pose progress callbacks (on_feedback), selecthand_profilefor Wuji Hand or Wuji Hand 2, or leave it unset to generate URDFs for both profiles from a single capture, switchable later for live hand tracking. -
Wuji SDK: Added Python calibration API
glove.calibrate()/calibrate_blocking()with timeout, constraint-skip, andon_feedbackcallback. See Calibration for details. -
Wuji SDK: Added local user isolation API (
SdkManager.create_useretc.) so operators sharing the same device don’t overwrite each other, with automatic parameter reload on user switch — no reconnect required.
Visualization and Interface
- Wuji Glove, Wuji SDK: Added
glove.tactile_residual()publishing 768 continuous contact-residual values at the same rate astactile(positive = pressed, ~0 = no contact,-1.0= invalid), mirroringTactileFrameshape so existing tactile-grid visualizers work unchanged. Apply your own thresholding instead of the built-intactile_binaryoutput.
Device Connections and Resource Access
- Wuji Studio: Added the Device Tools Modify Device Port command to change a device’s data port (the device reboots to apply).
Logs and Diagnostics
- Wuji Studio: Added the
wujistudio.recordingextension API so authorized extensions can start, inspect, and stop Studio-managed recordings (with optional source/topic selection).
Models and Mechanical Resources
- Wuji Description: Added STL meshes for the transmitter and receiver coils, plus the transmitter top-cover STEP and assembled PDF.
Changes
Other Improvements
-
Wuji Glove, Wuji SDK: Hand pose solving now runs in parallel, reducing compute time behind
hand_joint_anglesand derived hand-tracking data, output values and schemas unchanged. -
Wuji Hand: The
WujiHandAPI surface mirrors Wuji Hand 2 (scan/connect/joint_state/joint_command), so code patterns largely interoperate between the two generations.
Calibration and User Data
-
Wuji SDK: Real-time IK supports hand-profile selection via
calibration.hand_profile("wujihand"/"wujihand2"), calibration without this parameter generates both URDFs for runtime switching without recalibration. -
Wuji Studio: Calibration now creates a debug recording of the current device at start for later troubleshooting.
-
Wuji Studio: Updated the bundled device SDK integration for user-scoped calibration and SDK-managed hand profile selection.
Visualization and Interface
- Wuji Studio: 3D panel Hand Skeleton supports hand profile switching (
wujihand/wujihand2/ Custom URDF), with Custom URDF letting SDK-side IK use a local URDF file.
Device Connections and Resource Access
- Wuji Studio: Modify Device IP restricts the new address to private subnets, others are rejected.
Logs and Diagnostics
- Wuji Studio:
wujistudio.devices.subscribeTopicnow requires therobotics.topics.readpermission, extensions must declare it underpermissionsinwujistudio.extension.json.
Models and Mechanical Resources
-
Wuji Description: First release of the Wuji Glove URDF model with 21 joints including a wrist electromagnetic transmitter and fingertip receiver coils for hand motion tracking.
-
Wuji Description: Removed the standalone attachment STEP, all Wuji Glove model assets now live under
glove/body/.
Improvements and Fixes
Visualization and Interface
- Wuji Studio: Fixed 3D panel point-cloud colors appearing scrambled and washed-out or semi-transparent. Point-cloud colors now render correctly and match the selected color map.
Firmware and Software Updates
- Wuji Studio: Fixed device logs not resuming after the device passively reconnects (for example, after a firmware-upgrade restart).
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v2026.6.16 | pip install --upgrade wuji-sdk |
| Wuji Studio | v2026.6.15 | Click to download |
| Wuji Description | v2026.6.12 | Click to download |
New Features
Device Connections and Resource Access
- Wuji SDK: Added handedness-based connection
SdkManager.connect(handedness=Handedness.Left | Handedness.Right, ...)to connect to the left or right side of a bimanual device directly.
Visualization and Interface
- Wuji Glove: Added the binary contact tactile stream
glove.tactile_binary(), published at the same rate astactile()with 768 contact states (1.0in contact,0.0no contact,-1.0invalid taxel). It mirrors theTactileFrameshape, so existing tactile-grid visualizers work without changes.
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v2026.6.2 | pip install --upgrade wuji-sdk |
May 2026
Breaking Changes
Calibration and User Data
- Wuji Glove: Removed
glove.tactile_raw()— subscribe toglove.tactile()(calibrated tactile frames) instead
Other Improvements
- Wuji Glove: Removed
glove.factory_reset()
New Features
Logs and Diagnostics
-
Wuji SDK: Added
device.export_flash_logs(out_dir)to dump historical device logs to JSONL files -
Wuji SDK: Added per-channel recording health via
QualityMetrics.channels— frame rate, drop rate, jitter,is_online, andlast_downtime_msfor each recorded topic
Installation and Runtime
- Wuji Studio: Added Extensions view: browse installed extensions and install or uninstall local extensions in one place.
Changes
Models and Mechanical Resources
- Wuji Glove:
hand_joint_anglesandtip_posesnow derive from the URDF kinematic chain. Output schemas are unchanged, but numerical values may differ from previous versions
Calibration and User Data
- Wuji Studio: Preinstalled first-party extensions for calibration, teleoperation, and device tools, ready to use out of the box.
Improvements and Fixes
Device Connections and Resource Access
- Wuji SDK: Fixed devices not reliably publishing offline status when
disconnect_all()is called from non-async contexts
Calibration and User Data
- Wuji Studio: Fixed layout presets, saved layouts, and user preferences being blank after a fresh install on Linux.
Visualization and Interface
- Wuji Studio: Fixed URDF local file loading failing on Windows in the 3D panel.
Models and Mechanical Resources
- Wuji Studio: Fixed URDF meshes not tracking
/joint_statesin real time.
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v0.10.0 | pip install --upgrade wuji-sdk |
| Wuji Studio | v2026.5.18 | Click to download |
April 2026
Improvements and Fixes
Other Improvements
- Wuji Glove: Fixed some known issues.
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji Glove Firmware | v0.10.1 | Update via Wuji Studio |
Changes
Firmware and Software Updates
- Wuji Studio: Auto-checks for Studio and device firmware updates, surfacing new versions in a toast and the notification center, with one-click navigation to the download page or upgrade view.
Improvements and Fixes
Tactile Data and Sensors
- Wuji Glove Firmware: Fixed periodic tactile data dropouts, improving sampling stability.
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji Glove Firmware | v0.10.0 | Update via Wuji Studio |
| Wuji Studio | v0.10.0 | Click to download |
Improvements and Fixes
Other Improvements
- Wuji SDK, Wuji Glove: Fixed some known issues
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v0.9.0 | pip install --upgrade wuji-sdk |
| Wuji Glove Firmware | v0.9.0 | Update via Wuji Studio |
| Wuji Studio | v0.9.0 | Click to download |
March 2026
Improvements and Fixes
Other Improvements
- Wuji Glove: Fixed some known issues.
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji Glove Firmware | v0.8.0 | Update via Wuji Studio |
| Wuji SDK | v0.8.0 | pip install --upgrade wuji-sdk |
| Wuji Studio | v0.8.0 | Click to download |
Changes
Other Improvements
- Wuji SDK: Wuji SDK and Wuji Studio support sharing the same device
Improvements and Fixes
Logs and Diagnostics
- Wuji SDK, Wuji Glove: Improved log availability and reliability during startup and runtime
Firmware and Software Updates
- Wuji SDK, Wuji Glove: Improved upgrade stability and reduced false upgrade failure reports
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v0.8.0 | pip install --upgrade wuji-sdk |
| Wuji Glove Firmware | v0.7.0 | Update via Wuji Studio |
| Wuji Studio | v0.8.0 | Click to download |
New Features
Data Streams and Time Sync
- Wuji SDK: Added cross-device merged subscription to receive aggregated data from all connected devices at once
Logs and Diagnostics
- Wuji SDK: Added data recording with multi-channel capture, pause/resume, episode switching, and real-time quality monitoring
Improvements and Fixes
Other Improvements
- Wuji SDK: Fixed an occasional crash in callback mode
Data Streams and Time Sync
-
Wuji SDK: Fixed an issue where subscribing to multiple data streams simultaneously could result in missing data
-
Wuji SDK: Fixed an issue where some Wuji Glove IMU data streams could not be subscribed
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v0.7.0 | pip install --upgrade wuji-sdk |
February 2026
Breaking Changes
Data Streams and Time Sync
- Wuji SDK: Renamed the
EmfPoseerrorfield toconfidence.
Calibration and User Data
- Wuji SDK: Changed the device parameter management API:
load_profile()/has_profile()replaced byget()/set()/save_params().
New Features
Other Improvements
-
Wuji SDK: Added
get()/set()APIs for reading and writing device configuration parameters -
Wuji SDK: Added coordinate transform APIs:
tf_static().subscribe()andtf().subscribe()
Logs and Diagnostics
-
Wuji SDK: Added
save_params()to persist parameter changes to device flash -
Wuji SDK: Added SDK/Device logging support, use
set_log_level()to control log level -
Wuji SDK: Added the device logging module.
Data Streams and Time Sync
-
Wuji SDK: Added 6-sensor IMU data:
imu_palm(),imu_thumb(),imu_index(),imu_middle(),imu_ring(),imu_pinky() -
Wuji SDK: Added IMU orientation data and the
ImuDataAPI (palm, thumb, index, middle, ring, pinky).
Tactile Data and Sensors
- Wuji SDK: Added hand tracking data:
tip_poses()(fingertip poses),hand_joint_angles()(21 DoF joint angles),hand_skeleton()(21 hand keypoints)
Visualization and Interface
-
Wuji SDK: Added tactile point cloud data:
tactile_point_cloud()for 3D tactile visualization -
Wuji Studio: Added hand skeleton and fingertip pose visualization with per-finger confidence coloring, joint axis display, and opacity settings.
-
Wuji Studio: Added color vision accessibility settings, supporting three common color vision types.
-
Wuji Studio: Added 3D panel tactile point cloud pressure coloring with standard colormaps (plasma, viridis, etc.) and transfer functions.
-
Wuji Studio: Added device log panel to bottom bar with source and level filtering.
-
Wuji Studio: Added LAYOUT panel to the visualization interface for one-click default panel restoration.
Calibration and User Data
- Wuji SDK: Added
tf/tf_staticcoordinate transform APIs withwaistas the base frame, supporting user-defined wrist offset.
Changes
Data Streams and Time Sync
- Wuji SDK: Positioning quality metric
EmfPose.confidence— indicates EMF pose estimation reliability (0.0 to 1.0)
Visualization and Interface
-
Wuji Studio: Raw Messages panel
- Topic list now uses a tree structure, supporting hierarchical browsing of Topics and Schema fields.
- Added IMU data display support.
-
Wuji Studio: 3D view default configuration adapted to TF tree changes.
Firmware and Software Updates
- Wuji Studio: Firmware upgrade page shows cumulative update log and displays a warning on downgrade.
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v0.6.0 | pip install --upgrade wuji-sdk |
| Wuji Glove Firmware | v0.6.0 | Update via Wuji Studio |
| Wuji Studio | v0.6.0 | Click to download |
New Features
Visualization and Interface
-
Wuji Studio: New desktop application for multi-device connection, device management, and data visualization.
-
Wuji Studio: Visualization panels: 3D view, Plot, Raw Message, and Tactile Matrix for intuitive data presentation.
-
Wuji Studio: 3D glove landmark visualization with positioning error mapped to point color.
-
Wuji Studio: Light and dark theme switching.
Installation and Runtime
-
Wuji SDK: Python development kit for Wuji devices
-
Wuji SDK: IDE auto-completion support
Data Streams and Time Sync
-
Wuji SDK: Callback subscription support with
subscribe_with_callback() -
Wuji SDK: Data stream subscriptions: tactile matrix, tactile zones, EMF poses
-
Wuji SDK: Semantic API for Wuji Glove with callback subscription and async support.
Other Improvements
-
Wuji SDK: Async/await support with
recv_async() -
Wuji Glove: LED indicator: Multi-state, multi-mode feedback for device status.
-
Wuji Studio: Automatic left/right hand detection during device naming.
Tactile Data and Sensors
-
Wuji SDK, Wuji Glove: Wuji Glove — Smart glove with tactile sensing and motion capture
-
Wuji Glove: Tactile sensing: Full-hand tactile data with per-zone output (palm, thumb, index, middle, ring, pinky).
-
Wuji Glove: Motion capture: Fingertip tracking module for 5-finger motion capture.
Calibration and User Data
- Wuji Studio: Device management: Device discovery, connection history, rename, calibrate, export calibration data, and device info.
Firmware and Software Updates
- Wuji Studio: Firmware upgrade: Online download and local firmware upload with progress tracking and error diagnostics.
Product Versions and Acquisition
| Product or Software | Version | Acquisition |
|---|---|---|
| Wuji SDK | v0.5.0 | pip install wuji-sdk |
| Wuji Glove Firmware | v0.4.0 | Update via Wuji Studio |
| Wuji Studio | v0.5.0 | Click to download |
ドキュメント