WPILib Installation Guide
This guide is intended for Java and C++ teams. LabVIEW teams can skip to Installing LabVIEW for FRC (LabVIEW only). Additionally, the below tutorial shows Windows 10, but the steps are identical for all operating systems. Notes differentiating operating systems will be shown.
Prerequisites
- Supported Operating Systems and Architectures:
Windows 10 & 11, 64 bit only. 32 bit and Arm are not supported
Ubuntu 22.04, 64 bit. Other Linux distributions with glibc >= 2.34 may work, but are unsupported
macOS 11 or higher, both Intel and Arm for Java. C++ requires macOS 12 or higher with Xcode 14.
Warning
The following OSes are no longer supported: macOS 10.15, Ubuntu 18.04 & 20.04, Windows 7, Windows 8.1, and any 32-bit Windows.
WPILib is designed to install to different folders for different years, so that it is not necessary to uninstall a previous version before installing this year’s WPILib.
Downloading
WPILib Installer
Release Notes
This is the 4th beta release of WPILib for the 2024 season. Please join the discussions regarding beta testing at https://github.com/wpilibsuite/2024Beta/discussions.
This release requires the 2024_v2.0 beta roboRIO image to use on a robot. This image is included in the NI 2024 Beta 2 Game Tools.
Getting Started
Check out what's new for 2024 and jump directly to the WPILib installation guide.
If you're starting from a 2023 robot project, you will need to import it to create a 2024 project.
Downloads
For 2024, we are considering different options for our downloads due to GitHub file size limitations, and are testing this during the beta. Download links from alternate hosting sites are below. There are three download sites in addition to "split" zip files in the GitHub release. For the split zip files, you will need to download both the .zip and .z01 files and then unzip them to get the installer image (this can be done in Windows Explorer by selecting both files and running "Extract All"). Feedback regarding what of these download options works best for you is welcome on the beta forum.
- Windows: [JFrog] - [WPI] - [CloudFlare] (2.0 GB)
- Mac (Arm): [JFrog] - [WPI] - [CloudFlare] (2.1 GB)
- Mac (Intel): [JFrog] - [WPI] - [CloudFlare] (2.2 GB)
- Linux: [JFrog] - [WPI] - [CloudFlare] (2.3 GB)
What's Changed Since Beta 3
WPILib: * Fix garbage data for match info before DS connection by @ThadHouse in https://github.com/wpilibsuite/allwpilib/pull/5879 * Default LiveWindowEnabledInTest to false by @Starlight220 in https://github.com/wpilibsuite/allwpilib/pull/5950 * Add hex string constructor to Color and Color8Bit by @srimanachanta in https://github.com/wpilibsuite/allwpilib/pull/5063 * Make Color::HexString() constexpr by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5985 * Use final for joystick get axis methods by @spacey-sooty in https://github.com/wpilibsuite/allwpilib/pull/6024 * Change default Rio log dir from /home/lvuser to /home/lvuser/logs by @PeterJohnson in https://github.com/wpilibsuite/allwpilib/pull/5899, use logs subdirectory on USB drives by @PeterJohnson in https://github.com/wpilibsuite/allwpilib/pull/5975, change sim location to logs subdir by @PeterJohnson in https://github.com/wpilibsuite/allwpilib/pull/6039 * DataLogManager: join on Stop() call by @PeterJohnson in https://github.com/wpilibsuite/allwpilib/pull/5910 * Fix PS5 Controller mappings by @ThadHouse in https://github.com/wpilibsuite/allwpilib/pull/6050
Math: * Reorder TrapezoidProfile.calculate() arguments by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5874 * Replace gyro rotation with poseEstimator rotation by @ElliotScher in https://github.com/wpilibsuite/allwpilib/pull/5900 * Change G to gearing in LinearSystemId factories by @DeltaDizzy in https://github.com/wpilibsuite/allwpilib/pull/5834 * Clean up VecBuilder and MatBuilder by @KangarooKoala in https://github.com/wpilibsuite/allwpilib/pull/5906 * Clean up StateSpaceUtil by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5891 * Use RKDP in DifferentialDrivetrainSim to fix numerical instability by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5931 * Add basic wpiunits support to wpimath by @SamCarlberg in https://github.com/wpilibsuite/allwpilib/pull/5821 * Move serde functions to separate classes by @pjreiniger in https://github.com/wpilibsuite/allwpilib/pull/5918 * Add protobuf / struct serde for trivial types by @pjreiniger in https://github.com/wpilibsuite/allwpilib/pull/5935 * Make KalmanFilter variant for asymmetric updates by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5951 * Explicitly export wpimath protobuf files by @ThadHouse in https://github.com/wpilibsuite/allwpilib/pull/5957 * Optimize 2nd derivative of quintic splines by @prateekma in https://github.com/wpilibsuite/allwpilib/pull/3292 * Add generic circular buffer class to Java by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5969 * Remove unused SimpleMatrixUtils class by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5979 * Add simulated annealing by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5961 * Fix TimeInterpolatableBuffer crash by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5972 * Make gcem call std functions if not constant-evaluated by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5983 * Update to latest Eigen by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5996 * Fix GCEM namespace usage and add hypot(x, y, z) by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/6002 * Struct cleanup by @KangarooKoala in https://github.com/wpilibsuite/allwpilib/pull/6011 * Rotate traveling salesman solution so input and solution have same initial pose by @Ashray-g in https://github.com/wpilibsuite/allwpilib/pull/6015 * Simplify calculation of C for DARE precondition by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/6022 * Fix MecanumDriveWheelSpeeds desaturate() by @Gold856 in https://github.com/wpilibsuite/allwpilib/pull/6040
NetworkTables: * Only datalog meta-topics if specifically requested by @PeterJohnson in https://github.com/wpilibsuite/allwpilib/pull/5873 * ProtobufSubscriber: Make mutex and msg mutable by @PeterJohnson in https://github.com/wpilibsuite/allwpilib/pull/5927 * Increase client meta-topic decoding limit by @PeterJohnson in https://github.com/wpilibsuite/allwpilib/pull/5934 * Update transmit period on topic add/remove by @PeterJohnson in https://github.com/wpilibsuite/allwpilib/pull/6021 * Add cached topic property by @KangarooKoala in https://github.com/wpilibsuite/allwpilib/pull/5494
Commands: * Add static Trigger factories for robot mode changes by @DeltaDizzy in https://github.com/wpilibsuite/allwpilib/pull/5902 * Add GetName to Subsystem, use in Scheduler tracer epochs by @rzblue in https://github.com/wpilibsuite/allwpilib/pull/5836 * CommandPtr: Prevent null initialization by @Starlight220 in https://github.com/wpilibsuite/allwpilib/pull/5991 * CommandCompositionError: Include stacktrace of original composition by @Starlight220 in https://github.com/wpilibsuite/allwpilib/pull/5984
Examples: * C++: Match array parameter bounds by @PeterJohnson in https://github.com/wpilibsuite/allwpilib/pull/5880 * C++: Update examples to CommandPtr by @ncorrea210 in https://github.com/wpilibsuite/allwpilib/pull/5988 * Call resetOdometry() when controller command is executed by @ElliotScher in https://github.com/wpilibsuite/allwpilib/pull/5905 * C++: Add "inline" specifier to constants.h constants by @ncorrea210 in https://github.com/wpilibsuite/allwpilib/pull/6049
Docs: * Exclude eigen and protobuf from doxygen by @rzblue in https://github.com/wpilibsuite/allwpilib/pull/5871 * Improve AprilTag docs by @Gold856 in https://github.com/wpilibsuite/allwpilib/pull/5895 * wpiunits Documentation improvements by @agasser in https://github.com/wpilibsuite/allwpilib/pull/5932 * Update getAlliance() docs by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5971 * Add SysId doc links to LinearSystemId in C++ by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5960
Vision Processing (CameraServer and AprilTags): * Add GetTags to C++ version of AprilTagFieldLayout by @r4stered in https://github.com/wpilibsuite/allwpilib/pull/5872 * CvSink: Allow specifying output PixelFormat by @MrRedness in https://github.com/wpilibsuite/allwpilib/pull/5943 * Move RawFrame to wpiutil and add function to generate RawFrames of AprilTags by @r4stered in https://github.com/wpilibsuite/allwpilib/pull/5923 * Replace CSPixelFormat with WPIPixelFormat by @calcmogul in https://github.com/wpilibsuite/allwpilib/pull/5954 * Add pixelFormat overload of getVideo() by @MrRedness in https://github.com/wpilibsuite/allwpilib/pull/5966
Other:
* [wpiutil] MemoryBuffer: Fix normal read and file type check by @PeterJohnson in https://github.com/wpilibsuite/allwpilib/pull/5875
* [hal] Add capability to read power distribution data as a stream by @ThadHouse in https://github.com/wpilibsuite/allwpilib/pull/4983
* [wpiutil] Change Struct to allow non-constexpr implementations by @PeterJohnson in https://github.com/wpilibsuite/allwpilib/pull/5992
* [wpiunits] Overload Measure.per(Time) to return Measure
GradleRIO: * Update to gradle 8.5 by @ThadHouse in https://github.com/wpilibsuite/GradleRIO/pull/694 * Warn and don't start program if NoApp is triggered by @ThadHouse in https://github.com/wpilibsuite/GradleRIO/pull/700 * Add custom frc kill script to work around jvm bug by @ThadHouse in https://github.com/wpilibsuite/GradleRIO/pull/699
VS Code: * Cancel sim when escape is pressed at extension selection by @rzblue in https://github.com/wpilibsuite/vscode-wpilib/pull/636 * Hide cancel button on modal dialogs by @sciencewhiz in https://github.com/wpilibsuite/vscode-wpilib/pull/635 * Fix global project options not showing by @ThadHouse in https://github.com/wpilibsuite/vscode-wpilib/pull/640 * Update .gitignore with log file formats by @JCaporuscio in https://github.com/wpilibsuite/vscode-wpilib/pull/642
Installer: * Include XRP and Romi dependencies by @sciencewhiz in https://github.com/wpilibsuite/WPILibInstaller-Avalonia/pull/371 * Update AdvantageScope to 3.0.0-beta-5 by @PeterJohnson in https://github.com/wpilibsuite/WPILibInstaller-Avalonia/pull/374 * Add Python extensions by @Gold856 in https://github.com/wpilibsuite/WPILibInstaller-Avalonia/pull/372 * Update vscode to 1.85.1 and update extensions by @PeterJohnson in https://github.com/wpilibsuite/WPILibInstaller-Avalonia/pull/377
Full Changelog: https://github.com/wpilibsuite/allwpilib/compare/v2024.1.1-beta-3...v2024.1.1-beta-4
New Contributors
WPILib is developed by a small team of volunteers and the FIRST community. Thanks to the following new contributors (since the beta-1 release) for helping make WPILib better for all teams!
- @binex-dsk made their first contribution in https://github.com/wpilibsuite/allwpilib/pull/5886
- @ElliotScher made their first contribution in https://github.com/wpilibsuite/allwpilib/pull/5900
- @spacey-sooty made their first contribution in https://github.com/wpilibsuite/allwpilib/pull/5897
- @MrRedness made their first contribution in https://github.com/wpilibsuite/allwpilib/pull/5943
- @agasser made their first contribution in https://github.com/wpilibsuite/allwpilib/pull/5932
- @ncorrea210 made their first contribution in https://github.com/wpilibsuite/allwpilib/pull/5988
- @guineawheek made their first contribution in https://github.com/wpilibsuite/allwpilib/pull/6041
MD5 Hashes
f605a65b464039de462f95e975038e54 WPILib_Linux-2024.1.1-beta-4.tar.gz
68f36bacbc7810f75e5765a197f7ba84 WPILib_Windows-2024.1.1-beta-4.iso
d099cf13a9fde1c764f1fec120f2bcc5 WPILib_macOS-Intel-2024.1.1-beta-4.dmg
50098c2e3f4161fe5149379fcb656809 WPILib_macOS-Arm64-2024.1.1-beta-4.dmg
SHA256 Hashes
cd66bcb463ad991c15ac74d8f5641768e45ab510a4ce45324ca922d01ae49d47 WPILib_Linux-2024.1.1-beta-4.tar.gz
800e0b51aa8d651fdce59189dba2f2e7ecd1e97cde173a37beb8abc58c435fea WPILib_Windows-2024.1.1-beta-4.iso
af3271e7750f673d96c3e3bdfeb6407aafb1f6ec9138ba0f92bec0e2f88c20c7 WPILib_macOS-Intel-2024.1.1-beta-4.dmg
2d0d4ffe8d0e7a0940f84820b274874fb394818dc88f9141a749a9516dcd3c49 WPILib_macOS-Arm64-2024.1.1-beta-4.dmg
You can download the latest release of the installer from GitHub.
Once on the GitHub releases page, scroll to the Downloads section.

