FRC Software Tour

Now let’s take a look at what some of the software we just installed can do.

Most of the software discussed here should have a shortcut on your computer’s desktop. If not, try opening the start menu and typing the application’s name:

FRC Driver Station

The FRC Driver Station is required for controlling any FRC robot during competitions, and it also provides lots of useful information about our robot’s status.

Here’s what my driver station looks like now, without any robot connected:

To connect your robot, first ensure that your computer’s firewalls are disabled. To do so, search for “Firewall” in the start menu, and click on “Firewall & network protection”.

Once your firewalls are disabled, either connect to your robot via Ethernet or Wi-Fi (if your robot’s radio is configured). Once connected, the “communications” light on the driver station should turn green. Now, let’s talk a bit about some of the other driver station features.

Status Lights

At the middle of the driver station are three status lights that can each be displayed as green or red:

  • The communications indicator is green when a robot is connected and red if not.
  • The robot code indicator is green when code has been uploaded to the connected robot and red if not.
  • The joysticks indicator is green if a controller is plugged into the computer running the driver station and red if not.
Navigation Menu

Along the left side of the driver station is a navigation menu for accessing different driver station features:

The top option opens the operation panel. This includes a button for enabling and disabling the connected robot along with some useful information about the robot and the computer running the driver station:

On the left side of the operation panel is a menu for selecting the robot’s current game mode. We write different code for each of these modes, so it can be nice to individually test out each one. At real FRC matches, the mode will automatically update based on the amount of time elapsed in the match.

  • TeleOperated mode is when the robot is controlled manually using controllers.
  • Autonomous mode is when the robot is controlled just by our code.
  • Practice mode simulates a real match, automatically switching from autonomous mode to teleoperated mode at the right time (usually about 15 seconds into the match).
  • Test mode is a mode that can be programmed with specific robot actions to quickly test out.

The second button in the driver station’s navigation menu opens up the diagnostics panel:

Here we’ll mostly find information about our robot’s connection to the driver station. Whenever faced with connection issues, it’s usually best to first try pressing the refresh button at the top of this panel.


The third button in the driver station’s navigation menu opens up the setup panel:

If the team number displayed here is not your team’s number, be sure to update it. Without doing so, your robot may fail to connect to the driver station.

The setup panel also contains a dropdown for selecting the “dashboard type.” The driver station’s dashboard is the larger window that opens up with the driver station, and it looks like this by default:

Some of the other dashboard types allow for greater configuration, which we’ll look at later.

Lastly, the right side of the setup panel has configuration settings for the practice mode covered earlier. This allows different game modes to automatically last for the specified number of seconds.

USB Devices

The fourth button in the driver station’s navigation menu opens up the USB devices panel:

Here, a list of all connected (or previously-connected) USB controllers is displayed. The two controllers displayed on my driver station are not currently connected but were previously, so they’re displayed in a gray font.

If any controllers are connected, a list of all controller inputs will be displayed to the right of the controller list. When programming a controller, we need to determine the ID number of each input of its inputs (e.g. the X button has ID 1 and the A button has ID 2). These ID numbers are how we identify each input in our code, and we can find them here in the driver station.

Power & CAN

The last button in the driver station’s navigation menu opens up the power & CAN panel:

This displays basic information about power output to our robot and its CAN bus.


The dashboard of the driver station contains lots of useful information that can help with controlling our robot (just like the dashboard of a car).

The left half of the dashboard contains a space for camera output. Most FRC teams decide to place at least one camera (usually a USB webcam) on their robot to make maneuvering the robot a bit easier. In our code, we can stream this camera footage to this area of the dashboard (we’ll go over how to do this later).

The right half of the dashboard can display different types of data:

  • The drive panel displays information about the robot’s motion and controller inputs.
  • The camera panel offers another area to display camera output (if using more than one camera).
  • The basic panel allows us to send information to the robot via text fields, buttons, and sliders. It also contains indicator lights that can be programmed to display information about the robot.
  • The custom panel can be customized with various controls and indicators like those found on the basic tab.
  • The test panel can display information about the robot when it is in test mode.
  • The commands panel allows us to manually run specific robot commands (e.g. moving forward for a certain distance).
  • The checklist panel can be edited to include a list of actions to take before controlling the robot.
  • The variables panel lists all variables stored in the robot’s network. In code, we can put new variables on the robot’s network, allowing us to access them from other devices, such as the computer running the driver station and a Raspberry Pi.

FRC Shuffleboard

The FRC Shuffleboard can be used as the driver station’s dashboard (instead of the default dashboard), and it allows for greater customizability.

The Shuffleboard is centered around the CameraServer and NetworkTables. The CameraServer is what we use to send camera data from our robot to our laptop, and NetworkTables is what we use to store variables on the robot’s network.

Whenever we put camera data in the CameraServer or variables in NetworkTables via our code, that data will appear on the side panel of the Shuffleboard:

(No robot is connected to my computer, so this panel is empty.)

Then, widgets can be used to interact with this data we have access to. All available widgets can be found in the “Widgets” tab of the side panel.

Note: There is also FRC software called the SmartDashboard, which is very similar to the Shuffleboard but with fewer features and a less clean design.

Phoenix Tuner

Coming soon.