This article details known issues (and workarounds) for FRC® Control System Software.
WPILib VS Code extension not loaded after creating new project or importing
Issue: After creating a new project or importing a project, the WPILib extension doesn’t enable and you can’t build or deploy code or use any other function of the WPILib extension. This is because the new project isn’t trusted by VS Code, but VS Code doesn’t prompt to trust the project.
Workaround: There are a few workarounds to have the trust dialog box appear so that the project can be trusted and allow the extension to enable
After using the project creator or importer, choose the Yes (new window) option intead of Yes (current window)
Open another program and then switch back VS Code again. VS Code will then open the dialog box to trust the project
Click on the extensions button, then on the WPILib extension and select Enable (workspace) then select Trust Folder & Continue
Click the WPILib extension logo in the upper right corner if it exists. VS Code will then open the dialog box to trust the project
Onboard I2C Causing System Lockups
Issue: Use of the onboard I2C port, in any language, can result in system lockups. The frequency of these lockups appears to be dependent on the specific hardware (i.e. different roboRIOs will behave differently) as well as how the bus is being used.
Workaround: The only surefire mitigation is to use the MXP I2C port or another device to read the I2C data. Acessing the device less frequently and/or using a different roboRIO may significantly reduce the likelihood/frequency of lockups, it will be up to each team to assess their tolerance of the risk of lockup. This lockup can not be definitively identified on the field and a field fault will not be called for a match where this behavior is believed to occur. This lockup is a CPU/kernel hang, the roboRIO will completely stop responding and will not be accessible via the DS, webpage or SSH. If you can access your roboRIO via any of these methods, you are experiencing a different issue.
Several alternatives exist for accessing the REV color sensor without using the roboRIO I2C port. A similar approach could be used for other I2C sensors.
Use a Raspberry Pi Pico. Supports up to 2 REV color sensors, sends data to the roboRIO via serial. The Pi Pico is low cost (less than $10) and readily available.
Use a Raspberry Pi. Supports 1-4 color sensors, sends data to the roboRIO via NetworkTables. Primarily useful for teams already using a Raspberry Pi as a coprocessor.
CAN bus utilization is noisy
Issue: CAN bus utilization as reported live by the DS or as shown in the DS log has significant variation or “spikes” in the data. This is due to the RoboRIO occasionally counting CAN packets in the incorrect time period, so one period will have a much lower utilization than reality and the next a much higher utilization than reality.
Workaround: Zoom in on the DS log plot and look for time periods when the utilization is stable (the spikes will be both above and below this average). The average utilization is the true utilization.
Updating Properties on roboRIO 2.0 may be slow or hang
Issue: Updating the properties on a roboRIO 2.0 without reformatting using the Imaging Tool (such as setting the team number) may be slow or hang.
Workaround: After a few minutes of the tool waiting the roboRIO should be able to be rebooted and the new properties should be set.
Simulation crashes on Mac after updating WPILib
Issue: On macOS, after updating the project to use a newer version of WPILib, running simulation immediately crashes without the GUI appearing.
Workaround: In VS Code, run WPILib | Run a command in Gradle,
clean. Alternatively, run
./gradlew clean in the terminal or delete the build directory.
Invalid build due to missing GradleRIO
Issue: Rarely, a user’s Gradle cache will get broken and they will get shown errors similar to the following:
Could not apply requested plugin [id: ‘edu.wpi.first.GradleRIO’, version: ‘2020.3.2’] as it does not provide a plugin with id ‘edu.wpi.first.GradleRIO’
Delete your Gradle cache located under
~$USER_HOME/.gradle. Windows machines may need to enable the ability to view hidden files. This issue has only shown up on Windows so far. Please report this issue if you get it on an alternative OS.
Chinese characters in Driver Station Log
Issue: Rarely, the driver station log will show Chinese characters instead of the English text. This appears to only happen when Windows is set to a language other then English.
Workaround: There are two known workarounds:
Copy and paste the Chinese characters into notepad, and the English text will be shown.
Temporarily change the Windows language to English.
C++ Intellisense - Files Open on Launch Don’t Work Properly
Issue: In C++, files open when VS Code launches will have issues with Intellisense showing suggestions from all options from a compilation unit and not just the appropriate ones or not finding header files. This is a bug in VS Code.
Close all files in VS Code, but leave VS Code open
Delete c_cpp_properties.json file in the .vscode folder, if it exists
Run the “Refresh C++ Intellisense” command in VS Code.
In the bottom right you should see something that looks like a platform (linuxathena or windowsx86-64 etc). If it’s not linuxathena click it and set it to linuxathena (release)
Wait ~1 min
Open the main cpp file (not a header file). Intellisense should now be working
Issues with WPILib Dashboards and Simulation on Windows N Editions
Issue: WPILib code using CSCore (dashboards and simulated robot code) will have issues on Education N editions of Windows.
Shuffleboard will run, but not load cameras
Smartdashbard will crash on start-up
Robot Simulation will crash on start-up
Solution: Install the Media Feature Pack
There is currently an issue with inter-operating C++/Java NetworkTables clients (dashboards or co-processors) with LabVIEW servers (LV robot code). In some scenarios users will see updates from one client fail to be replicated across to other clients (e.g. data from a co-processor will not be properly replicated out to a dashboard). Data still continues to return correctly when accessed by code on the server.
Workaround: Write code on the server to mirror any keys you wish to see on other clients (e.g. dashboards) to a separate key. For example, if you have a key named
targetX being published by a co-processor that you want to show up on a dashboard, you could write code on the robot to read the key and re-write it to a key like
LabVIEW Autorun graphics say 2020
Issue: If you launch the LabVIEW installer by using the Autorun file, the menu item correctly says 2022, but the graphic says 2020.
Workaround: This can be safely ignored, if the menu item says 2022, you are installing the correct software.