Firmware Mismatch Error after upgrading my RE1 to ubuntu 20.04

Hi all, we updated the OS of our Stretch RE1 to Ubuntu 20.04 and now are facing an issue with the hello-motor-lift that it seems is unable to communicate with the OS. We tried several procedures and tools mentioned in the forum but none of them solved it.

Here is a list of what we tried:

  1. Running the REx_firmware_updater.py --install.
  2. Running the REx_firmware_flash.py
  3. Verified the udev rules and the serial number.

The output we got from running REx_firmware_updater.py --install:

[WARNING] [hello-motor-lift]:
---------------
Firmware protocol mismatch on hello-motor-lift.
Protocol on board is p5.
Valid protocols are: dict_keys(['p0', 'p1', 'p2']).
Disabling device.
Please upgrade the firmware and/or version of Stretch Body.
----------------

Unable to communicate with device hello-motor-lift
WARNING: Device hello-motor-lift is not valid. Unable to attempt the firmware update. Skipping device

Hi @argen1s, looks like you’re running into the opposite issue; your firmware is more up-to-date than your SDK is. Would you run the following command stretch_system_check.py and report its output here?

Hey @bshah, thanks for the quick response.

I know right, it seems that at some point the firmware got update to a newer version.

When I try to run the stretch_system_check.py I got command not found. However I can run stretch_robot_system_check.py .
Here is its output in case you need it:

[WARNING] [hello-motor-lift]: 
----------------
Firmware protocol mismatch on hello-motor-lift.
Protocol on board is p5.
Valid protocols are: dict_keys(['p0', 'p1', 'p2']).
Disabling device.
Please upgrade the firmware and/or version of Stretch Body.
----------------

[WARNING] [stretch_gripper]: DynamixelHelloXL430 Ping failed... stretch_gripper
DynamixelHelloXL430 Ping failed... stretch_gripper

---- Checking Devices ----
[Pass] : hello-wacc
[Pass] : hello-motor-left-wheel
[Pass] : hello-pimu
[Pass] : hello-lrf
[Pass] : hello-dynamixel-head
[Pass] : hello-dynamixel-wrist
[Pass] : hello-motor-arm
[Pass] : hello-motor-right-wheel
[Pass] : hello-motor-lift
[Pass] : hello-respeaker

---- Checking Pimu ----
[Pass] Voltage = 13.041690587997437
[Pass] Current = 1.7860200913513409
[Pass] Temperature = 23.93553226422041
[Pass] Cliff-0 = 30.01885986328125
[Pass] Cliff-1 = 35.606689453125
[Warn] Cliff-2 = -124.20953369140625 out of range -50 to 60 - calibrate using REx_cliff_sensor_calibrate.py
[Warn] Cliff-3 = -93.04324340820312 out of range -50 to 60 - calibrate using REx_cliff_sensor_calibrate.py
[Pass] IMU AZ = -9.73032283782959
[Pass] IMU Pitch = -1.2088491916656494
[Pass] IMU Roll = 1.8359375


---- Checking EndOfArm ----
[Fail] Ping of: stretch_gripper

[Fail] Ping of: wrist_pitch

[Fail] Ping of: wrist_roll

[Pass] Ping of: wrist_yaw
[Fail] Not Calibrated: wrist_yaw


---- Checking Head ----
[Pass] Ping of: head_pan

[Pass] Ping of: head_tilt


---- Checking Wacc ----
[Pass] AX = 9.65605640411377


---- Checking hello-motor-left-wheel ----
[Pass] Position = -0.8890706896781921


---- Checking hello-motor-right-wheel ----
[Pass] Position = -2.8143434524536133


---- Checking hello-motor-arm ----
[Pass] Position = 2.7623326778411865
[Fail] Position Calibrated = False


---- Checking hello-motor-lift ----
[Fail] Position = 0
[Pass] Position Calibrated = 0

Gotcha, it certainly looks like we should update the SDK. Would you run through this guide:

