Releases: REVrobotics/REV-Software-Binaries
SPARK MAX Firmware 25.0.1
Note for updating
If you have any SPARK MAXes on your bus that are running firmware version 25.0.0, turn the robot power off and update those SPARK MAXes to version 25.0.1 individually. Once all devices on the bus are running either version 25.0.1 or version 24.0.1 or earlier, you can turn the robot back on and update the remaining devices in bulk.
Fixes
- Fixes a bug causing high CAN utilization when devices with 24.0.x firmware are present and Hardware Client is opened
SPARK MAX Firmware 25.0.0
NOTE: We recommend performing a Factory Reset and then Persisting Parameters on every SPARK updated to firmware 25.0.0 and later for the first time.
Fixes
New Features
- Adds support for zero-centered mode for duty cycle sensor
- Adds MAXMotion
- Only sends periodic CAN frames if they are needed (except for frames 0 and 1, which are enabled by default)
- Optimizes parameter operations for lower CAN traffic
- Reworks the CAN frames for better performance and reliability
- Supports standard roboRIO Universal Heartbeat
- Reorganizes faults to differentiate between warnings (which will not stop the motor) and faults (which will stop the motor)
- Slows down status frames when other devices are updating firmware
SPARK Flex Firmware 25.0.0
NOTE: We recommend performing a Factory Reset and then Persisting Parameters on every SPARK updated to firmware 25.0.0 and later for the first time.
Fixes
- Fixes issue where burning flash would fail occasionally
- Fixes case where CAN message handling can be delayed by a few milliseconds
- Improves updating a downstream PDH, PH, or Servo Hub
New Features
- Adds MAXMotion
- Supports standard roboRIO Universal Heartbeat
- Only sends periodic CAN frames if they are needed (except for frames 0 and 1, which are enabled by default)
- Optimizes parameter operations for lower CAN traffic
- Reworks the CAN frames for better performance and reliability
- Reorganizes faults to differentiate between warnings (which will not stop the motor) and faults (which will stop the motor)
- Slows down status frames when other devices are updating firmware
- Adds support for Flex Dock
- Adds support for zero-centered mode for duty cycle sensor
Servo Hub firmware 25.0.1
- Fixes bug causing some servo hub boards to read channel current more slowly
- Fixes case where Servo Hub doesn't report being in the primary lock state
Servo Hub firmware 25.0.0
- Improves robustness of overcurrent handling
- Tracking for whether any CAN message came from hardware CAN
- Recovery task to detect when the short-circuit is removed
- Turn off the Buck Regulator when PGood falls
- Set PGood Fault based on pin state
Servo Hub firmware 24.0.4
Initial Servo Hub Release
- Control servos via RS-485 or CAN
- Channels can be enabled/disabled individually
- Channels can be powered on/off individually
- Status LEDs show the current state of each channel
- Adds over-current protection per-channel
REV Hardware Client 1.7.0-frcBeta2025.1
General improvements
- Further improves the reliability of displaying devices on a high-traffic CAN bus
- Fixes a performance regression in the 2025 beta release that affected CAN communication
Servo Hub
- Adds Servo Hub support with the following functionality
- Updating firmware
- Setting the CAN ID
- Actuating servos
SPARK improvements
- Improves UI for configuring closed-loop parameters (including MAXMotion parameters) on the Run and Telemetry tabs
REV Hardware Client 1.7.0
Breaking changes
- The standard REV Hardware Client installer no longer bundles device software files that are under 5MB
- If you need an installer that has device software bundled into it, download one of the offline installers linked at https://docs.revrobotics.com/rev-hardware-client
- Once a REV Hardware Client instance starts controlling a SPARK motor controller, no other REV Hardware Client instance connected to the same bus can control a SPARK motor controller until the first instance exits
- The "Follow SPARK Using Preset" feature has been removed, in favor of simpler follower mode parameters in SPARK firmware version 25 and later
- The "Burn Flash" button for SPARK motor controllers has been renamed to "Persist Parameters" to match the 2025 version of REVLib
- The SPARK parameter
kSensorType
is no longer automatically-updated when thekMotorType
parameter is changed- This only impacts SPARK firmware versions prior to 25.0.0, as the
kSensorType
parameter has been removed from later versions
- This only impacts SPARK firmware versions prior to 25.0.0, as the
- The MAXSwerve Utility now requires SPARK firmware version 25.0.0 or later
General improvements
- Fixes issue where the installer could cause the computer to reboot unexpectedly
- Improves the reliability of displaying and using devices on a high-traffic CAN bus
- Fixes a performance regression in the 2025 beta release that affected CAN communication
- Stops the Telemetry tab from breaking after a device that was providing data is removed
- Fixes issue where Android devices that have a type other than "device" or "recovery" would cause device scans to take a long time and not include any Android devices or Expansion Hubs
- Only allows one instance of the REV Hardware Client to be open at a time
- Fixes an issue where Pneumatic Hubs and Power Distribution Hubs would be disabled when a SPARK motor controller is commanded to run
Servo Hub
- Adds support for updating, configuring, and actuating servos on Servo Hub
SPARK improvements
- Adds support for SPARK firmware version 25
- Improves UI for configuring closed-loop parameters (including MAXMotion parameters) on the Run and Telemetry tabs
- Fixes issue updating SPARKs over the CAN bus
- Improves organization of parameters on the Advanced Tab
- Improves organization of faults and warnings on the Basic Tab
- Some faults were renamed or combined
- The statuses of the soft and hard limits are now displayed above the faults and warnings
- Exposes individual faults on the Telemetry tab
- Improves organization of SPARK signals on the Telemetry tab
- Many under-the-hood improvements
REVLib 2025.0.1
An offline installer is available here.
This release does not include LabVIEW. REVLib v2025.0.0 for LabVIEW is available to download here.
C++ docs: https://codedocs.revrobotics.com/cpp/
Java docs: https://codedocs.revrobotics.com/java/
Changes for Java and C++
- [SPARK] Fixes issue where enabling a limit switch in Java simulation would cause it to always return that it was pressed
- [SPARK] Fixes issue causing REVLib to have higher than normal CPU usage when retrieving SPARK status frames
- [SPARK] Fixes issue where a status frame timeout would cause a segmentation fault
REVLib 2025.0.0
You can install the C++/Java version of this library using this JSON URL in VSCode:
https://software-metadata.revrobotics.com/REVLib-2025.json
An offline installer is available here.
REVLib for LabVIEW is available to download here.
C++ docs: https://codedocs.revrobotics.com/cpp/
Java docs: https://codedocs.revrobotics.com/java/
Major Changes
- [REVLib] Requires non-prerelease versions of SPARK and Servo Hub firmware v25.0.0 or higher
- [SPARK] Java/C++: Moves to a more declarative approach for configuring devices
- Adds
SparkFlexConfig
,SparkMaxConfig
which includes settings for different aspects of each device - Adds
configure()
method to apply a config object's settings to one or more devices of the correct type - Adds
configureAsync()
to configure a device without blocking the program - Adds a
configAccessor
field to device classes for reading configuration parameters directly from the device
- Adds
- [SPARK] Java/C++: Adds better support for simulation
- Moves away from
REVPhysicsSim
to offer better support for WPILib physics simulation instead - Revamps simulation GUI data, including brand new fields for auxiliary devices
- Adds Sim classes for each auxiliary device, allowing for more thorough simulation in the WPILib injection style
- Adds
SparkSim.iterate()
method which features simulated current limits, closed-loop control, and more - Adds
SparkSimFaultManager
for throwing simulated faults
- Moves away from
- [SPARK] Adds support for MAXMotion
- Adds control types
MAXMotionPositionControl
andMAXMotionVelocityControl
- Adds
MAXMotionConfig
. Only trapezoidal profile is available at this time. - MAXMotion is not a drop-in replacement for Smart Motion, as you will need to retune PID gains.
- Adds control types
- [SPARK] Improves experience with managing status signals from SPARK devices
- Adds
SignalsConfig
to adjust signal periods and always on setting - Automatically enables relevant status frames if a signal is requested by the user
- Adds
- [Servo Hub] Java/C++: Adds initial support for Servo Hub
- Follows the same paradigms used for SPARK
- Includes basic simulation support for Servo Hub
Breaking Changes
- [SPARK] Renames
CANSparkFlex
andCANSparkMax
toSparkFlex
andSparkMax
respectively - [SPARK] Renames
SparkPIDController
toSparkClosedLoopController
- [SPARK] Removes configuration parameter setter/getter methods. Use
SparkBase.configure()
andSparkBase.configAccessor
instead. - [SPARK] Removes
burnFlash()
andrestoreFactoryDefaults()
. Use theResetMode
andPersistMode
options inSparkBase.configure()
instead. - [SPARK] Removes
REVPhysicsSim
in favor of new simulation system - [SPARK] Removes async mechanism for setting parameters by setting CAN timeout to 0 in favor of
configureAsync()
- [SPARK] Moves all SPARK related classes into a
spark
package in Java and namespace in C++ - [SPARK] LabVIEW: Reworks entire VI palette
- Improves organization of VI palette by separating VIs by configuration, device status, and utility
- Moves towards increased usage of polymorphic VIs for easier navigation of the palette
Other Changes
- [SPARK] Fixes issue where multiple setpoint commands would be sent when switching control types on a SPARK, resulting in the motor oscillating between the different setpoints
- [SPARK] Deprecates
kSmartMotion
andkSmartVelocity
control types in favor ofkMAXMotionPositionControl
andkMAXMotionVelocityControl
respectively. - [SPARK] Deprecates
SparkBase.setInverted()
andSparkBase.getInverted()
in favor of using the new configuration system - [SPARK] Updates
ClosedLoopController.setReference()
to use theClosedLoopSlot
enum instead of an int - [SPARK] Improves error description when attempting to persist parameters while the robot is enabled
- [SPARK] Improves getting faults/warnings by returning a
Faults
orWarnings
object- The raw bits of faults and warnings are available as a field in the respective struct
- [SPARK] Adds
hasActiveFault()
,hasStickyFault()
,hasActiveWarning()
, andhasStickyWarning()
to check if there is a fault/warning present at all on the SPARK device - [SPARK] Adds
pauseFollowerMode()
andresumeFollowerMode()
- [SPARK] Adds ability for follower mode to work even if the follower is not referenced in user code
- [SPARK] Adds support for specifying an absolute encoder's duty cycle start and end pulse widths in
AbsoluteEncoderConfig
- [SPARK] Adds configuration option for setting whether the absolute encoder is zero-centered
- [REVLib] Fixes potential memory leaks in string handling
- [SPARK] LabVIEW: Improves reliability of CAN transactions by adding a retry mechanism