Important RVR Firmware Update - August 31, 2020

Micah Daby Updated by Micah Daby

RVR connecting to a mobile phone

Starting on August 31st, 2020, a new version of firmware will be available for RVR. This download will update the firmware for the Nordic SoC to version 8.3.432 and the ST SoC to version 8.6.448.

How Do I Update My RVR Firmware?

To successfully update your RVR firmware, you'll need:

  • Your Sphero RVR.
  • A supported iOS or Android device, with Sphero Edu installed. Learn about supported devices here. Please ensure you are using the latest Sphero Edu app. In particular, you will need Sphero Edu 6.0.1 or newer on Android to update the RVR firmware.
  1. Ensure your Sphero RVR is charged and powered "on".
  2. Ensure that your supported mobile device is connected to the internet (Wi-Fi or a cellular connection).
  3. Start the Sphero Edu app on your supported device and connect to your Sphero RVR.
  4. The Sphero RVR firmware update will automatically start. Depending on your device, this may take between three and 7 minutes.
  5. To confirm you have the correct firmware, click on the "connect" button and review the firmware numbers. You should see 8.3.432, 8.6.448.

Will This Update Affect My Existing Sphero Edu Programs?

Since the performance of RVR will fundamentally change with this firmware update, you may notice that your RVR behaves a little differently when using your Sphero Edu programs:

  1. The addition of vector drive enhancements means greater accuracy when RVR turns. However, you may need to increase roll block time to allow RVR to properly turn to the target heading.
  2. The top speed for RVR has been slightly increased. As a result, you may need to adjust the speed settings within various blocks.

What About the Public SDK?

To take advantage of many new firmware features, you'll need to get the latest public SDK for RVR. For more information about our public SDKs for RVR, visit our SDK website here.

Full RVR Firmware Change Log:

Control System

Previously, one driving control system was available to users through roll commands, requiring a target heading and a target speed, with an optional reverse flag.

This update replaces the “roll drive” controller with a higher-performing, more configurable implementation and supplements it with 3 selectable alternate control systems.  All control systems present a normalized interface, similar to current roll commands, and an SI units interface where linear velocities are specified in m/s and yaw angular velocity (if applicable) is specified in degrees/s.

Improvement: Higher Top Speed

  • Actual top speed increased to 2 m/s (maximum speed will eventually drop below this as the battery discharges)

Improvements: Drive with Heading

  • Vector drive state machine
    • State 1: If currently stopped, spin in place to face the target heading
    • State 2: Drive along the target heading
  • User-adjustable yaw and linear velocity slew rates.
  • Default yaw slew behavior is dependent on the magnitude of the commanded linear velocity (to make deliberate, slow driving easier).
  • Yaw targets are typically hit within +/-1 degree of the IMU reading.  Previous tolerance was +/- 3 degrees.
  • Steady-state yaw error during driving tracks to zero across the full linear velocity range (a bug had previously reduced yaw control accuracy at high linear velocities)
  • Driving upside down now works.

New: Drive to X-Y Position

  • Provide a target position and orientation as (X,Y,yaw), along with a maximum linear velocity, and RVR will rotate to face the target position, drive to the target position, and then turn to the specified orientation, sending an API async when done.
  • Defaults to driving forward to the target position, but supports options for reverse driving, or automatic selection of forward or reverse to minimize the required initial turn.
  • Supports relative or absolute coordinates

New: RC Drive

  • Provide a linear velocity, and a yaw angular velocity, and RVR will follow that command until it times out (default 2 seconds) or a new command is received.
  • Supports multiple adjustable options for linear acceleration rates, so your project can keep delicate payloads safe, or put the pedal to the metal.

New: Tank Drive

  • Provide left and right tread linear velocity targets in normalized or SI units form, and RVR will track these targets.  If your goal is to build an externally hosted control system, this is a much more useful interface layer to use than raw motor commands, as the onboard velocity controllers update at 1kHz and the maximum streaming data update rate to provide feedback to an external control system is 100 Hz.

New: Stop Controller

  • Previously, the only ways to stop the robot have been to shut off the motors completely or to specify a target heading with a target speed of zero, which continued to control heading for 2 seconds before guaranteeing the motors would be off.
  • Now RVR will come to a controlled stop after a command timeout or after receiving a stop command.  Braking acceleration is adjustable using API commands.

New: Adjustable Drive Command Timeouts

  • Previously, drive commands timed out after 2(ish) seconds.  Timeout precision has been dramatically improved (should be within 1 ms), and timeout duration is now adjustable via API command.


  • Encoder position resolution has increased 4x due to counting all quadrature edges as ticks rather than full quadrature cycles.
  • Velocity measurement has improved with changes to the encoder driver.
  • Tick counts for the left and right encoders are available as 32 bit signed integer values through a getter command and the streaming data interface.


  • RVR’s locator precision is improved.  There was a bug that caused loss of precision at low tread velocities, which has been fixed.  Precision is now independent of tread velocity.


  • A new command, Disable Notifications and Active Commands, turns off external notifications and cancels some actions as a convenience for restarting SDK programs.  The following items are affected by this command:
    • Streaming packets
    • Current sense amplifier notifications
    • Gyro notifications
    • Infrared module
    • Motor fault notifications
    • Motor thermal protection notifications
    • All driving

Other Bug Fixes

  • Idle to “soft sleep” (standby) transition now occurs after 5 minutes, as designed, to reduce power consumption.
  • Resolved “lurching” bug in the roll drive controller.
  • API packets requesting only error responses are now forwarded correctly between processors.

How did we do?

Robot Keeps Disconnecting (iOS)

Changing support for Android 5, 6, and 7 in February, 2022