Skip to content

The FRC Software Stack: What Runs Where

learnfrc.com
learnfrc.comAuthor
Veer Bajaj
Veer BajajMaintainer

An FRC robot is a small distributed system. Understanding which piece runs where keeps you from being lost later.

  • roboRIO — the robot’s main controller (a real-time Linux computer made by NI). Your robot program runs here. Two versions are in use: the roboRIO 1.0 and the newer roboRIO 2.0 (which boots from a microSD card).
  • Your development laptop — runs Visual Studio Code with the WPILib extension , where you write, build, and deploy code.
  • Driver Station laptop — runs the FRC Driver Station (Windows only), the only legal way to enable/disable the robot during a match. It also forwards joystick/gamepad inputs to the robot.
  • Radio — the robot’s wireless link to the field/Driver Station. For 2025 and later, most regions use the VH-109 radio from Vivid Hosting , which replaced the older OpenMesh OM5P-AC (the OM5P is still used in a few regions).
  • Motor controllers (Talon FX, SPARK MAX, etc.), the Power Distribution Hub (PDH) or legacy Power Distribution Panel (PDP) , the Pneumatics Hub (PH) , and sensors — connected over the CAN bus and addressed by ID in your code.

WPILib is the free, open-source software library that FIRST and the community maintain. It provides the classes you use for everything: motor outputs, sensor reads, joystick reads, kinematics, control loops, and simulation. You almost never talk to the roboRIO’s hardware directly — you call WPILib.

WPILib ships with a build system based on Gradle (called GradleRIO) that compiles your code and deploys it to the roboRIO over the network.

  1. You write code in VS Code.
  2. “Build Robot Code” compiles it with Gradle.
  3. “Deploy Robot Code” copies the program to the roboRIO and restarts the robot program.
  4. The Driver Station enables the robot in Autonomous , Teleop , or Test mode.
  5. Your code reacts: reading sensors/inputs and setting motor outputs on a fixed loop (typically every 20 ms).

NetworkTables is WPILib’s publish/subscribe system that shares values between the robot and dashboards (like Elastic , Glass , Shuffleboard , or AdvantageScope). This is how you graph a sensor, tune a value live, or pick an autonomous routine before a match.

When something breaks, the first question is always which computer is responsible? A deploy failure is a laptop-to-roboRIO problem; a robot that won’t enable is usually a Driver Station or radio problem; a value that won’t update on the dashboard is a NetworkTables problem. Keeping the map in your head turns debugging from guesswork into a checklist.

  • WPILib is the official open-source library; your robot code is built on it.
  • The roboRIO runs your program; VS Code deploys to it; the Driver Station enables it.
  • Motor controllers, the PDH/PDP, and sensors live on the CAN bus and are addressed by ID.
  • For 2025+, most teams use the VH-109 (Vivid Hosting) radio, replacing the OM5P-AC.
  • NetworkTables shares live data between the robot and dashboards.

This lesson was adapted from learnfrc.com.