Firmware update failure after updating to Ubuntu 20.04

Hi all, I just updated our Stretch RE1 to Ubuntu 20.04. When trying to update the firmware, it fails at the wheels. I tried the fix here, but it was unsuccessful for me.

Any help would be appreciated!

$ REx_firmware_updater.py --install
Collecting information...
.....



A new release of Arduino CLI is available: 0.24.0 → 0.28.0
https://arduino.github.io/arduino-cli/latest/installation/#latest-packages
######################################## Recommended Firmware Updates ########################################


DEVICE                    | INSTALLED                 | RECOMMENDED               | ACTION                    
--------------------------------------------------------------------------------------------------------------
HELLO-MOTOR-ARM           | Stepper.v0.2.5p1          | Stepper.v0.2.5p1          | At most recent version    
HELLO-MOTOR-RIGHT-WHEEL   | Stepper.v0.2.5p1          | Stepper.v0.2.5p1          | At most recent version    
HELLO-MOTOR-LEFT-WHEEL    | Stepper.v0.2.5p1          | Stepper.v0.2.5p1          | At most recent version    
HELLO-PIMU                | Pimu.v0.0.1p0             | Pimu.v0.2.4p1             | Upgrade recommended       
HELLO-WACC                | Wacc.v0.0.1p0             | Wacc.v0.2.2p1             | Upgrade recommended       
HELLO-MOTOR-LIFT          | Stepper.v0.0.1p0          | Stepper.v0.2.5p1          | Upgrade recommended       


########################################## UPDATING FIRMWARE TO... ###########################################
HELLO-MOTOR-ARM           | Reinstalling Stepper.v0.2.5p1            
HELLO-MOTOR-RIGHT-WHEEL   | Reinstalling Stepper.v0.2.5p1            
HELLO-MOTOR-LEFT-WHEEL    | Reinstalling Stepper.v0.2.5p1            
HELLO-PIMU                | Upgrading to Pimu.v0.2.4p1               
HELLO-WACC                | Upgrading to Wacc.v0.2.2p1               
HELLO-MOTOR-LIFT          | Upgrading to Stepper.v0.2.5p1            
------------------------------------------------
WARNING: (1) Updating robot firmware should only be done by experienced users
WARNING: (2) Do not have other robot processes running during update
WARNING: (3) Leave robot powered on during update
WARNING: (4) Ensure Lift has support clamp in place
WARNING: (5) Lift may make a loud noise during programming. This is normal.
------------------------------------------------
Proceed with update?? [y/N]: y
-------- FIRMWARE FLASH hello-motor-arm | Stepper.v0.2.5p1 ------------
Looking for device hello-motor-arm on bus
Waiting for device hello-motor-arm to return to bus.
Starting programming. This will take about 5s...
Success in firmware compile
Success in firmware flash.
Waiting for device hello-motor-arm to return to bus.
-------- FIRMWARE FLASH hello-motor-right-wheel | Stepper.v0.2.5p1 ------------
Looking for device hello-motor-right-wheel on bus
Waiting for device hello-motor-right-wheel to return to bus.
Starting programming. This will take about 5s...
Success in firmware compile
Success in firmware flash.
Waiting for device hello-motor-right-wheel to return to bus.
..................Device hello-motor-right-wheel failed to return to bus

Hi @lstegner, sorry to hear you’re experiencing this issue with the firmware updater! The firmware updater tool has the complicated job leading 6 Arduinos through a multistep firmware flash. The process is brittle since each step can fail in ways not caught or handleable by the tool. There’s definitely some work to be done with making this tool more robust! In the meantime, we’d still like to get your robot back up and running with the newest and safest firmware.

Here are some debugging steps that will give us the information we need to know:

  1. Reboot the robot (instructions here)
  2. Open a terminal and run:
    ll /dev/hello*
    ll /dev/ttyACM*
    
  3. We’ll decide how to proceed based on the output we get from step 2.
1 Like

Totally understand the complication. I really appreciate your support to get it running.

Here are the outputs:

