§8 xArm 850
Control, Communication and Programming Interfaces
How people and programs talk to the arm: Studio, the SDKs, ROS, Modbus and the controller's inputs and outputs.
Start Here
This section is about how people and other machines talk to the arm: the software, the network, the wires on the control box and the connector at the tool end, and how to choose between them. Read the short list below first, because one abbreviation here means something different from the rest of the site.
Studio, Python, C++, ROS
UFACTORY's programming routes1
16 + 16
30 m
longest I/O cable without a test of the run4
- UFACTORY lists four ways to program the 850: UFACTORY Studio, Python, C++ and ROS1.
- The lab uses the UFACTORY Studio desktop app, downloaded from UFACTORY and installed on the computer56. UFACTORY's manual also describes opening Studio in a web browser7.
- In the cell, the arms are currently understood to be operated manually mainly through UFACTORY Studio8.
- The control box has I/O for wiring in other equipment, such as relays, PLCs and emergency stop buttons9.
- In this section "TCP" means the network protocol the arm and its controller use to talk to a computer10. It is not the Tool Center Point, the point on the tool that the arm positions, which Section 4 teaches11.
S2 in one line: S2 is the xArm 850 arm that picks up incoming material and moves it between receiving, staging and production1213.
Look Back
A question from earlier on, to keep it fresh. Skip it if you like; nothing depends on it.
Choose your depth
1Beginner
How You Talk to the Arm
For: Anyone with no robotics background: a visitor, a new operator, a manager
Kind of task: Recognize and recall, with plain-language explanations and pictures
In this part you learn the ways a person or a machine can tell the arm what to do, how a computer reaches it over the network, and the one wiring rule you must never break. No programming background is needed.
Four Routes
- UFACTORY lists four routes for programming the 850: UFACTORY Studio, Python, C++ and ROS1.
- Studio is the graphical route. The other three are code: you write a program that sends commands to the arm1415.
UFACTORY Studio
- Studio is a graphical application for controlling the arm. You use it to set parameters, to move the arm from the screen in Live Control, and to build motion programs from Blockly blocks14.
- The lab uses the Studio desktop app: download it from UFACTORY and install it on your computer56.
- To connect, enter the controller's IP address in the app's IP search field and click Connect Server16.
- UFACTORY's manual also describes opening Studio in a web browser, at the controller's IP address followed by port 18333177. The lab uses the desktop app5.
- Blockly lets you build a program by dragging and dropping blocks instead of writing code18.
- No dedicated teach pendant for the 850 is documented. Teaching is done in Studio and by guiding the arm by hand19.
The Network
- UFACTORY recommends connecting the control box straight to your computer with an Ethernet cable. A router or a network switch are the other options20.
- A wireless link to the router is not recommended, because it adds delay and loses packets21.
- The arm's default address is in the range 192.168.1.xxx, and your computer must be on the same network segment as the control box22.
Wires to Other Machines

