The robot is failing to detect the lift motor

Hello everyone! I’m running into an issue where the robot’s lift motor has suddenly stopped being detected by the system. The OS boots normally and all the other motors appear under their usual /dev/ttyACM* device paths, but the lift motor is completely missing, which prevents the robot from entering gamepad/teleop mode. Since this happened abruptly, I’m not sure whether this is a firmware issue, a USB enumeration problem, or a hardware fault on the stepper board. Has anyone encountered this before or have suggestions for next steps?

Here some of my logs:

hello-robot@stretch-se3-3122:~$ stretch_lift_home.py
For use with S T R E T C H (R) from Hello Robot Inc.
---------------------------------------------------------------------

[ERROR] [hello-motor-lift]: SerialException(2): could not open port /dev/hello-motor-lift: [Errno 2] No such file or directory: '/dev/hello-motor-lift'
[WARNING] [hello-motor-lift]: Unable to open serial port for device /dev/hello-motor-lift

hello-robot@stretch-se3-3122:~$ stretch_system_check.py
For use with S T R E T C H (R) from Hello Robot Inc.
---------------------------------------------------------------------

Model = Stretch 3
Tool = DexWrist 3 w/ Gripper
Serial Number = stretch-se3-3122

[ERROR] [hello-motor-lift]: SerialException(2): could not open port /dev/hello-motor-lift: [Errno 2] No such file or directory: '/dev/hello-motor-lift'
[WARNING] [hello-motor-lift]: Unable to open serial port for device /dev/hello-motor-lift
[WARNING] [robot]: Not able to use asyncio for transport communications. Defaulting to sync.

hello-robot@stretch-se3-3122:~$ ls /dev/hello-*
/dev/hello-dynamixel-head     /dev/hello-motor-left-wheel   /dev/hello-respeaker
/dev/hello-dynamixel-wrist    /dev/hello-motor-right-wheel  /dev/hello-wacc
/dev/hello-lrf                /dev/hello-nav-head-camera
/dev/hello-motor-arm          /dev/hello-pimu
hello-robot@stretch-se3-3122:~$

Hi @gabxap ,

Thank you for your post and your debugging information.

It’s not immediately clear what the issue is. Could you please collect more info about your system and send it to us? You can post it here or email support@hello-robot.com.

  1. Start by power cycling the robot.
  2. Run sudo dmesg and post the output here (it will be long).
  3. Run ls -al /dev/ttyACM* and post the output here.
  4. Run REx_firmware_flash.py --map and post the output here.
  5. Run REx_discover_hello_devices.py --list and post the output here.
  6. Run cat /etc/udev/rules.d/95-hello-arduino.rules and post the output here.
  7. Run cat /etc/udev/rules.d/99-hello-dynamixel.rules and post the output here.

Best,
Shehab

Hi, thank you very much for your support. The issue resolved itself. If the problem reappears, I will reach out to you.

2 Likes

Hi @shehab ,

I am working with @gabxap and facing the same issue again. I have run all the commands you mentioned and attached the outputs.

Here is the dmesg file link and rest of the outputs are below.

hello-robot@stretch-se3-3122:~$ ls -al /dev/ttyACM*
crw-rw-rw- 1 root dialout 166, 0 Feb 27 15:29 /dev/ttyACM0
crw-rw-rw- 1 root dialout 166, 1 Feb 27 15:29 /dev/ttyACM1
crw-rw-rw- 1 root dialout 166, 2 Feb 27 15:29 /dev/ttyACM2
crw-rw-rw- 1 root dialout 166, 3 Feb 27 15:29 /dev/ttyACM3
crw-rw-rw- 1 root dialout 166, 4 Feb 27 15:29 /dev/ttyACM4

hello-robot@stretch-se3-3122:~$ REx_firmware_flash.py --map
For use with S T R E T C H (R) from Hello Robot Inc.
---------------------------------------------------------------------

ls: cannot access '/dev/hello-motor-lift': No such file or directory
------------------------------------------
hello-motor-arm | ttyACM3
hello-motor-right-wheel | ttyACM2
hello-motor-left-wheel | ttyACM1
hello-pimu | ttyACM0
hello-wacc | ttyACM4
hello-motor-lift | None
------------------------------------------
ttyACM0 | hello-pimu
ttyACM1 | hello-motor-left-wheel
ttyACM2 | hello-motor-right-wheel
ttyACM3 | hello-motor-arm
ttyACM4 | hello-wacc
------------------------------------------

hello-robot@stretch-se3-3122:~$ REx_discover_hello_devices.py --list
For use with S T R E T C H (R) from Hello Robot Inc.
---------------------------------------------------------------------