$ ll /dev/hello*
lrwxrwxrwx 1 root root  7 Nov  4 10:53 /dev/hello-dynamixel-head -> ttyUSB1
lrwxrwxrwx 1 root root  7 Nov  4 10:53 /dev/hello-dynamixel-wrist -> ttyUSB2
lrwxrwxrwx 1 root root  7 Nov  4 10:53 /dev/hello-lrf -> ttyUSB0
lrwxrwxrwx 1 root root  7 Nov  4 10:53 /dev/hello-motor-arm -> ttyACM4
lrwxrwxrwx 1 root root  7 Nov  4 10:53 /dev/hello-motor-left-wheel -> ttyACM0
lrwxrwxrwx 1 root root  7 Nov  4 10:53 /dev/hello-motor-lift -> ttyACM1
lrwxrwxrwx 1 root root  7 Nov  4 10:53 /dev/hello-motor-right-wheel -> ttyACM2
lrwxrwxrwx 1 root root  7 Nov  4 10:53 /dev/hello-pimu -> ttyACM3
lrwxrwxrwx 1 root root 15 Nov  4 10:53 /dev/hello-respeaker -> bus/usb/001/011
lrwxrwxrwx 1 root root  7 Nov  4 10:53 /dev/hello-wacc -> ttyACM5

$ ll /dev/ttyACM*
crw-rw-rw- 1 root dialout 166, 0 Nov  4 10:53 /dev/ttyACM0
crw-rw-rw- 1 root dialout 166, 1 Nov  4 10:53 /dev/ttyACM1
crw-rw-rw- 1 root dialout 166, 2 Nov  4 10:53 /dev/ttyACM2
crw-rw-rw- 1 root dialout 166, 3 Nov  4 10:54 /dev/ttyACM3
crw-rw-rw- 1 root dialout 166, 4 Nov  4 10:53 /dev/ttyACM4
crw-rw-rw- 1 root dialout 166, 5 Nov  4 10:53 /dev/ttyACM5

Thanks, looks like all of your robot’s USB devices still alias to hello-* correctly (e.g. ll /dev/hello* shows /dev/hello-motor-right-wheel -> ttyACM2), which is good news! In total, there are 10 hello-* aliases, and 6 Arduinos (which show up as ttyACM[0-9]).

After the right wheel failed to flash initially, the hello-pimu, hello-wacc, and hello-motor-lift devices didn’t get updated, so let’s update them individually now:

REx_firmware_updater.py --install --pimu
REx_firmware_updater.py --install --wacc
REx_firmware_updater.py --install --lift

The next step will depend on if these 3 flash successfully.

1 Like

I believe it all ran successfully! The only thing was that all three outputted the same message about post firmware updates:

###################################### Performing Post Firmware Updates ######################################
ls parse: Failed to match all device symlinks to /dev/ttyACMx for StretchSerialInfo
usb.core parse: Failed to match all devices for StretchSerialInfo

Here’s the full log output:

$ REx_firmware_updater.py --install --pimu
Collecting information...
.....



A new release of Arduino CLI is available: 0.24.0 → 0.28.0
https://arduino.github.io/arduino-cli/latest/installation/#latest-packages
######################################## Recommended Firmware Updates ########################################


DEVICE                    | INSTALLED                 | RECOMMENDED               | ACTION                    
--------------------------------------------------------------------------------------------------------------
HELLO-PIMU                | Pimu.v0.2.4p1             | Pimu.v0.2.4p1             | At most recent version    


########################################## UPDATING FIRMWARE TO... ###########################################
HELLO-PIMU                | Reinstalling Pimu.v0.2.4p1               
------------------------------------------------
WARNING: (1) Updating robot firmware should only be done by experienced users
WARNING: (2) Do not have other robot processes running during update
WARNING: (3) Leave robot powered on during update
------------------------------------------------
Proceed with update?? [y/N]: y
-------- FIRMWARE FLASH hello-pimu | Pimu.v0.2.4p1 ------------
Looking for device hello-pimu on bus
Waiting for device hello-pimu to return to bus.
Starting programming. This will take about 5s...
Success in firmware compile
Success in firmware flash.
Waiting for device hello-pimu to return to bus.
---- Firmware Update Complete!
###################################### Performing Post Firmware Updates ######################################
ls parse: Failed to match all device symlinks to /dev/ttyACMx for StretchSerialInfo
usb.core parse: Failed to match all devices for StretchSerialInfo

