the video version
The same lesson as a narrated video. Watch it on YouTube
You floor the throttle, the lights dim, the robot stutters, and the Driver Station logs a 'Brownout' warning. This is the roboRIO protecting itself from low battery voltage, and it is one of the most common rookie failures.
The mechanism. The roboRIO uses staged brownout protection. When battery voltage drops below 6.8V, the 6V output on the PWM pins begins to drop. When it falls below 6.3V, the original roboRIO enters full brownout protection — it disables PWM outputs, shuts down user power rails, and sends disable commands to CAN motor controllers to keep itself from rebooting. The roboRIO 2.0 has a software-configurable Stage 2 level that defaults to 6.75V. Voltage sags hardest during hard acceleration or when a mechanism stalls, because motors pull their highest current then.
Diagnose it. In the Driver Station Charts/Power tab, watch battery voltage during the maneuver that triggers the brownout. A healthy battery under load should stay well above 7V; if it dives toward 6.3V you have your answer. Also check the PDH/PDP for tripped breakers and confirm the main breaker and battery leads are tight — a corroded or loose battery connection causes a large voltage drop that mimics a weak battery.
Fix it, in order of impact:
- Use a good, freshly charged battery. An old or undercharged battery is the single most common cause. Load-test your batteries and retire weak ones.
- Add current limits in software. This is the highest-leverage code fix. On a SPARK MAX set a smart current limit in the config (e.g. 40A for a drive NEO). On a Kraken/TalonFX set a supply current limit in
TalonFXConfiguration. Supply current limits are very effective at capping the current drawn from the battery that drags voltage down. - Ramp your commands. Slew-rate-limit driver inputs so the robot can't slam from 0 to 100% instantly; WPILib's
SlewRateLimiterdoes this in a few lines. - Tighten every power connection. Re-crimp battery leads, check the Anderson connector, and torque the main breaker terminals.
// SPARK MAX example (REVLib 2025+)
SparkMaxConfig cfg = new SparkMaxConfig();
cfg.smartCurrentLimit(40);
motor.configure(cfg, ResetMode.kResetSafeParameters,
PersistMode.kPersistParameters);
The mindset: brownouts are a power-budget problem, not a 'the robot is broken' problem. Decide how much current each subsystem may draw, enforce it with limits, and keep your batteries healthy.
the part worth keeping
Key takeaways
- Below 6.8V the 6V PWM rail drops; below 6.3V the original roboRIO enters full brownout protection (roboRIO 2.0 default ~6.75V)
- Current limits (SPARK MAX smart current limit / TalonFX stator limit) are the most effective software fix for brownouts
- A fresh battery and tight, clean power connections prevent most brownouts before any code change is needed
Getting Started with FRCCommon Mistakes & Troubleshootinglesson 2 of 5
Keep going
Take the quiz+10 XP with an accountwhere this came from
Sources and corrections
This lesson is AI-assisted: drafted from primary sources, then reviewed and edited by hand. Errors still get through. When one is reported we fix it and write down what changed, in public, in the corrections log.
sources and further reading
- docs.wpilib.orgroboRIO Brownout and Understanding Current Draw (WPILib)
- v6.docs.ctr-electronics.comImproving Performance with Current Limits (CTRE)
- docs.wpilib.orgSlewRateLimiter / Filters (WPILib)
clipped to this lesson
Articles that go further on this
The lesson gets you through the topic. These go wider on it, and they read in one sitting.
- 7 min readFRC Brownout: Why Your Robot Goes Limp and How to Actually Fix ItThe exact roboRIO brownout voltage stages, how to spot one in the Driver Station log, and the fixes ranked by payoff: current limits, battery health, gearing, and compressor scheduling./blogread it
- 20 min readREV Robotics for FRC: NEO Motors, Spark MAX/Flex, PDH & MAXSwerveA practical guide to the REV Robotics FRC ecosystem: NEO, NEO Vortex and NEO 550 motors, Spark MAX and Spark Flex controllers, the PDH, and MAXSwerve./blogread it
- 7 min readFRC "No Robot Code" & Driver Station Won't Connect: Full Fix ChecklistA verified, step-by-step FRC troubleshooting decision tree for "No Robot Code" and a Driver Station that won't connect to the roboRIO — most common causes first./blogread it
answer sheet
Lesson quiz
All 3 right completes the lesson. Miss one and only that question comes back, anything you already answered correctly stays banked.
0 of 3 answered
01On the original roboRIO (1.0), at what battery voltage does it enter full brownout protection and disable outputs?
02What happens to the robot's actuators when the roboRIO triggers a brownout?
03Which of the following is the most common underlying cause of mid-match brownouts?
Answer every question to submit.
All 28 lessons in Getting Started with FRCopenclose
01 / what-first-and-frc-are
02 / the-season-and-the-game
03 / culture-teams-and-roles
04 / getting-started-your-first-steps
05 / worked-examples-mini-projects
- Not read yet:Project 1 — Make a NEO Spin with the REV Hardware Client
- Not read yet:Project 2 — Deploy a Real Arcade-Drive Program
- Not read yet:Project 3 — Refactor into a Command-Based Drive Subsystem
- Not read yet:Project 4 — Build a Fuel Launcher for REBUILT
- Not read yet:Project 5 — A One-Button Autonomous Routine
06 / common-mistakes-troubleshooting
- Not read yet:The Connection Chain: When the Driver Station Won't Connect
- Not read yet:Brownouts: Why the Robot Goes Limp Mid-Match
- Not read yet:CAN Bus Gremlins: Missing and Conflicting Devices
- Not read yet:Software Gotchas: Inverted Drives, Scheduler Stalls, and Reading the RioLog
- Not read yet:Inspection-Day Failures: Bumpers, Size, and Weight
07 / advanced-techniques-case-studies
- Not read yet:Closed-Loop Control: PID + Feedforward for a Consistent Shot
- Not read yet:Swerve Drive: Omnidirectional Movement with YAGSL
- Not read yet:AprilTag Vision: Knowing Where You Are with PhotonVision
- Not read yet:Data-Driven Strategy: Scouting, EPA/OPR, and Alliance Selection
- Not read yet:Choosing Your Hardware Ecosystem: REV vs CTRE