Then click on the correct binary for your OS and architecture to begin the download.
Extracting the Installer
When you download the WPILib installer, it is distributed as a disk image file .iso
for Windows, .tar.gz
for Linux, and distributed as a DMG
for MacOS.
Windows 10+ users can right click on the downloaded disk image and select Mount to open it. Then launch WPILibInstaller.exe
.

Note
Other installed programs may associate with iso files and the mount option may not appear. If that software does not give the option to mount or extract the iso file, then follow the directions below.
You can use 7-zip to extract the disk image by right-clicking, selecting 7-Zip and selecting Extract to…. Windows 11 users may need to select Show more options at the bottom of the context menu.

After opening the .iso
file, launch the installer by opening WPILibInstaller.exe
.
Note
After launching the installer, Windows may display a window titled “Windows protected your PC”. Click More info, then select Run anyway to run the installer.
For this release, macOS users will need to have the Xcode Command Line Tools installed before running the installer; we are working on removing this requirement in a future release. This can be done by running xcode-select --install
in the Terminal.
macOS users can double click on the downloaded DMG
and then select WPILibInstaller
to launch the application.

Linux users should extract the downloaded .tar.gz
and then launch WPILibInstaller
. Ubuntu treats executables in the file explorer as shared libraries, so double-clicking won’t run them. Run the following commands in a terminal instead with <version>
replaced with the version you’re installing.
$ tar -xf WPILib_Linux-<version>.tar.gz
$ cd WPILib_Linux-<version>/
$ ./WPILibInstaller
Running the Installer
Upon opening the installer, you’ll be presented with the below screen. Go ahead and press Start.


