One robot controller for both programs, a new driver station, and the biggest set of breaking changes in years — drawn out, piece by piece.
Drawn from the NEMC 2026 session “SystemCore Software: Preparing for the Transition,” presented by the WPILib team. Watch it →
What SystemCore is, when it arrives, and whether it changes anything for your team.
SystemCore is a new robot controller built specifically for FIRST, and it is shared across both FRC and FTC. That single fact drives almost everything else: because both programs run the same hardware, they can now run the same software library, and what a student learns in one program carries directly into the other.
The changeover happens at different speeds. FRC gets a hard cutover — SystemCore is required starting in the 2027 season, and the roboRIO stops being competition-legal. FTC gets a gradual one, starting a season later, with the old control hubs staying legal alongside for several years.
In 2026, 93% of FRC teams programmed in Java, with the rest mainly C++ and Python. FTC is far more mixed — Android Studio with Java, browser-based OnBot Java, and blocks all have real populations. Both sets of teams land on the same library in 2027.
What you physically get, and what the extra processing power buys you.
SystemCore is built on a Raspberry Pi Compute Module 5 — substantially more processor, memory, and onboard storage than either the roboRIO or the REV Control Hub. A lot of the ports that needed add-on hardware before are simply on the board now. Click any part to see what it does.
Every connector on this board used to need something extra — a CAN adapter, an expansion hub, a co-processor, a laptop. Tap any highlighted part of the diagram to see what it replaces.
Tip: the diagram is keyboard-navigable — Tab to a port, then press Enter.
Tools that needed a desktop can now be served from the controller itself over Wi-Fi: VS Code and the blocks editor in a browser, plus web versions of AdvantageScope and Elastic. A Chromebook is enough.
AprilTag pipelines run on the controller, configured through a Limelight-style web interface. Object detection needs the add-on Hailo AI module. Budget roughly one Limelight 4 of processing power.
Loop overruns, out-of-memory errors, and Java garbage-collection pauses all get much harder to hit. The performance ceiling stops being the thing that shapes your code.
FTC robots pair SystemCore with a second board. MotionCore is the power and communication hub: it takes the 18 V battery, connects to SystemCore over the bridge, and hands out combined CAN-and-power connections to the new A301 brushless motor.
Three changes you will meet the first time you open a 2027 project.
For years, FRC field coordinates started at the blue alliance wall. In 2027 the origin moves to the center of the field. This sounds like paperwork until you write an autonomous routine that has to work from both alliances — then it is the difference between subtracting from the field length and flipping a sign.
You cannot debug a robot by watching it move. You need its numbers — what angle the arm believed it was at, what the encoder read, whether the camera saw a tag. And those numbers are wanted by two different people at two different times.
The old SmartDashboard API made those feel like two separate chores. The telemetry API that replaces it makes them one line of code, written without deciding which case you are serving:
telemetry.log("arm/angle", 42.7);A name and a value. It works out how to store it — numbers and booleans, poses and other geometry, unit-typed values, and your own types once you teach it how. Where the value goes is set up separately, and that is the part worth understanding.
An op mode is a driver-selectable program option, and it is the idea FTC has used for years arriving in FRC. Each one is its own class with its own lifecycle methods, and the driver station shows them in dropdowns — autonomous, teleop, and utility, which is the old test mode renamed. One op mode is active at a time.
For FRC teams this replaces the SendableChooser you used to publish to a dashboard. In match mode the driver station picks your autonomous op mode, then switches itself to your selected teleop op mode when autonomous ends. Robot code can also add options programmatically — one class registering both a left-side and right-side variant, for instance.
OpModeRobot replaces TimedRobot as the base class, but it is optional: TimedRobot still works if you would rather not change.Triggers and default commands created inside an op mode are automatically scoped to it — they activate when that op mode is selected and are torn down when you switch away. A competition teleop and a demo teleop can have entirely different button bindings with no conditional logic. That framework has its own visual guide; it is optional too, and Commands V2 keeps working for the next few seasons.
The programs you use to drive, log, debug, and write robot code.
FRC and FTC had separate driver station software; merging the controller means merging those too. The replacement is written by the WPILib team and runs on Windows, macOS, and Linux, with a compact touch layout for driver-hub style tablets. FRC teams on an actual field still need Windows — that is an FMS requirement, not a WPILib one.
Your autonomous chooser, no dashboard required.
Each of these had low usage and a better-maintained replacement. Retiring them is the same instinct as the rest of 2027: make the breaking changes once, in one season, rather than a few every year.
WPILib 2027 supports four languages: Java, C++, Python, and a new block-based option built on Google Blockly — the same idea as Scratch or the SPIKE Prime editor many students meet in elementary school. It matters most for FTC, where a large share of teams start in blocks.
The design goal is stated as “raise the floor, don't lower the ceiling”: blocks should get a beginner to a working robot, and every block shows the Python it generates, so moving on to text is a translation rather than a fresh start. Blocks also split into mechanisms and share code between op modes, so a blocks project does not have to be one giant pile.
def start(self): while self.encoder.get_distance() < 2.0: self.drive_motor.set(0.5) self.drive_motor.set(0.0)
Everything below works today, on a laptop, with no SystemCore in the building.
WPILib 2027 alphas are public and install through the normal installer. Everything below works without a SystemCore.
Full simulation lets you try the new APIs, the coordinate change, op modes, and Commands V3 on a laptop.
Alpha builds are downloadable now. Point it at a simulated robot and get familiar with the mode selectors before kickoff.
It now reads several FTC SDK log formats, so you can pick up the analysis tooling a full season before switching libraries.
Development happens in public on GitHub. Contributions are not limited to the library — the installer, tools, and docs all need people.
Everything here comes from an alpha-period talk. The presenters were explicit that details may change in response to testing feedback, and that pricing and availability will be announced on the FIRST community blog rather than guessed at. Treat specifics as current intent, not a promise.