MCPcopy Index your code
hub / github.com/Boomaa23/open-ds

github.com/Boomaa23/open-ds @v0.3.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.3.1 ↗ · + Follow
1,093 symbols 2,659 edges 160 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

OpenDS

A reverse-engineered lightweight FRC Driver Station alternative for Windows, Linux, and macOS

Download here (JDK/JRE 8+ required) or here (JRE downloaded automatically).

Copyright (C) 2020-2025 Boomaa23

Features

OpenDS is a fully functional FIRST Robotics Competition (FRC) Driver Station alternative for Windows, Linux, and macOS systems. All the features of the official Driver Station are implemented in OpenDS, meaning teams can use it in the place of the official Driver Station when testing robot features away from the competition.

OpenDS is extremely lightweight (about 1 MB) and does not require an installation of any kind, unlike the official Driver Station which has a lengthy installation process and heavy install footprint.

NOTE: OpenDS may not be used during FRC-legal competitions as per rules R710 and R901 (previously R66 and R88). OpenDS is intended for testing use only.

  • Robot
    • Enable and disable
    • Change mode (teleop/auto/test)
    • Change alliance station (1/2/3 & red/blue)
    • Send game data
    • Change team number
    • USB Joystick and Xbox controller input support
    • Restart robot code and RoboRIO
    • Emergency stop
  • Statistics
    • Robot voltage
    • Connections
    • Brownouts
    • Match time left (FMS)
    • CAN Bus
    • RoboRIO disk/RAM/CPU/version
    • Disable/Rail faults
    • Logging to .dslog files
  • NetworkTables
    • Read Shuffleboard and SmartDashboard packets
    • Display NetworkTables passed data
  • FMS
    • Connect to a offseason FMS or Cheesy Arena
    • Choose to connect or not
  • Support
    • Lightweight executable
    • Windows, Linux, and macOS support
    • No install prerequisites
    • Easily modifiable for updated protocol years
    • Command-line (CLI) parameters

Setup

Download the stable jar from here and run. There are no prerequisites besides having a Java installation with JRE 8 or newer. The JRE is included with any installation of the same JDK version.

If you do not have Java and/or want a single install/run script, download this script instead and use it to start OpenDS. It will download OpenDS and a copy of Java for it to use. Use the same script to re-launch OpenDS.

Troubleshooting

If you run into issues, ensure that you are running a 64-bit installation of either Windows 7/8.1/10/11, Linux kernel version 2.6.35 or greater, or macOS 10 (OSX) or newer.

Try launching from the command line (java -jar open-ds.jar) and observing the console output for additional details. You can also launch with debug (--debug) to print more information to the console.

If you are using the WPILib simulator (instead of a physical robot), ensure you have the following line in your build.gradle (or equivalent in build.gradle.kts).

wpi.sim.addDriverstation().defaultEnabled = true

If issues persist, please report them on the "Issues" section of the GitHub here and they will be resolved as soon as possible.

License

OpenDS may be used without restriction for the purpose of testing robots by teams and individuals.

See LICENSE.txt for more details.

Contributing

If you find a bug or issue with OpenDS, please report it on the "Issues" section of the GitHub here.

For protocol changes in future years, OpenDS is easily modifiable. Ports, IP addresses, display layouts, and packet creation/parsing are all re-formattable.

Acknowledgements

Thank you to Jessica Creighton and Alex Spataru for their work on the FRCture documentation and LibDS respectively.

Extension points exported contracts — how you extend this code

ReceiveTagAction (Interface)
(no doc) [6 implementers]
src/main/java/com/boomaa/opends/data/receive/ReceiveTagAction.java
MainJDEC (Interface)
(no doc) [4 implementers]
src/main/java/com/boomaa/opends/display/MainJDEC.java
NetworkInterface (Interface)
(no doc) [4 implementers]
src/main/java/com/boomaa/opends/networking/NetworkInterface.java
Component (Interface)
(no doc) [3 implementers]
src/main/java/com/boomaa/opends/usb/Component.java
HeadlessJDEC (Interface)
(no doc) [2 implementers]
src/main/java/com/boomaa/opends/headless/HeadlessJDEC.java

Core symbols most depended-on inside this repo

getInstance
called by 165
src/main/java/com/boomaa/opends/data/send/NullSendTag.java
yearOfAction
called by 111
src/main/java/com/boomaa/opends/data/receive/RefRecieveTag.java
println
called by 105
src/main/java/com/boomaa/opends/util/Debug.java
yearOfAction
called by 84
src/main/java/com/boomaa/opends/data/send/RefSendTag.java
clone
called by 80
src/main/java/com/boomaa/opends/display/elements/GBCPanelBuilder.java
build
called by 76
src/main/java/com/boomaa/opends/display/elements/GBCPanelBuilder.java
setPos
called by 73
src/main/java/com/boomaa/opends/display/elements/GBCPanelBuilder.java
addInt
called by 67
src/main/java/com/boomaa/opends/data/send/PacketBuilder.java

Shape

Method 853
Class 140
Function 50
Enum 30
Interface 20

Languages

Java95%
C5%

Modules by API surface

src/main/java/com/boomaa/opends/data/receive/parser/Parser2020to2026.java29 symbols
src/main/java/com/boomaa/opends/usb/HIDDevice.java24 symbols
src/main/java/com/boomaa/opends/util/NumberUtils.java22 symbols
src/main/java/com/boomaa/opends/usb/DirectInputDevice.java21 symbols
src/main/java/com/boomaa/opends/util/DSLog.java20 symbols
src/main/java/com/boomaa/opends/headless/ConsoleTable.java20 symbols
src/main/java/com/boomaa/opends/util/Parameter.java18 symbols
src/main/java/com/boomaa/opends/usb/Controller.java17 symbols
src/main/java/com/boomaa/opends/data/receive/parser/Parser2015.java17 symbols
src/main/java/com/boomaa/opends/networktables/NTEntry.java16 symbols
src/main/java/com/boomaa/opends/display/Logger.java16 symbols
src/main/java/com/boomaa/opends/data/holders/Date.java16 symbols

For agents

$ claude mcp add open-ds \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page