-
Notifications
You must be signed in to change notification settings - Fork 4k
Open
Labels
bugSomething isn’t working correctlySomething isn’t working correctlyrobotsIssues concerning robots HW interfacesIssues concerning robots HW interfacesteleoperatorsEverything related to teleoperatorsEverything related to teleoperators
Description
Ticket Type
🐛 Bug Report (Something isn't working)
Environment & System Info
LeRobot version:
- LeRobot version: 0.4.4
- Platform: Linux-6.17.0-14-generic-x86_64-with-glibc2.42
- Python version: 3.10.18
- Huggingface Hub version: 0.35.3
- Datasets version: 4.1.1
- Numpy version: 2.2.6
- FFmpeg version: 7.1.1
- PyTorch version: 2.7.1+cu126
- Is PyTorch built with CUDA support?: True
- Cuda version: 12.6
- GPU model: NVIDIA GeForce RTX 4070
Python version: 3.10
OS: Ubuntu 22.04
Hardware: SO-101 robot arm (leader + follower)
Servos: Hiwonder HX-30HM, HX-10HM
Power supply: 12V 20A
Connection: USB serial (/dev/serial/by-id)Description
I am experiencing persistent disconnections when using teleoperation with an SO-101 leader/follower setup.
The issue occurs even after:
- recalibrating both arms
- verifying motor IDs
- replacing the power supply
- checking wiring
- resetting calibration files
Initially the teleoperation would run for a few seconds and then crash with:
ConnectionError: Failed to sync read 'Present_Position'
After further debugging and recalibration attempts, the error now occurs during robot connection:
RuntimeError: FeetechMotorsBus motor check failed
Here is the full code error:
(lerobot) verlyba@verlyba-PC:~/robotics/lerobot$ lerobot-teleoperate \
--robot.type=so101_follower \
--robot.port=$FOLLOWER \
--robot.id=F1 \
--teleop.type=so101_leader \
--teleop.port=$LEADER \
--teleop.id=L1 \
--robot.disable_torque_on_disconnect=False
INFO 2026-03-11 20:33:00 eoperate.py:207 {'display_compressed_images': False,
'display_data': False,
'display_ip': None,
'display_port': None,
'fps': 60,
'robot': {'calibration_dir': None,
'cameras': {},
'disable_torque_on_disconnect': False,
'id': 'F1',
'max_relative_target': None,
'port': '/dev/serial/by-id/usb-1a86_USB_Single_Serial_5B3E119428-if00',
'use_degrees': False},
'teleop': {'calibration_dir': None,
'id': 'L1',
'port': '/dev/serial/by-id/usb-1a86_USB_Single_Serial_5B3E121827-if00',
'use_degrees': False},
'teleop_time_s': None}
INFO 2026-03-11 20:33:00 so_leader.py:79 L1 SOLeader connected.
INFO 2026-03-11 20:33:00 follower.py:106 F1 SOFollower connected.
Teleop loop time: 16.74ms (60 Hz)
INFO 2026-03-11 20:33:05 o_leader.py:156 L1 SOLeader disconnected.
Traceback (most recent call last):py:230 F1 SOFollower disconnected.
File "/home/verlyba/miniconda3/envs/lerobot/bin/lerobot-teleoperate", line 6, in <module>
sys.exit(main())
File "/home/verlyba/robotics/lerobot/src/lerobot/scripts/lerobot_teleoperate.py", line 246, in main
teleoperate()
File "/home/verlyba/robotics/lerobot/src/lerobot/configs/parser.py", line 233, in wrapper_inner
response = fn(cfg, *args, **kwargs)
File "/home/verlyba/robotics/lerobot/src/lerobot/scripts/lerobot_teleoperate.py", line 224, in teleoperate
teleop_loop(
File "/home/verlyba/robotics/lerobot/src/lerobot/scripts/lerobot_teleoperate.py", line 163, in teleop_loop
obs = robot.get_observation()
File "/home/verlyba/robotics/lerobot/src/lerobot/utils/decorators.py", line 29, in wrapper
return func(self, *args, **kwargs)
File "/home/verlyba/robotics/lerobot/src/lerobot/robots/so_follower/so_follower.py", line 182, in get_observation
obs_dict = self.bus.sync_read("Present_Position")
File "/home/verlyba/robotics/lerobot/src/lerobot/utils/decorators.py", line 29, in wrapper
return func(self, *args, **kwargs)
File "/home/verlyba/robotics/lerobot/src/lerobot/motors/motors_bus.py", line 1146, in sync_read
ids_values, _ = self._sync_read(
File "/home/verlyba/robotics/lerobot/src/lerobot/motors/motors_bus.py", line 1178, in _sync_read
raise ConnectionError(f"{err_msg} {self.packet_handler.getTxRxResult(comm)}")
ConnectionError: Failed to sync read 'Present_Position' on ids=[1, 2, 3, 4, 5, 6] after 1 tries. [TxRxResult] Incorrect status packet!
I tried checking the kernel for USB disconnections, but none appear.
Context & Reproduction
No response
Relevant logs or stack trace
Checklist
- I have searched existing tickets to ensure this isn't a duplicate.
- I am using the latest version of the
mainbranch. - I have verified this is not an environment-specific problem.
Additional Info / Workarounds
No response
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn’t working correctlySomething isn’t working correctlyrobotsIssues concerning robots HW interfacesIssues concerning robots HW interfacesteleoperatorsEverything related to teleoperatorsEverything related to teleoperators