######################################## Confirming Firmware Updates #########################################
HELLO-PIMU                | Installed firmware matches target        



$ REx_firmware_updater.py --install --wacc
Collecting information...
.....



A new release of Arduino CLI is available: 0.24.0 → 0.28.0
https://arduino.github.io/arduino-cli/latest/installation/#latest-packages
######################################## Recommended Firmware Updates ########################################


DEVICE                    | INSTALLED                 | RECOMMENDED               | ACTION                    
--------------------------------------------------------------------------------------------------------------
HELLO-WACC                | Wacc.v0.2.2p1             | Wacc.v0.2.2p1             | At most recent version    


########################################## UPDATING FIRMWARE TO... ###########################################
HELLO-WACC                | Reinstalling Wacc.v0.2.2p1               
------------------------------------------------
WARNING: (1) Updating robot firmware should only be done by experienced users
WARNING: (2) Do not have other robot processes running during update
WARNING: (3) Leave robot powered on during update
------------------------------------------------
Proceed with update?? [y/N]: y
-------- FIRMWARE FLASH hello-wacc | Wacc.v0.2.2p1 ------------
Looking for device hello-wacc on bus
Waiting for device hello-wacc to return to bus.
Starting programming. This will take about 5s...
Success in firmware compile
Success in firmware flash.
Waiting for device hello-wacc to return to bus.
---- Firmware Update Complete!
###################################### Performing Post Firmware Updates ######################################
ls parse: Failed to match all device symlinks to /dev/ttyACMx for StretchSerialInfo
usb.core parse: Failed to match all devices for StretchSerialInfo

######################################## Confirming Firmware Updates #########################################
HELLO-WACC                | Installed firmware matches target        


$ REx_firmware_updater.py --install --lift
Collecting information...
.....



A new release of Arduino CLI is available: 0.24.0 → 0.28.0
https://arduino.github.io/arduino-cli/latest/installation/#latest-packages
######################################## Recommended Firmware Updates ########################################


DEVICE                    | INSTALLED                 | RECOMMENDED               | ACTION                    
--------------------------------------------------------------------------------------------------------------
HELLO-MOTOR-LIFT          | Stepper.v0.2.5p1          | Stepper.v0.2.5p1          | At most recent version    


########################################## UPDATING FIRMWARE TO... ###########################################
HELLO-MOTOR-LIFT          | Reinstalling Stepper.v0.2.5p1            
------------------------------------------------
WARNING: (1) Updating robot firmware should only be done by experienced users
WARNING: (2) Do not have other robot processes running during update
WARNING: (3) Leave robot powered on during update
WARNING: (4) Ensure Lift has support clamp in place
WARNING: (5) Lift may make a loud noise during programming. This is normal.
------------------------------------------------
Proceed with update?? [y/N]: y
-------- FIRMWARE FLASH hello-motor-lift | Stepper.v0.2.5p1 ------------
Looking for device hello-motor-lift on bus
Waiting for device hello-motor-lift to return to bus.
Starting programming. This will take about 5s...
Success in firmware compile
Success in firmware flash.
Waiting for device hello-motor-lift to return to bus.
---- Firmware Update Complete!
###################################### Performing Post Firmware Updates ######################################
ls parse: Failed to match all device symlinks to /dev/ttyACMx for StretchSerialInfo
usb.core parse: Failed to match all devices for StretchSerialInfo
###################################### Flashing Stepper Calibration: hello-motor-lift ######################################
Waiting for device hello-motor-lift to return to bus.
Writing gains to flash...
Gains written to flash

Reading calibration data from YAML...
Writing calibration data to flash...
..........................Successful write of FLASH.
Waiting for device hello-motor-lift to return to bus.
Waiting for device hello-motor-lift to return to bus.
Successful return of device to bus.

######################################## Confirming Firmware Updates #########################################
HELLO-MOTOR-LIFT          | Installed firmware matches target 

Great, I believe we can ignore the usb.core parse errors for now since both steps of the firmware flash completed successfully for these 3 devices. I plan to investigate the errors later.

Let’s continue by reflashing the remaining 3 devices, including the wheels, to confirm that both steps of the firmware flash complete successfully.

REx_firmware_updater.py --install --arm
REx_firmware_updater.py --install --left_wheel
REx_firmware_updater.py --install --right_wheel