This showcases a list of options included with the WPILib installation.
Tools Only installs just the WPILib tools (Pathweaver, Shuffleboard, RobotBuilder, SysID, Glass, and OutlineViewer) and JDK.
Everything installs the full development environment (VS Code, extensions, all dependencies), WPILib tools, and JDK.
You will notice two buttons, Install for this User and Install for all Users. Install for this User only installs it on the current user account, and does not require administrator privileges. However, Install for all Users installs the tools for all system accounts and will require administrator access. Install for all Users is not an option for macOS and Linux.
Note
If you select Install for all Users, Windows will prompt for administrator access through UAC during installation.
Select the option that is appropriate for you, and you’ll presented with the following installation screen.
This next screen involves downloading VS Code. Unfortunately, due to licensing reasons, VS Code can not be bundled with the installer.

Download for this computer only
This downloads VS Code only for the current platform, which is also the smallest download.
Skip and don’t use VS Code
Skips installing VS Code. Useful for advanced installations or configurations. Generally not recommended.
Select existing VS Code archive for offline install on this computer
Selecting this option will bring up a prompt allowing you to select a pre-existing zip file of VS Code that has been downloaded by the installer previously. This option does not let you select an already installed copy of VS Code on your machine.
Create VS Code archives to share with other computers/OSes for offline install
This option downloads and saves a copy of VS Code for all platforms, which is useful for sharing the copy of the installer.
Go ahead and select Download for this computer only. This will begin the download process and can take a bit depending on internet connectivity (it’s ~100MB). Once the download is done, select Next. You should be presented with a screen that looks similar to the one below.

