A brownout is the roboRIO protecting itself when battery voltage sags too low. It is the most common reason a healthy-looking robot suddenly stops responding mid-match. Understanding the stages tells you how close to the edge you are running.
The stages (from WPILib):
- ~6.8V (Stage 1): the roboRIO's 6V output rail begins to diminish.
- 6.3V on roboRIO 1, 6.75V default on roboRIO 2 (Stage 2): PWM/relay outputs, user rails (6V/5V/3.3V), CAN motor control, and pneumatics are disabled. This is 'the robot went limp,' and the Power LED turns amber. The roboRIO stays here until voltage climbs back above 7.5V (or drops into Stage 3).
- ~4.5V (Stage 3): the device may black out entirely; it restarts once voltage exceeds ~4.65V.
How to confirm a brownout actually happened:
- roboRIO Power LED flashed amber.
- The Driver Station log highlights brownout events; the DS power/CAN tab shows the 12V fault count.
- In code:
RobotController.isBrownedOut()returns true on the loop it occurs; log it with a timestamp.
Systematic fix workflow (do in order):
- Check the battery first. A sagging battery is the number-one root cause. A battery that reads ~12.6V at rest but drops to 9-10V under a 150A draw has high internal resistance and must be retired. Load-test it (see the battery lesson).
- Add current limits. Uncapped drivetrains pull enormous stall current. Set supply current limits (e.g. around 70A per drive motor on CTRE, smartCurrentLimit on REV) per the worked-examples module. Stator limits help even more at the start of acceleration.
- Build a power budget. Allocate a max sustained current across drivetrain, manipulators, and mechanisms (WPILib cites ~180A as a reasonable sustainable ceiling on a good battery, and warns that drawing ~240A for more than a second or two is likely to cause problems), and enforce mutually-exclusive high-draw actions in software.
- Check wiring and battery connections. A loose battery lug or undersized wire adds resistance and voltage drop exactly when current spikes. The battery-to-breaker-to-PD path must be 6 AWG (R609) and the lugs must be tight (rotational connections checked every few matches).
- Consider the roboRIO 2 brownout setting. On a roboRIO 2 you can adjust the threshold:
RobotController.setBrownoutVoltage(7.0);(orSetBrownoutVoltage(7_V)in C++). The roboRIO 1 does not support an adjustable threshold. Lowering it just delays the inevitable and risks a full reboot.
Do not 'fix' brownouts by swapping to a fresh battery and hoping. Fix the current draw and verify with the power dashboard. A robot that browns out on a good battery will brown out on every battery by the third match of the day.
Key takeaways
- Brownout cutoff is 6.3V (roboRIO 1) and 6.75V default (roboRIO 2); the Power LED goes amber and actuators disable until voltage recovers above 7.5V.
- Root-cause order: battery health, then current limits, then power budget (~180A sustainable ceiling), then connections.
- Confirm in code with RobotController.isBrownedOut() and the DS power/CAN fault count; only the roboRIO 2 supports setBrownoutVoltage().
Keep going
Take the quiz · +10 XP with an accountMore in Common Mistakes & Troubleshooting
Sources & 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 — publicly, in the corrections log.
Sources and further reading
- WPILib: roboRIO Brownouts and Understanding Current Drawdocs.wpilib.org
- CTRE: Improving Performance with Current Limitsv6.docs.ctr-electronics.com
Read next
Articles on this, for competition day
The lesson covers how it works. These cover what to do when it breaks.
- 7 min read
FRC Brownout: Why Your Robot Goes Limp and How to Actually Fix It
The 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.
Read - 7 min read
FRC LED Lights: Wiring, Power Budgeting, and the WPILib AddressableLED API
How to wire addressable LEDs off the PDH's switchable channel, budget their current draw, and use WPILib's AddressableLED API to signal robot state.
Read
Lesson quiz
RequiredAll 3 right completes the lesson. Miss one and only that question comes back — anything you already answered correctly stays banked.
0 of 3 answered
01.At what battery voltage does the roboRIO 1 enter its main brownout stage and disable PWM outputs, CAN motor control, and pneumatics?
02.What is the underlying cause of most robot brownouts during a match?
03.Which is the BEST practice to reduce brownouts on an FRC robot?
Answer every question to submit.
All 35 lessons in Electrical & Wiring
- Not started:Mini-Project 1: A Single-Motor Test Stand from Battery to Spin
- Not started:Mini-Project 2: Current-Limited Drivetrain (CTRE and REV)
- Not started:Mini-Project 3: A Live Power-Monitoring Dashboard
- Not started:Mini-Project 4: A Switchable Channel for Lights and Vision
- Not started:Mini-Project 5: CAN Device Bring-Up with Tuner X and the Hardware Client