Necessity of Canivore or an additional CAN BUS for Swerve

We are new to swerve and the additional 4-8 CAN IDs that are associated with it over a traditional robot drivetrain.

We have come across discussions here on CD that mention needing an additional CAN Bus when approaching 15+ CAN IDs on a robot.

Is this the case for most teams that run swerve and approach that 15+ CAN ID number? If so, are there FRC legal alternatives to the Canivore ($300)? Or even potentially a Raspberry Pi alternative with a break out board etc?

I also recall seeing in public repositories that other teams might be modifiying vendor utilities to modify the rate at which devices update, to keep the CAN bus utilization low. However, I am not sure if this reduction would impact the overall swerve drive performance.

Would anyone be able to share their experience or best practice?

1 Like

CANivore is the only FRC-legal product of it’s type that I know of.

As for whether it’s necessary, that will depend. Only certain devices (Falcon500/TalonFX, CANCoder, etc.) currently support it, so it would only be beneficial if you make significant use of those devices. CTRE devices tend to be rather “noisy” on the CANbus, which is what really necessitates such a device. If you’re using REV SparkMax/NEOs, then you may not need to follow that ~15 device guidance (and wouldn’t benefit from it anyway).

The real indicator should be your CAN utilization as shown in the DS log file viewer. If you have 15 devices and are at ~50% utilization, you’re perfectly fine. If you’re instead at 90+% utilization, it might be worth looking into.


Also you will find that ctre devices tend to use more CAN than Rev. Soooo it’s highly dependent on the setup ur running.


I wrote down some of our recommendations earlier this year, so I’ll share it here as well:

I don’t want to derail the thread but did want to mention a couple things:
(If folks want to discuss more feel free to email/DM us or start a new thread)

I’m genuinely curious where this perception comes from when I see it pop up from time to time.
We’ve done internal testing and the CAN bus usage of our devices is both very stable and both brushless controllers are within .1% of usage by default.

If folks have any testing results or steps that show higher or unusual usage, please send them to us at [email protected]. That’s something we definitely would want to investigate and get to the bottom of.


As a CSA, I’ve personally helped FAR too many teams with CAN utilization pegged at/near 100%, and they’ve almost all been 100% CTRE devices. The solution in many cases is simply to tune the status frame timing, but a some extreme cases have required switching a couple less-critical devices to PWM. Anecdotally, a couple teams did switch from Falcon500/TalonFX to NEO/SparkMax and notice a decrease in utilization, though that was a decision they made on their own and told me about later, so i cannot confirm whether anything else changed in parallel.

It might just be the historical prevalence of Falcons in Swerve bots. Swerve bots generally require 12 devices (assuming youre using CANcoders) plus the rest of the robot mechanisms, and SDS (among other swerve products) have nudged teams toward Falcons. Additionally, the 100ms delay in velocity calculations present in the NEO ecosystem also contributed toward teams preferring Falcons.

So yeah, I have no hard data to back up that claim, and fully acknowledge my own biases.

1 Like

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.