{'/dev/ttyACM0': {'model': 'Hello_Pimu',
                  'model_id': '804d',
                  'path': '/devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1.3/3-1.3:1.0/tty/ttyACM0',
                  'serial': '9B7EA4BA514E52544A4A2020FF093421',
                  'vendor': 'Arduino_LLC',
                  'vendor_id': '2341'},
 '/dev/ttyACM1': {'model': 'Hello_Stepper',
                  'model_id': '804d',
                  'path': '/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1/3-2.1:1.0/tty/ttyACM1',
                  'serial': 'B604DA66514E52544A4A2020FF091625',
                  'vendor': 'Arduino_LLC',
                  'vendor_id': '2341'},
 '/dev/ttyACM2': {'model': 'Hello_Stepper',
                  'model_id': '804d',
                  'path': '/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.4/3-2.4:1.0/tty/ttyACM2',
                  'serial': 'E42DEDC3514E52544A4A2020FF091325',
                  'vendor': 'Arduino_LLC',
                  'vendor_id': '2341'},
 '/dev/ttyACM3': {'model': 'Hello_Stepper',
                  'model_id': '804d',
                  'path': '/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.3/3-2.3.2/3-2.3.2:1.0/tty/ttyACM3',
                  'serial': 'C014302A514E52544A4A2020FF090524',
                  'vendor': 'Arduino_LLC',
                  'vendor_id': '2341'},
 '/dev/ttyACM4': {'model': 'Hello_Wacc',
                  'model_id': '804d',
                  'path': '/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.3/3-2.3.3/3-2.3.3.3/3-2.3.3.3:1.0/tty/ttyACM4',
                  'serial': '63B3AA13514E52544A4A2020FF091718',
                  'vendor': 'Arduino_LLC',
                  'vendor_id': '2341'},
 '/dev/ttyUSB0': {'model': 'FT232R_USB_UART',
                  'model_id': '6001',
                  'path': '/devices/pci0000:00/0000:00:14.0/usb3/3-1/3-1.4/3-1.4.2/3-1.4.2:1.0/ttyUSB0/tty/ttyUSB0',
                  'serial': 'AG0KRI0G',
                  'vendor': 'FTDI',
                  'vendor_id': '0403'},
 '/dev/ttyUSB1': {'model': 'FT232R_USB_UART',
                  'model_id': '6001',
                  'path': '/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.3/3-2.3.3/3-2.3.3.2/3-2.3.3.2:1.0/ttyUSB1/tty/ttyUSB1',
                  'serial': 'AG0KRCUA',
                  'vendor': 'FTDI',
                  'vendor_id': '0403'},
 '/dev/ttyUSB2': {'model': 'CP2102_USB_to_UART_Bridge_Controller',
                  'model_id': 'ea60',
                  'path': '/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.2/3-2.2:1.0/ttyUSB2/tty/ttyUSB2',
                  'serial': '0001',
                  'vendor': 'Silicon_Labs',
                  'vendor_id': '10c4'}}

hello-robot@stretch-se3-3122:~$ cat /etc/udev/rules.d/95-hello-arduino.rules
# INSTALLATION
#
# First, copy this rules file into the following directory:
#
# /etc/udev/rules.d/
#
# Second, run the following command to make the new rule files become
# active and then disconnect and reconnect the device.
#
# sudo udevadm control --reload
#
# When writing udev rules, you can find relevant information about a
# device by running commands like the following with the appropriate
# device file name. You can often find the device file name by running
# dmesg from the command line right after plugging in the device.
#
# udevadm info -a /dev/ttyUSB0
#
# REFERENCES
#
# http://www.linuxfromscratch.org/lfs/view/6.2/chapter07/symlinks.html
#


#This rule is to make all Arduinos r/w permissions for the IDE
KERNEL=="ttyACM*", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="804d",MODE:="0666", ATTRS{serial}=="9B7EA4BA514E52544A4A2020FF093421", SYMLINK+="hello-pimu", ENV{ID_MM_DEVICE_IGNORE}="1"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="804d",MODE:="0666", ATTRS{serial}=="C014302A514E52544A4A2020FF090524", SYMLINK+="hello-motor-arm", ENV{ID_MM_DEVICE_IGNORE}="1"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="804d",MODE:="0666", ATTRS{serial}=="D4867C2F514E52544A4A2020FF092618", SYMLINK+="hello-motor-lift", ENV{ID_MM_DEVICE_IGNORE}="1"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="804d",MODE:="0666", ATTRS{serial}=="B604DA66514E52544A4A2020FF091625", SYMLINK+="hello-motor-left-wheel", ENV{ID_MM_DEVICE_IGNORE}="1"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="804d",MODE:="0666", ATTRS{serial}=="E42DEDC3514E52544A4A2020FF091325", SYMLINK+="hello-motor-right-wheel", ENV{ID_MM_DEVICE_IGNORE}="1"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="804d",MODE:="0666", ATTRS{serial}=="63B3AA13514E52544A4A2020FF091718", SYMLINK+="hello-wacc", ENV{ID_MM_DEVICE_IGNORE}="1"