Afterwards, let’s confirm all 6 devices are at the latest using:

REx_firmware_updater.py --current

We’ll decide what to do next based on what the above commands return.

1 Like

I think it seems to have all run successfully!

Here’s the output from the firmware flashes:

$ REx_firmware_updater.py --install --arm
Collecting information...
.....



A new release of Arduino CLI is available: 0.24.0 → 0.28.0
https://arduino.github.io/arduino-cli/latest/installation/#latest-packages
######################################## Recommended Firmware Updates ########################################


DEVICE                    | INSTALLED                 | RECOMMENDED               | ACTION                    
--------------------------------------------------------------------------------------------------------------
HELLO-MOTOR-ARM           | Stepper.v0.2.5p1          | Stepper.v0.2.5p1          | At most recent version    


########################################## UPDATING FIRMWARE TO... ###########################################
HELLO-MOTOR-ARM           | Reinstalling Stepper.v0.2.5p1            
------------------------------------------------
WARNING: (1) Updating robot firmware should only be done by experienced users
WARNING: (2) Do not have other robot processes running during update
WARNING: (3) Leave robot powered on during update
------------------------------------------------
Proceed with update?? [y/N]: y
-------- FIRMWARE FLASH hello-motor-arm | Stepper.v0.2.5p1 ------------
Looking for device hello-motor-arm on bus
Waiting for device hello-motor-arm to return to bus.
Starting programming. This will take about 5s...
Success in firmware compile
Success in firmware flash.
Waiting for device hello-motor-arm to return to bus.
---- Firmware Update Complete!
###################################### Performing Post Firmware Updates ######################################
ls parse: Failed to match all device symlinks to /dev/ttyACMx for StretchSerialInfo
usb.core parse: Failed to match all devices for StretchSerialInfo
###################################### Flashing Stepper Calibration: hello-motor-arm ######################################
Waiting for device hello-motor-arm to return to bus.
Writing gains to flash...
Gains written to flash

Reading calibration data from YAML...
Writing calibration data to flash...
..........................Successful write of FLASH.
Waiting for device hello-motor-arm to return to bus.
Waiting for device hello-motor-arm to return to bus.
Successful return of device to bus.

######################################## Confirming Firmware Updates #########################################
HELLO-MOTOR-ARM           | Installed firmware matches target        



$ REx_firmware_updater.py --install --left_wheel
Collecting information...
.....



A new release of Arduino CLI is available: 0.24.0 → 0.28.0
https://arduino.github.io/arduino-cli/latest/installation/#latest-packages
######################################## Recommended Firmware Updates ########################################


DEVICE                    | INSTALLED                 | RECOMMENDED               | ACTION                    
--------------------------------------------------------------------------------------------------------------
HELLO-MOTOR-LEFT-WHEEL    | Stepper.v0.2.5p1          | Stepper.v0.2.5p1          | At most recent version    


########################################## UPDATING FIRMWARE TO... ###########################################
HELLO-MOTOR-LEFT-WHEEL    | Reinstalling Stepper.v0.2.5p1            
------------------------------------------------
WARNING: (1) Updating robot firmware should only be done by experienced users
WARNING: (2) Do not have other robot processes running during update
WARNING: (3) Leave robot powered on during update
------------------------------------------------
Proceed with update?? [y/N]: y
-------- FIRMWARE FLASH hello-motor-left-wheel | Stepper.v0.2.5p1 ------------
Looking for device hello-motor-left-wheel on bus
Waiting for device hello-motor-left-wheel to return to bus.
Starting programming. This will take about 5s...
Success in firmware compile
Success in firmware flash.
Waiting for device hello-motor-left-wheel to return to bus.
---- Firmware Update Complete!
###################################### Performing Post Firmware Updates ######################################
ls parse: Failed to match all device symlinks to /dev/ttyACMx for StretchSerialInfo
usb.core parse: Failed to match all devices for StretchSerialInfo
###################################### Flashing Stepper Calibration: hello-motor-left-wheel ######################################
Waiting for device hello-motor-left-wheel to return to bus.
Writing gains to flash...
Gains written to flash

