Running Program
Running Program: Hardware Simulation Testing
WPILib's Hardware Simulation lets you run your code in the simulator while driving real motors connected to the CANivore.
A CANivore also lets you build robot applications that run directly on Windows or Linux machines.
Hardware simulation eliminates the need for a robot controller (roboRIO or SystemCore) during testing, while still letting you drive real motors over a CANivore.
Important: CANivore USB Setting
Before running Hardware Simulation code, you must turn OFFthe "CANivore USB" setting in Tuner X. This prevents conflicts between the simulation environment and physical hardware communication.
Steps
Hardware Simulation Setup
Running on the 2027 stack: OpModes + the simulator
Start the simulator, or deploy to the robot. The driver station then lists every mode class by name: each @Teleop, @Autonomous, and @Utility class you wrote. Pick one, and that OpMode is constructed: built fresh, right then, along with its button bindings. Underneath, the scheduler (Scheduler.getDefault().run()) keeps ticking every loop no matter which mode is active.
Where the code actually runs
The stack runs on Java 25 and deploys to SystemCore (./gradlew deploy targets /home/systemcore). The mode list comes straight from your code: a missing OpMode is nota compile error. If your mode doesn't show up on the driver station, check that the class:
- is
publicand notabstract - has its annotation with a
name(like@Teleop(name = "Teleop")) - lives in
frc.robotor a subpackage - has a public constructor that takes a
Robot
This is the WPILib 2027 alpha
2027.0.0-alpha-6, Phoenix 6 26.50.0-alpha-1) on Java 25 and SystemCore — so exact APIs may still shift between alpha builds. This page was last verified against alpha-6 in July 2026.