In the latest firmware update, port 40007 has been close via software. You can stream 40007 in adb mode; work is underway on a convenient software solution.
DJI RC Joystick is a set of Go modules for smart-display DJI remote controllers. The packages discover controllers on the local network, maintain TCP connections, decode DUML packets, publish control state, and map that state to a virtual gamepad when the operating system supports one.
The network protocol and initial channel decoding are based on stiad/dji-rc-linux. This project turns that work into reusable Go packages and adds controller profiles, configurable bindings, application clients, and platform-specific virtual-input backends.
| Controller | Status |
|---|---|
| DJI RC | Supported and tested on real hardware |
| DJI RC 2 | Supported and tested on real hardware |
| DJI RC Pro | Expected to work, but not tested |
| DJI Smart Controller | Expected to work, but not tested |
| DJI RC Pro Enterprise | Expected to work, but not tested |
DJI RC and DJI RC 2 have separate profiles for identification, available controls, keepalive behavior, and connection count. The other controllers use similar Android and DUML components, but discovery, complete control coverage, and connection stability have not been verified.
The root module is github.com/voluminor/dji-rc-joystick.
mod/rchandles discovery, TCP and DUML transport, controller profiles, state decoding, bindings, and callbacks.mod/vjoydefines virtual devices and provides Linuxuinputand Windows vJoy backends.mod/dataprovides shared access to settings, bindings, and translations.mod/data/settingsloads, validates, and atomically saves JSON and YAML settings.mod/data/languageprovides thread-safe access to embedded translation catalogs.
Each module README documents its API, concurrency model, resource limits, and platform-specific behavior.
The repository also provides ready-to-use applications:
- CLI offers virtual-gamepad emulation, terminal monitoring, NDJSON output, controller discovery, and protocol diagnostics.
- GUI provides a windowed monitor, live control visualization, binding configuration, and emulation controls. Its interface is available in 27 languages.
Release assets are published on GitHub Releases. The release workflow builds CLI binaries; GUI assets are assembled manually for the release. Supported platforms, setup, configuration, and build details are covered in the CLI README and GUI README.
Discovery and monitoring are available on Linux, Windows, and macOS. Virtual gamepad output is available on Linux and Windows; macOS does not provide a backend.
- GitHub Releases
- Issues
- Contributing
- Security policy
- Code of Conduct
- License: GNU Lesser General Public License version 2.1
Games may not select the virtual controller automatically. Choose it in the game's controller settings and run the game's calibration before use.
On Steam Deck, Desktop Mode provides the most predictable startup order: make the virtual controller available before starting the game.
steamdeck-rc.mp4
The video shows a DJI RC 2 controlling Liftoff through a virtual gamepad on Steam Deck.