Reading calibration data from YAML...
Writing calibration data to flash...
..........................Successful write of FLASH.
Waiting for device hello-motor-left-wheel to return to bus.
Waiting for device hello-motor-left-wheel to return to bus.
Successful return of device to bus.

######################################## Confirming Firmware Updates #########################################
HELLO-MOTOR-LEFT-WHEEL    | Installed firmware matches target        




$ REx_firmware_updater.py --install --right_wheel
Collecting information...
.....



A new release of Arduino CLI is available: 0.24.0 → 0.28.0
https://arduino.github.io/arduino-cli/latest/installation/#latest-packages
######################################## Recommended Firmware Updates ########################################


DEVICE                    | INSTALLED                 | RECOMMENDED               | ACTION                    
--------------------------------------------------------------------------------------------------------------
HELLO-MOTOR-RIGHT-WHEEL   | Stepper.v0.2.5p1          | Stepper.v0.2.5p1          | At most recent version    


########################################## UPDATING FIRMWARE TO... ###########################################
HELLO-MOTOR-RIGHT-WHEEL   | Reinstalling Stepper.v0.2.5p1            
------------------------------------------------
WARNING: (1) Updating robot firmware should only be done by experienced users
WARNING: (2) Do not have other robot processes running during update
WARNING: (3) Leave robot powered on during update
------------------------------------------------
Proceed with update?? [y/N]: y
-------- FIRMWARE FLASH hello-motor-right-wheel | Stepper.v0.2.5p1 ------------
Looking for device hello-motor-right-wheel on bus
Waiting for device hello-motor-right-wheel to return to bus.
Starting programming. This will take about 5s...
Success in firmware compile
Success in firmware flash.
Waiting for device hello-motor-right-wheel to return to bus.
---- Firmware Update Complete!
###################################### Performing Post Firmware Updates ######################################
ls parse: Failed to match all device symlinks to /dev/ttyACMx for StretchSerialInfo
usb.core parse: Failed to match all devices for StretchSerialInfo
###################################### Flashing Stepper Calibration: hello-motor-right-wheel ######################################
Waiting for device hello-motor-right-wheel to return to bus.
Writing gains to flash...
Gains written to flash

Reading calibration data from YAML...
Writing calibration data to flash...
..........................Successful write of FLASH.
Waiting for device hello-motor-right-wheel to return to bus.
Waiting for device hello-motor-right-wheel to return to bus.
Successful return of device to bus.

######################################## Confirming Firmware Updates #########################################
HELLO-MOTOR-RIGHT-WHEEL   | Installed firmware matches target  

And from the final command:

$ REx_firmware_updater.py --current
######################################## Currently Installed Firmware ########################################
------------ HELLO-MOTOR-LIFT ------------
Installed Firmware: Stepper.v0.2.5p1
Installed Stretch Body supports protocols: p0 , p1
Installed protocol p1 : VALID
------------ HELLO-MOTOR-ARM ------------
Installed Firmware: Stepper.v0.2.5p1
Installed Stretch Body supports protocols: p0 , p1
Installed protocol p1 : VALID
------------ HELLO-MOTOR-LEFT-WHEEL ------------
Installed Firmware: Stepper.v0.2.5p1
Installed Stretch Body supports protocols: p0 , p1
Installed protocol p1 : VALID
------------ HELLO-MOTOR-RIGHT-WHEEL ------------
Installed Firmware: Stepper.v0.2.5p1
Installed Stretch Body supports protocols: p0 , p1
Installed protocol p1 : VALID
------------ HELLO-PIMU ------------
Installed Firmware: Pimu.v0.2.4p1
Installed Stretch Body supports protocols: p0 , p1
Installed protocol p1 : VALID
------------ HELLO-WACC ------------
Installed Firmware: Wacc.v0.2.2p1
Installed Stretch Body supports protocols: p0 , p1
Installed protocol p1 : VALID

Great! Looks like all 6 boards are happily upgraded. Let’s reboot the robot and run the following two commands to home and system check the robot:

stretch_robot_home.py
stretch_robot_system_check.py

If both execute without failure, then you’re all set! The final post-install step would be to configure the Dex Wrist if you’re using it.

1 Like

Thank you so much! The homing and system check ran as expected :slight_smile:
No dex wrist to set up, so I guess everything should be working now.

1 Like