In particular, you’re interested in the Python Libraries section. After you’ve updated “hello-robot-stretch-body-tools”, you’ll see the stretch_robot_system_check.py CLI has been replaced by stretch_system_check.py.

Also, I’m noticing that there’s [Fail] Ping of: wrist_<something> in your sys check output. Would you send me a picture of your robot? I think the software is confused about which tool is attached to your robot.

1 Like

Magnificent!
Updating the SDK and running the REx_firmware_updater.py --install now worked. Here is the output for the command: REx_firmware_updater.py --current

REx_firmware_updater.py --current

----------- Deprecation Warning -----------
Your robot params are configured to load DexWrist2 params from Stretch Tool Share
Support for the DexWrist2 has moved to Stretch Body
 1) Open stretch_user_params.yaml and stretch_configuration_params.yaml in
    the ~/stretch_user/stretch-yyy-xxxx directory.
 2) Locate the following text in one of those files and remove it:
     params: stretch_tool_share.stretch_dex_wrist.params
     or
     params:
      - stretch_tool_share.stretch_dex_wrist.params
More information can be found at: https://github.com/hello-robot/stretch_body/pull/272
-------------------------------------------

Collecting information...
######################################## Currently Installed Firmware ########################################
------------ HELLO-MOTOR-LIFT ------------
Installed Firmware: Stepper.v0.7.4p5
Installed Stretch Body supports protocols: p0 , p1 , p2 , p3 , p4 , p5
Installed protocol p5 : VALID
------------ HELLO-MOTOR-ARM ------------
Installed Firmware: Stepper.v0.7.4p5
Installed Stretch Body supports protocols: p0 , p1 , p2 , p3 , p4 , p5
Installed protocol p5 : VALID
------------ HELLO-MOTOR-LEFT-WHEEL ------------
Installed Firmware: Stepper.v0.7.4p5
Installed Stretch Body supports protocols: p0 , p1 , p2 , p3 , p4 , p5
Installed protocol p5 : VALID
------------ HELLO-MOTOR-RIGHT-WHEEL ------------
Installed Firmware: Stepper.v0.7.4p5
Installed Stretch Body supports protocols: p0 , p1 , p2 , p3 , p4 , p5
Installed protocol p5 : VALID
------------ HELLO-PIMU ------------
Installed Firmware: Pimu.v0.7.0p5
Installed Stretch Body supports protocols: p0 , p1 , p2 , p3 , p4 , p5
Installed protocol p5 : VALID
------------ HELLO-WACC ------------
Installed Firmware: Wacc.v0.5.1p3
Installed Stretch Body supports protocols: p0 , p1 , p2 , p3
Installed protocol p3 : VALID

Here is the new output for the stretch_system_check.py command

[ERROR] [stretch_gripper]: DynamixelCommError. Mismatched baud rate. Expected 115200 but servo is set to 57600.
[WARNING] [stretch_gripper]: DynamixelHelloXL430 Ping failed... stretch_gripper
DynamixelHelloXL430 Ping failed... stretch_gripper
Dnamixel Com error: 

---- Checking Hardware ----
[Fail] Comms not ready (failed to ping stretch_gripper)
[Fail] Actuators not ready (robot not homed, run stretch_robot_home.py)
[Pass] Sensors are ready
[Pass] Battery voltage is 13.0 V

---- Checking Software ----
[Pass] Ubuntu 20.04 is ready
[Pass] All APT pkgs are setup correctly
[Pass] Firmware is up-to-date
[Warn] Python pkgs not up-to-date (run pip3 install -U hello-robot-stretch-factory)
[Pass] ROS Noetic is ready

Lastly, attached here are some pictures of the robot.


It seems we are having the same issue as in this post: https://forum.hello-robot.com/t/dynamixelhelloxl430-ping-failed-wrist-pitch/914.

So I will be following the procedure you recommended there and let you know about the results later on.

Thanks for all your help!

@bshah I just wanted to thank you again for the help and inform you that I already solved the issue with the wrist tool using the topic post I attached to my previous response.

Awesome, glad to hear it @argen1s! All the best with your development on Stretch!