v1.1 — by deviver
Turns your DJI RC controller into a virtual Xbox 360 gamepad for FPV simulators
Use your DJI RC (RM330, RC-N1, RC-N2, RC231, etc.) as a virtual Xbox 360 controller in Liftoff, VelociDrone, DCL, or any PC game.
The RC connects via USB-C and the app reads sticks/buttons over the DJI DUML protocol, then emulates a gamepad via ViGEm.
- Live stick visualization — see both sticks move in real-time
- 6-channel support — 4 sticks + camera wheel + scroll wheel
- Button mapping — C1, C2, Photo, Video, Fn, Scroll mapped to Xbox buttons
- Expo / Rates curves — adjustable per-axis
- Axis remapping — swap sticks, invert axes, Mode 1/2/3/4 presets
- Deadzones — configurable per-axis
- Auto-reconnect — handles USB disconnect/reconnect gracefully
- Low latency — direct gamepad push from RC callback, no threading overhead
- Setup wizard — first-run tutorial with dependency checks
- Persistent config — all settings saved to
config.json
- Windows 10/11 (ViGEm is Windows-only)
- Python 3.10+ — python.org/downloads
- ViGEm Bus Driver — REQUIRED for virtual gamepad
- Download from: github.com/nefarius/ViGEmBus/releases
- Install
ViGEmBus_Setup_x64.msi - Reboot after install
- DJI RC controller connected via USB-C (bottom port)
# 1. Install ViGEm Bus Driver first (see link above)
# 2. Install Python dependencies
pip install -r requirements.txt
# 3. Connect your DJI RC via USB-C
# 4. Run the app
python main.py
# Or double-click start.batOr use setup_and_run.bat for automatic dependency installation on first run.
- Connect your DJI RC to your PC via the USB-C port on the bottom of the controller
- Launch the app — run
start.batorpython main.py - Click "Connect" — the app will auto-detect the RC. If not found, select it from the dropdown
- Move the sticks — you should see them move in the visualizer
- Open your simulator (Liftoff, etc.) — configure it to use the Xbox 360 controller
- Adjust settings — click Settings to tune expo, rates, deadzones, and button mapping
| Controller | Status |
|---|---|
| DJI RC (RM330) | ✅ Tested |
| DJI RC-N1 | Should work (same protocol) |
| DJI RC 231 (Mavic 3) | Should work (same protocol) |
| DJI RC-N2 | Should work (same protocol) |
| DJI RC 2 | Should work (same protocol) |
| DJI RC Pro | Untested |
pip install pyinstaller
pyinstaller DJI_RC_Emulator.spec --noconfirm
# Or run build.batOutput: dist/DJI RC Emulator/DJI RC Emulator.exe
- Install ViGEm Bus Driver from github.com/nefarius/ViGEmBus/releases
- Reboot after installing
- USB-C must be in the bottom port (not top/side)
- Check Device Manager for "DJI USB VCOM" ports
- For RM330/RC2: install WinUSB driver via Zadig when prompted
- Click "Connect" and check for green status
- Disconnect and reconnect if sticks respond slowly
- Protocol based on DJI_RC-N1_SIMULATOR_FLY_DCL by Ivan Yakymenko
- Virtual gamepad via ViGEm and vgamepad
If you find this useful, consider supporting development:
MIT License

