- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| ds_py | ||
| .gitignore | ||
| AGENTS.md | ||
| backend.py | ||
| DS_MRCCOMM_UDP_PROTOCOL.md | ||
| legacy_bridge.py | ||
| MrcComm.proto | ||
| MrcComm_pb2.py | ||
| MRCCOMM_V2_PROTOCOL.md | ||
| pyproject.toml | ||
| README.md | ||
| robot_sim.py | ||
| tui_backend.py | ||
| uv.lock | ||
FRC DS Proxy
This is a proxy that accepts connections from the FRC 2027+ Driver Station and translates the comms into the 2026 protocol so that the new 2027 Driver Station can connect to and control pre-2027 robots.
Use at your own risk, nothing here is recommended or supported.
Background
Prior to 2027, FRC robots communicated with the NI driver station using a proprietary NI protocol. This protocol was reverse engineered by a few people and some alternative driver station programs were made.
In 2027 a new WPI developed driver station was introduced that uses an undocumented protocol. The new driver station has no compatibility with the old protocol or old robots.
This repo contains the reverse engineered protocol documentation, protobufs, and a proxy that the new driver station can connect to.
The proxy accepts connections from the 2027+ driver station (enter 127.0.0.1 for team name/ip address) and talks the 2027 driver station protocol (MRCCOMM).
It has two "backends", a simulated robot that will send simulated robot state to the DS and show commands and info sent from the DS.
The other backend connects to a real target robot running pre 2027 code and translates into the 2026 NI DS protocol thanks to the reverse engineering effort of various projects including https://gitlab.com/Redrield/ds-rs, https://frcnetworking.readthedocs.io/en/latest/, https://github.com/Redrield/ReFRC.
Using this backend you can control a 2026 (or earlier) robot with the new 2027 driver station running on Linux or Mac (or Windows).
Run using:
uv run robot_sim.py --robot-team 1523
AI notice
All code in this repo is written by LLMs.
The reverse engineering of the driver station binary was performed by LLMs. The documentation is all LLM written.
This README is 100% human.
Why did you do this?
Because I don't like Windows or the NI Driver Station. Also it's funny.
Why use LLMs for everything?
Because I have better things to spend my human time on then implementing this cursed project.