- Besides the network, the control box has its own inputs and outputs: 16 digital inputs, 16 digital outputs, and 2 analog inputs and 2 analog outputs2325.
- They are for connecting equipment such as pneumatic relays, PLCs and emergency stop buttons9.
- An example from the manual: an analog output can drive a conveyor belt's speed-control input26.
The Tool End Has Its Own Connector
- At the tool end there is a 12-pin connector that supplies power and control signals to grippers and sensors27.
The Rule You Must Never Break
- A safety signal, such as one from a door switch or an emergency stop button, must never be connected to a non-safety PLC. Doing so can defeat the safety stop and cause serious injury or death2829.
- The control box has dedicated safety inputs for that job: an emergency stop input and a protective stop input30.
Check Yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
2Novice
The Routes, and What the I/O Can Do
For: Someone who will work near or with the cell: operator, trainee technician
Kind of task: Explain and sequence: put steps in order, match parts to their functions
In this part you see what each programming route offers, how the arm sits on the network, and what the control box and tool-end wiring can be set up to do. It is for someone who will work near the cell or connect a simple device to it.
What Each Route Offers
- A Blockly program in Studio can be turned into Python code from the Blockly toolbar, so a block program can become the starting point for a code program33.
- Studio also accepts Gcode programs. UFACTORY Gcode follows the RS-274 standard and is compatible with LinuxCNC Gcode34.
- The Python SDK is installed from PyPI with pip install xarm-python-sdk, and it supports Python 3 only31.
- In this cell, Python will be the primary coding method35.
- UFACTORY publishes a C++ SDK for the 850 as well36.
- For ROS, UFACTORY's ROS 2 package xarm_ros2 and its ROS 1 package xarm_ros both added the 850 on 2023-06-073237.
On the Network
- Whichever route you use, the arm and its controller talk to the computer over Ethernet with UFACTORY's own private TCP protocol10.
- Studio's Settings > My Device > Device Info page shows the arm's IP address, subnet mask, broadcast address and default gateway38.
- After an IP reset, the control box's address is 192.168.1.11139.
- The arm also carries a user Ethernet line inside it: an RJ45 port on the base is wired through the arm to an M8 4-pole Ethernet connector on the end flange, for example for a camera at the tool40.
What the Control Box Inputs and Outputs Can Be Set to Do
- Each configurable input CI0-CI7 can be set as General Input, Stop Moving, Safeguard Reset, Offline Task, Manual Mode, Reduced Mode or Enable Robot. The general inputs DI0-DI7 support the same list except Stop Moving, Safeguard Reset and Reduced Mode41.
- Outputs can be General Output, or they can report the arm's status to another machine: Motion Stopped, Robot Moving, Error, Warning, Collision, Manual Mode, Reduced Mode, Offline Task Running, Robot Enabled, and Emergency Stop is Pressed42.
- An input set as Offline Task starts stored Blockly programs when it is triggered, so another machine can start a program with an I/O signal43.
- An input set as Enable Robot enables the arm when it is triggered44.
- An input your program reads must be set as General Input. An input configured for a function, such as Offline Task, must not be used in any program45.
- Out of the box, the digital inputs read high, the digital outputs are low, and the analog outputs sit at 0 V46.
- The analog inputs and outputs work from 0 to 10 V47.
Wiring It to Another Machine
- To swap digital signals with another machine or a PLC, both sides need a common GND (0 V), and the other machine should use open-drain outputs48.
- The I/O cable must not be longer than 30 m unless testing shows a longer cable works4.
- The digital outputs have no current protection: going past their rating can damage them permanently49.
- The I/O can run from the control box's internal 24 V supply, which is the default, or from an external 24 V supply when more current is needed50.
- There is also one RS-485 port, and on it the arm can only be the master51.
The Tool-End Connector in Detail
- The tool connector has 2 digital outputs, TO0 on pin 7 and TO1 on pin 852, and 2 digital inputs, TI0 on pin 9 and TI1 on pin 1053.
- It also has 2 analog inputs on pins 11 and 12, and an RS-485 pair on pins 5 and 654.
- It supplies 24 V at up to 1800 mA55.
- A user button and an LED sit at the tool end. The button does nothing until you give it a job56.
- A pogo-pin connector at the tool end follows the same electrical specifications as the 12-pin connector5727.
- Studio's End Effector IO page shows the tool inputs and outputs live, refreshing at 5 Hz58.
The Simulated Arm Is Not a Separate Arm
Check Yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
3Intermediate
Electrical Detail and Error Handling
For: Someone who will set up, program or maintain the arm: technician, student engineer
Kind of task: Apply: work through written scenarios that need a decision (which mode, which setting, what to do about this error), with feedback on each choice
In this part you follow a Python command from your program to the arm, learn the electrical limits of the wiring, and learn to read the codes the arm sends back when something goes wrong. It is for someone who will set up, program or maintain the arm.
How a Python SDK Command Reaches the Arm
- Your program creates an XArmAPI object, imported from xarm.wrapper, and gives it the controller's IP address62.
- UFACTORY's start-up template then enables motion, sets the mode, for example mode 0 for position control, and sets the state to 0, after which the arm accepts motion commands636465.
- The SDK sends each command to the controller over Ethernet on TCP port 502, using UFACTORY's private protocol6610.
- In mode 0, set_position makes a straight-line move in the base coordinate system; pass wait=True if your program should wait until the move finishes6768.
- The call returns a code, and 0 means success69.
- Units depend on the route. The Python SDK and Blockly use degrees for joint angles and for roll, pitch and yaw, while the raw protocol uses radians. Positions are in millimeters in all three70.
- The SDK works in degrees because its is_radian setting is False unless you change it71.
Other Ports on the Same Controller
- Besides UFACTORY's private TCP protocol, the controller accepts standard Modbus TCP commands on port 502 at its IP address, and that port cannot be changed72.
- The Python SDK defines three automatic state-report ports on the controller: 30001 (normal), 30002 (rich) and 30003 (real-time)73.
- The report on port 30003 is sent at 100 Hz, and the other two at 5 Hz. That is Inferred: the rates come from xArm-series documents, and no 850 document states them74.
Electrical Limits of the Control Box I/O
- The internal 24 V I/O supply delivers 23-30 V at up to 1.8 A75. An external supply must give 20-30 V, and the input takes up to 3 A76.
- The digital outputs are NPN open-collector outputs that pull the terminal to GND when on, rated at up to 100 mA77.
- The digital inputs have a weak pull-up, so an input with nothing connected reads high. An input is ON at 0-5 V and OFF at 15-30 V78.
- Configured input functions trigger on a low-level signal79.
- Each analog output can source up to 20 mA80.
- The analog I/O is not isolated from the control box, so the external device should share the control box's GND, and shielded or twisted-pair cable is recommended81.
Electrical Limits of the Tool I/O
- Tool inputs work the other way round from the controller's: they have a pull-down, so an unconnected tool input reads low. Logic low is at most 1.0 V and logic high at least 1.6 V8278.
- Tool digital outputs are NPN open-collector, rated at up to 100 mA sink current, with no current protection83.
- Tool analog inputs are 12-bit and accept -0.5 to 3.3 V in voltage mode; a 4-20 mA current mode is also described84.
- The tool's RS-485 device ID is 9. Standard Modbus RTU devices can be tested from the Studio page that the 850 manual calls Settings > Externals > Modbus RTU; the Studio manual, as read on 2026-10-13, heads that section RS-4858586.
- That page's default baud rate is 2000000. Choosing an end effector in Studio sets its own default, for example 115200 for Robotiq grippers87.
When Something Goes Wrong
- The controller does not push errors to you. An error or warning comes back in the reply to the next command you send88.
- UFACTORY documents error codes in separate families: API return codes, controller warnings, controller errors, servo (joint) errors, and codes for accessories such as the gripper89.
- Studio prefixes each code by family: C for control box errors (for example C31), S for joint servo errors (for example S23) and A for Python SDK codes (for example A-2)90.
- API code -1 means the arm is not connected, and -2 means it is not ready91. Code 1 means there are uncleared errors, 2 uncleared warnings, and 9 that the state is not ready to move92.
- The Python SDK's code list gives controller error 1 as the emergency stop button pushed, 2 as the control box emergency I/O triggered, and 3 as the three-state switch's emergency stop pressed; the Studio manual, as read on 2026-10-13, describes code 2 differently9394.
- Error 22 is a self-collision, 23 a joint past its limit, and 24 speed over its limit95. The SDK lists error 31 as Collision Caused Abnormal Current96.
- Error 35 means the arm reached its safety boundary, and 37 means abnormal movement in manual mode97.
The Simulation Flag Does Not Disconnect the Arm
- The Python SDK has a set_simulation_robot flag. It is a register write sent to a live controller, not a separate simulator98.
- So a program using it is still connected to the controller that drives the real arm. That is Inferred, and the SDK documentation does not say what the controller does while the flag is on99.
- UFACTORY's developer manual tells developers to learn the user manual and Studio first, because programming the arm directly over the protocol carries more risk100.
Platforms
Check Yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
4Expert
Choosing an Interface
For: Someone who designs, integrates or changes the cell: integrator, engineer, agent developer
Kind of task: Analyze and decide: weigh trade-offs, resolve contradictions, critique a configuration
In this part you weigh the interfaces against each other: how fast each one is, who else needs to reach the arm, what each one lets you read back, and how firm the evidence behind each one is. It is for someone who designs, integrates or changes the cell, including an agent that will drive it.
The Candidates
- Studio and Blockly: graphical, used in the lab through the Studio desktop app, and a Blockly program can be converted to Python14533.
- Python SDK: the XArmAPI class over UFACTORY's private TCP protocol on port 5026266. UFACTORY's own 850 documentation names the SDKs for the 850, so the SDK documentation applies to it104.
- ROS 2: the 850 driver is started with ros2 launch xarm_api uf850_driver.launch.py, and its service examples use the /ufactory namespace rather than /xarm105106. MoveIt launch files exist for a simulated arm and for the real arm107.
- Modbus TCP: standard Modbus TCP commands on port 502 at the controller's address72.
- Discrete I/O: the control box's digital and analog lines, set up in Studio4142.
Rate and Latency
- In servo mode, mode 1, set_servo_angle_j and set_servo_cartesian run only the latest target received, with no buffer108.
- In that mode the controller accepts commands at up to 250 Hz, and commands sent faster are lost. UFACTORY suggests smoothed, interpolated points at a fixed rate, preferably 100 Hz or 200 Hz109.
- For reading state, the report on port 30003 comes at 100 Hz and those on 30001 and 30002 at 5 Hz. This is Inferred from xArm-series documents74.
- Queued commands behave differently. By default set_cgpio_digital puts an output change into the motion queue, and sync=False applies it at once, from firmware 2.4.101110. Warning 11 means that command queue is full111.
Who Else Must Talk to the Arm
- Not this cell's primary method: a PLC can start stored Blockly projects over Modbus TCP by writing up to 16 holding registers from address 0x30 with function code 0x10. Each value picks a project by number, and the projects run in order112.
- The same can be done with plain wiring: an input set as Offline Task starts stored Blockly programs43.
- Controller digital I/O can also be read and written over Modbus TCP, as coils and discrete inputs113.
What Each Route Lets You Read Back
- Over Modbus TCP, holding register 32 is the robot mode and 33 the robot state114; input register 32 holds the error code and 33 the warning code115.
- Over the SDK, get_err_warn_code() returns the current error and warning codes116, and with reporting on, a callback can run whenever either code changes117.
- The SDK's mode property works only over the socket connection with enable_report on118.
- Discrete outputs can only report the fixed status signals they are configured for, such as Error or Robot Moving42.
How Firm the Evidence Is
- Every Modbus TCP register and function-code record here is Inferred. The ModbusTCP manual names no robot model, and the 850 documents that bridge UFACTORY's software to the 850 cover Studio and the SDKs, not that manual114104.
- The 850 does accept standard Modbus TCP on port 502; that part is Verified72.
- ROS README material is Verified for the 850 only where the text names the 850 or uf850104.
A Worked Selection for S2
This project's design needs three paths to the arm: one for the agent's commands, one for signals from the other stations, and one for safety. Each choice below is this project's advice, not UFACTORY's, and each one has a cost.
The Agent's Commands: Python SDK, Position Mode
- In this cell, Python will be the primary coding method35.
- This project's advice: drive the arm through the Python SDK in position mode, mode 0, sending only moves the supervisor has checked, and read state from the automatic reports. Do not stream servo-mode targets, and deny the calls that change safety settings119120.
- Why: the SDK is Verified for the 850 through UFACTORY's own 850 documentation104. In mode 0 each move is a complete command that can block until it finishes, so it can be checked before it is sent6768.
- The cost: servo mode's streamed motion is given up. Servo mode wants a steady 100 Hz or 200 Hz stream, and runs only the latest target, at the arm's fastest speed109121. Errors come back only in the reply to the next command, so the agent depends on the report ports, whose rates are Inferred8874.
- ROS 2 is the alternative, but its README material is Verified for the 850 only where the text names the 850104.
Signals from Other Stations: Wired Inputs First
- This project's advice: bring S4's "all clear and ready" into S2 on a wired input set as General Input and read through the SDK, not as a network message122.
- Why: the controller's inputs and the SDK's I/O calls are documented for the 85041123, while every Modbus TCP register record is Inferred114. A wired input changes only when the device wired to it does122.
- The cost: one on or off signal per line, a common GND and open-drain outputs on the other side, and a length limit on the cable unless a longer run is tested122. A PLC that starts stored programs over Modbus TCP would have to wait until the register map is checked on the S2 controller112122.
Safety: Hardwired, Outside the Agent
- This project's advice: wire emergency stops and protective devices to the dedicated EI and SI inputs as redundant two-channel pairs, directly or through a safety-rated PLC, and keep the agent out of that path124.
- Why: UFACTORY provides those inputs for this job, wired as redundant pairs124125, and warns never to connect a safety signal to a non-safety PLC29. The UFACTORY sources do not say whether the controller's software safety functions run independently of the motion-command path126.
- The cost: the agent can stop the arm only in software. The SDK's emergency_stop() is a sequence of state commands, set_state(4), motion_enable(True), set_state(0), and it does not clear errors127. It lacks the hardware emergency stop's power removal128, so it never counts as an emergency stop or safeguard in S2's risk assessment129.
Sources Disagree on Error C33
- The SDK code list and the Studio manual call C33 a controller GPIO error, while the xArm Developer Manual V2.0.1 calls it abnormal current in the arm. Check which source you are reading before you act on it130.
What S2 Can Publish
- The candidates for what S2 publishes to the other agents or the hub are what its controller can make available: robot mode and state, error and warning codes, and the automatic state reports. That is Inferred131.
- This project's advice: do not use Studio's simulated arm or the SDK simulation flag as the simulation substrate for the agent work, because both act on a connected controller and a real arm132.
Check Yourself
Answer, then check. Each option has its own feedback, and nothing is scored.
Not settledOpen Questions · 18
What the sources do not settle for this section. Nothing here is papered over with a plausible number.
- Kind: Gap
No dedicated teach pendant for the 850 is documented in the sources fetched: teaching is by browser (UFACTORY Studio) and by hand guiding. User Manual V2.3.0 lists stop categories for a 'Three-Position Enabling Device', but no source fetched names the product or says whether it is offered for the 850.
See reference 19 - Kind: Contradiction
UFACTORY's documents give one page of UFACTORY Studio two names. The 850 hardware manual says a standard Modbus RTU end effector is debugged under 'Settings-Externals-Modbus RTU'. The Studio manual's Settings chapter, as read on 2026-10-13, heads its section 7.2.5, under 7.2 Externals, 'RS-485'; until that date the section was headed 'Modbus RTU'. UFACTORY's release note for Studio V2.8.2 names the page 'Settings - Externals - RS-485'; no fetched source says from which Studio version the page carries that name.
See reference 86 - Kind: Contradiction
UFACTORY's sources give two readings of controller error 2 (Studio's C2). The Studio manual until 2026-10-13, and the Python SDK's code list, say the Emergency IO of the Control Box is triggered; the manual's fix was to ground the 2 EIs of the Control Box and click 'Enable Robot'. The Studio manual as read on 2026-10-13 says the Emergency Stop Button is pushed in, and to release it and click 'Enable Robot'; it no longer mentions the Emergency IO or grounding the EIs. No fetched source says the two describe the same event, or which Studio and firmware versions show which text.
See reference 94 - Kind: Gap
No UFACTORY source was found that says whether the software safety functions (collision detection, safety boundary, reduced mode) are enforced independently of the motion-command path. It is also unknown whether the safety boundary checks the tool and the arm's links, or only the TCP; the documentation mentions only the TCP.
See reference 126 - Kind: Contradiction
Sources disagree on controller error code C33: the SDK code list and the Studio manual call it a controller GPIO/IO error, while the xArm Developer Manual V2.0.1 calls it abnormal current in the robotic arm.
See reference 130 - Kind: Contradiction
Sources disagree on the speed of the 850's internal base-to-flange Ethernet cable: gigabit or 1000M CAT5E on the product page and in the online hardware manual, but 100M and 'Standard CAT5' in User Manual V2.3.0.
See reference 137 - Kind: Gap
The factory IP address of an individual 850 controller is not documented; the manuals give only the range 192.168.1.xxx and the reset address 192.168.1.111.
See reference 138 - Kind: Gap
The IP address of the IntelliMake S2 850's control box, and how the S2 network is laid out (direct PC link, switch or router), are unknown.
See reference 139 - Kind: Contradiction
The Python SDK and the Studio manual name state 2 differently: the SDK's get_state and state documentation call it 'sleeping', while the Studio manual calls it ready to receive and execute commands.
See reference 140 - Kind: Contradiction
UFACTORY's documents disagree on the range of the control box's analog inputs AI0 and AI1. The 850 and xArm hardware manuals say the analog interface sets or measures 0-10 V. The Studio manual's Blockly chapter, as read on 2026-10-13, says the Get AI block returns 0–3 V, and gives 0–10 V for AO0 and AO1. Neither says the other is wrong.
See reference 141 - Kind: Contradiction
UFACTORY's documents and the lab give different ways to open UFACTORY Studio for the xArm 850. The Studio manual says Studio is reached through a browser without installing any software, by entering the controller's IP address followed by :18333 (iface-003, iface-005), and UFACTORY's 850 product page calls it web-based software inside the control box, with no installation needed (app-036, comp-037). As reported on 2026-10-23, the lab opens Studio with the desktop app, which learners download (ops-217), and connects it with the app's IP search field and its Connect Server button (ops-216). For operating the arm in the lab, the desktop app is current. The manual's and the product page's records are not superseded: they still say what UFACTORY's documents say.
See reference 142 - Kind: Gap
The physical I/O that will carry signals between S2 and S4 (and the other stations) is not defined. It may differ from the simulation's signals.
See reference 143 - Kind: Gap
What S2 publishes to the other agents or the hub is not defined: placement confirmations, S3 slot updates, faults and error codes, its own ready or busy state, and whether any work-order or traceability data passes through S2. IntelliMake says this will be developed as the simulation is created.
See reference 144 - Kind: Gap
Whether camera C1's or S11's output reaches S2 or the shared hub, and in what form, is not documented, and IntelliMake does not yet know.
See reference 145 - Kind: Gap
How S4's 'all clear and ready' signal reaches S2 in the physical cell, over a wired input or as a message, is not known to IntelliMake yet.
See reference 146 - Kind: Contradiction
UFACTORY documents disagree on the collision sensitivity range. The Studio Settings page says 1 to 5, while the Studio glossary, the Python SDK and the xArm Developer Manual say 0 to 5, with 0 disabling collision detection. A learner reading only the Settings page would not learn that the value can switch detection off.
See reference 147 - Kind: Contradiction
Sources disagree on the control box's RS-485 ports: one RS-485 master on the product page and in the online hardware manual, but one master and one slave (2 × RS-485) in User Manual V2.3.0.
See reference 148 - Kind: Contradiction
Sources disagree on the 850's end-effector communication protocol: the product page says Modbus RTU, and the online hardware manual's Tool RS485 section and Gripper G2 table describe RS-485 with Modbus RTU, but the specification tables of the online hardware manual and User Manual V2.3.0 say Modbus TCP. The tool port is RS-485, which suggests RTU, but this is not confirmed.
See reference 149
ProvenanceReferences · 149
Each number in the text points here. Every entry states its confidence class in words and keeps its evidence one click away. How to read the labels.
Key to the badges
- Confidence: Verified
- A manufacturer or IntelliMake document says so, the project owner stated it as the design, or it was observed directly. It does not mean anyone measured it at S2.
- Confidence: Inferred
- Reasoned from Verified facts. The reasoning is printed with the record.
- Confidence: Assumed
- Plausible but untested. The record says how it would be checked.
- Kind: Gap
- Not known. No figure or answer is given in its place.
- Kind: Contradiction
- Sources disagree. Both sides are shown, and the site does not pick one silently.
- Kind: Recommendation
- Project advice drawn from the records it cites. Not a fact about the machine and not a confidence class, so the filter never hides it.
- Awaiting cell access
- Awaiting cell access: could be confirmed or corrected once the physical S2 cell can be observed.
- This project's simulation and agent design, not the physical cell
- This project's simulation and agent design, not the physical cell.
Image Credits
- Line drawings of the 850 control box with its front and back panels labeled: emergency stop, robot power, state, power switch, AC port, network port, LAN, robot 48V, enabling switch and IO. © UFACTORY (Shenzhen UFACTORY Co., Ltd.). Source. Used with UFACTORY's written permission (2026-09-23), on the condition that each image links back to its source page.
- 3D model: © 2018 UFACTORY Inc., BSD-3-Clause, from UFACTORY Inc. (xArm-Developer/xarm_ros2). License text · Source
Sources for This Section
- IntelliMake Phase 1 Factory: Autonomous Production Demonstrator (infographic) · IntelliMake.org (IntelliMake)
- Owner statements from 2026-09-24 onward (verbatim; S40 and later) · Derek Stringfellow (project owner)
- Owner statements, 2026-09-21 (verbatim) · Derek Stringfellow (project owner)
- UFACTORY 850 Hardware Manual (online), 1. Safety · UFACTORY (manufacturer)
- UFACTORY 850 Hardware Manual (online), 2. Hardware Installation · UFACTORY (manufacturer)
- UFACTORY 850 Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY (manufacturer)
- UFACTORY 850 Hardware Manual (online), 4. Robotic Electrical Interface · UFACTORY (manufacturer)
- UFACTORY 850 Hardware Manual (online), 8. Technical Specifications · UFACTORY (manufacturer)
- UFACTORY 850 Hardware Manual (online), Preface · UFACTORY (manufacturer)
- UFACTORY 850 product page · UFACTORY (manufacturer)
- UFACTORY 850 User Manual V2.3.0 (PDF, older edition) · UFACTORY (manufacturer)
- UFACTORY ModbusTCP User Instructions (xArm-Python-SDK doc/UF_ModbusTCP_Manual.md) · UFACTORY (manufacturer)
- UFACTORY Release Note v2.7.0 · UFACTORY (manufacturer)
- UFACTORY Release Note v2.8.2 · UFACTORY (manufacturer)
- UFACTORY Studio product and download page · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 1. Preface · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 10. Robotic Arm Motion Mode and State · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 12. Error Handling · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 2. Glossary · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 3. Connection · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 4. Live Control · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 5. Blockly · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 6. Gcode · UFACTORY (manufacturer)
- UFACTORY Studio User Manual (online), 7. Settings · UFACTORY (manufacturer)
- UFACTORY Studio User Manual, 12. Error Handling, as it read until 2026-10-13 (publisher's repository, commit 533b75d) · UFACTORY (manufacturer)
- UFACTORY Studio User Manual, 7. Settings, as it read until 2026-10-13 (publisher's repository, commit 533b75d) · UFACTORY (manufacturer)
- UFACTORY xArm Hardware Manual (online), 3. Controller Electrical Interface · UFACTORY (manufacturer)
- xArm 850 S2 Project: Open Questions for IntelliMake, Batch 01 responses · IntelliMake.org (IntelliMake)
- xArm Developer Manual V2.0.1 (PDF) · UFACTORY (manufacturer)
- xArm-C++-SDK ReadMe · UFACTORY (manufacturer)
- xArm-CPLUS-SDK repository description (GitHub repository metadata) · UFACTORY (manufacturer)
- xArm-Python-SDK API code description (doc/api/xarm_api_code.md) · UFACTORY (manufacturer)
- xArm-Python-SDK API documentation (doc/api/xarm_api.md) · UFACTORY (manufacturer)
- xArm-Python-SDK example 0000-template.py · UFACTORY (manufacturer)
- xArm-Python-SDK README · UFACTORY (manufacturer)
- xArm-Python-SDK source, xarm/core/config/x_config.py · UFACTORY (manufacturer)
- xArm-Python-SDK source, xarm/core/wrapper/uxbus_cmd.py · UFACTORY (manufacturer)
- xArm-Python-SDK source, xarm/x3/base.py · UFACTORY (manufacturer)
- xArm-Python-SDK source, xarm/x3/decorator.py · UFACTORY (manufacturer)
- xarm_ros ReadMe (ROS 1, master branch) · UFACTORY (manufacturer)
- xarm_ros2 ReadMe (humble branch) · UFACTORY (manufacturer)
IntelliMake diagrams are redrawn as native figures, © IntelliMake.org. UFACTORY does not endorse this platform.