After installation is complete, you will be presented with the finished screen.

Important
WPILib installs a separate version of VS Code. It does not use an already existing installation. Each year has it’s own copy of the tools appended with the year. IE: WPILib VS Code 2022
. Please launch the WPILib VS Code and not a system installed copy!
Congratulations, the WPILib development environment and tooling is now installed on your computer! Press Finish to exit the installer.
Post-Installation
Some operating systems require some final action to complete installation.
After installation, the installer opens the WPILib VS Code folder. Drag the VS Code application to the dock. Eject WPILibInstaller image from the desktop.
Some versions of Linux (e.g. Ubuntu 20.04) require you to give the desktop shortcut the ability to launch. Right click on the desktop icon and select Allow Launching.

Note
Installing desktop tools and rebooting will create a folder on the desktop called YYYY WPILib Tools
, where YYYY
is the current year. Desktop tool shortcuts are not available on Linux and macOS.
Additional C++ Installation for Simulation
C++ robot simulation requires that a native compiler to be installed. For Windows, this would be Visual Studio 2022 (not VS Code), macOS requires Xcode 14 or later, and Linux (Ubuntu) requires the build-essential
package.
Ensure the Desktop Development with C++ option is checked in the Visual Studio installer for simulation support.

What is Installed?
The Offline Installer installs the following components:
Visual Studio Code - The supported IDE for 2019 and later robot code development. The offline installer sets up a separate copy of VS Code for WPILib development, even if you already have VS Code on your machine. This is done because some of the settings that make the WPILib setup work may break existing workflows if you use VS Code for other projects.
C++ Compiler - The toolchains for building C++ code for the roboRIO
Gradle - The specific version of Gradle used for building/deploying C++ or Java robot code
Java JDK/JRE - A specific version of the Java JDK/JRE that is used to build Java robot code and to run any of the Java based Tools (Dashboards, etc.). This exists side by side with any existing JDK installs and does not overwrite the JAVA_HOME variable
WPILib Tools - SmartDashboard, Shuffleboard, RobotBuilder, Outline Viewer, Pathweaver, Glass, SysID
WPILib Dependencies - OpenCV, etc.
VS Code Extensions - WPILib extensions for robot code development in VS Code
Uninstalling
WPILib is designed to install to different folders for different years, so that it is not necessary to uninstall a previous version before installing this year’s WPILib. However, the following instructions can be used to uninstall WPILib if desired.
Delete the appropriate wpilib folder (
c:\Users\Public\wpilib\YYYY
whereYYYY
is the year to uninstall)Delete the desktop icons at
C:\Users\Public\Public Desktop
Delete the appropriate wpilib folder (
~/wpilib/YYYY
whereYYYY
is the year to uninstall)
Delete the appropriate wpilib folder (
~/wpilib/YYYY
whereYYYY
is the year to uninstall). egrm -rf ~/wpilib/YYYY
Troubleshooting
In case the installer fails, please open an issue on the installer repository. A link is available here. The installer should give a message on the cause of the error, please include this in the description of your issue.