Unable to Open Serial Port for PIMU - SerialException: No such file or directory

Hello everyone,

I’m experiencing an issue with my Stretch 3 robot when running the system check. Below is the output I’m seeing when running system_check and robot_home :

hello-robot@stretch-se3-3045:~$ 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-3045

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

Here’s what I’ve tried so far:

  • Updated the Python tools for Stretch.
  • Reinstalled the workspace.
  • Verified the physical connection of the device.

Despite these steps, I’m still unable to resolve the issue. The /dev/hello-pimu device doesn’t appear to exist, and I’m not sure what might be preventing it from being recognized.

Any guidance on troubleshooting this issue would be greatly appreciated!

Thanks in advance for your help.

Hi @allen, Would you run the following debug steps?

  1. Start by power cycling the robot.
  2. Run REx_firmware_flash.py --map and post the output here.
  3. Run REx_discover_hello_devices.py --list and post the output here.
  4. Run cat /etc/udev/rules.d/95-hello-arduino.rules and post the output here.

Hi @bshah, @allen is working with me, and I have run into the same issue today with the robot. Allen let me know that after a few days, when he tried the robot, the error seemed to disappear. Today, however, we have the same issue.

Thanks for the assistance! Here is the output from the debug steps:

  1. Start by power cycling the robot – done!

  2. Run REx_firmware_flash.py --map and post the output here:

hello-robot@stretch-se3-xxxx:~$ 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-pimu': No such file or directory
------------------------------------------
hello-motor-arm | ttyACM3
hello-motor-right-wheel | ttyACM2
hello-motor-left-wheel | ttyACM0
hello-pimu | None
hello-wacc | ttyACM4
hello-motor-lift | ttyACM1
------------------------------------------
ttyACM0 | hello-motor-left-wheel
ttyACM1 | hello-motor-lift
ttyACM2 | hello-motor-right-wheel
ttyACM3 | hello-motor-arm
ttyACM4 | hello-wacc
------------------------------------------
  1. Run REx_discover_hello_devices.py --list and post the output here.
hello-robot@stretch-se3-xxxx:~$ 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_Stepper',
                  'model_id': '804d',
                  'path': '/devices/pci0000:00/0000:00:14.0/usb3/3-2/3-2.1/3-2.1:1.0/tty/ttyACM0',
                  'serial': '9F3B5D2F514E52544A4A2020FF0C2106',
                  'vendor': 'Arduino_LLC',
                  'vendor_id': '2341'},
 '/dev/ttyACM1': {'model': 'Hello_Stepper',
                  'model_id': '804d',
                  'path': '/devices/pci0000:00/0000:00:14.0/usb3/3-7/3-7:1.0/tty/ttyACM1',
                  'serial': '90287E9C514E52544A4A2020FF0D131B',
                  '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': '5342FFCE514E52544A4A2020FF0D051C',
                  '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': '9EA21BE3514E52544A4A2020FF0C1206',
                  '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': '0353706150303247482E3120FF162A34',
                  '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.1/3-1.1.2/3-1.1.2:1.0/ttyUSB0/tty/ttyUSB0',
                  'serial': 'AQ04PD5E',
                  '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': 'A10P3WU7',
                  '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'}}

  1. Run cat /etc/udev/rules.d/95-hello-arduino.rules and post the output here:
hello-robot@stretch-se3-xxxx:~$ 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}=="C4200132514E52544A4A2020FF0D0727", SYMLINK+="hello-pimu", ENV{ID_MM_DEVICE_IGNORE}="1"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="804d",MODE:="0666", ATTRS{serial}=="9EA21BE3514E52544A4A2020FF0C1206", SYMLINK+="hello-motor-arm", ENV{ID_MM_DEVICE_IGNORE}="1"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="804d",MODE:="0666", ATTRS{serial}=="90287E9C514E52544A4A2020FF0D131B", SYMLINK+="hello-motor-lift", ENV{ID_MM_DEVICE_IGNORE}="1"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="804d",MODE:="0666", ATTRS{serial}=="9F3B5D2F514E52544A4A2020FF0C2106", SYMLINK+="hello-motor-left-wheel", ENV{ID_MM_DEVICE_IGNORE}="1"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="804d",MODE:="0666", ATTRS{serial}=="5342FFCE514E52544A4A2020FF0D051C", SYMLINK+="hello-motor-right-wheel", ENV{ID_MM_DEVICE_IGNORE}="1"
KERNEL=="ttyACM*", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="804d",MODE:="0666", ATTRS{serial}=="0353706150303247482E3120FF162A34", SYMLINK+="hello-wacc", ENV{ID_MM_DEVICE_IGNORE}="1"

1 Like

Thanks @lstegner! Looks like one of power management PCB isn’t appearing to the onboard computer. Given that the robot boots, I’m guessing there’s a loose USB cable. Would you email us at support@hello-robot.com and I’ll send you a debugging guide to inspect the cables.