hello-robot@stretch-se3-3122:~$ cat /etc/udev/rules.d/99-hello-dynamixel.rules
# INSTALLATION
#
# First, copy this rules file into the following directory:
#
# /etc/udev/rules.d/
#
# Second, run the following command to make the new rule files become
# active and then disconnect and reconnect the device.
#
# sudo udevadm control --reload
#
# When writing udev rules, you can find relevant information about a
# device by running commands like the following with the appropriate
# device file name. You can often find the device file name by running
# dmesg from the command line right after plugging in the device.
#
# udevadm info -a /dev/ttyUSB0
#
# REFERENCES
#
# http://www.linuxfromscratch.org/lfs/view/6.2/chapter07/symlinks.html
#

SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTR{device/latency_timer}="1", ATTRS{serial}=="AG0KRI0G", SYMLINK+="hello-dynamixel-head"
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTR{device/latency_timer}="1", ATTRS{serial}=="AG0KRCUA", SYMLINK+="hello-dynamixel-wrist"

Hi @hasibulhshovo, thank you for reaching out.

I traced the lift motor with SN D4867C2F514E52544A4A2020FF092618 and it’s not showing up in your dmesg. I know @gabxap said the issue resolved itself before. I wonder if it’s a loose connection.

Just to confirm, you haven’t performed a firmware update on a lift motor, have you? I’m asking to confirm if the motor is possibly bricked.

Could you please email support@hello-robot.com? We might be able to help you better there in case we need to send you parts.

Best wishes,
Shehab

Hi @shehab , Thanks for your reply.

I have executed few commands to check. Here are the outputs:

hello-robot@stretch-se3-3122:~$ stretch_system_check.py -v
For use with S T R E T C H (R) from Hello Robot Inc.

Model = Stretch 3
Tool = DexWrist 3 w/ Gripper
Batch = usher
Serial Number = stretch-se3-3122

[ERROR] [hello-motor-lift]: SerialException(2): could not open port /dev/hello-motor-lift: [Errno 2] No such file or directory: ‘/dev/hello-motor-lift’
[WARNING] [hello-motor-lift]: Unable to open serial port for device /dev/hello-motor-lift
[WARNING] [robot]: Not able to use asyncio for transport communications. Defaulting to sync.
hello-robot@stretch-se3-3122:~$ lsb_release -d
Description: Ubuntu 22.04.5 LTS
hello-robot@stretch-se3-3122:~$ REx_firmware_updater.py --recommended
Collecting information…
Collecting information…
[ERROR] [hello-motor-lift]: SerialException(2): could not open port /dev/hello-motor-lift: [Errno 2] No such file or directory: ‘/dev/hello-motor-lift’
[WARNING] [hello-motor-lift]: Unable to open serial port for device /dev/hello-motor-lift
Unable to communicate with device hello-motor-lift
Collecting information…

Invalid version format in tag: All_Release_Binaries
######################################## Recommended Firmware Updates ########################################

DEVICE | INSTALLED | RECOMMENDED | ACTION

HELLO-MOTOR-ARM | Stepper.v0.7.6p5 | Stepper.v0.7.6p5 | At most recent version
HELLO-MOTOR-RIGHT-WHEEL | Stepper.v0.7.6p5 | Stepper.v0.7.6p5 | At most recent version
HELLO-MOTOR-LEFT-WHEEL | Stepper.v0.7.6p5 | Stepper.v0.7.6p5 | At most recent version
HELLO-PIMU | Pimu.v0.8.3p6 | Pimu.v0.8.3p6 | At most recent version
HELLO-WACC | Wacc.v0.5.1p3 | Wacc.v0.5.1p3 | At most recent version
HELLO-MOTOR-LIFT | No device available | |


Hi @hasibulhshovo,

Thank you for sharing the outputs, that’s very helpful.

From the logs, the lift motor device /dev/hello-motor-lift is not being detected at all, which is why both stretch_system_check.py and the firmware updater cannot communicate with it. All other devices are responding normally.

At this point, it would be best if you could email us directly at support@hello-robot.com so we can continue troubleshooting with you there. We’ll share some step-by-step instructions to help isolate whether this is a loose connection, cabling issue, or something else, and determine next steps if parts are needed.

We’ll take it from there and get you back up and running as quickly as possible.

Best,
Jason