SkillAgentSearch skills...

VJoySerialFeeder

Feed Virtual Joystick driver with data from a serial port

Install / Use

/learn @Cleric-K/VJoySerialFeeder

README

VJoySerialFeeder

What is it?

A program for feeding data from a serial port to a virtual joystick. It runs on Windows (.NET Framework 4.8) and Linux (Mono 5+).

Currently these virtual joysticks are supported:

The data coming through the serial port should be structured in a specific way in order for the feeder to recognize it. Currently several protocols are supported:

  • IBUS - used by FlySky radio controllers.
  • SBUS - used by FrSky, Futaba radio controllers.
  • F.Port - used by FrSky receivers (extends SBUS with bidirectional capability).
  • DSM - used by Spektrum radio controllers.
  • MultiWii Serial Protocol - used by RC Flight Controllers running MultiWii, CleanFlight, BetaFlight, iNav, etc.
  • KISS serial protocol - used by KISS RC Flight Controllers.
  • CrossFire (CRSF) - used by TBS CrossFire systems. Thanks to @CapnBry #49
  • DJI Phantom 3 Controller - thanks to @cmyip #52
  • PPM (converted to IBUS) - see Use case 9.
  • Dummy - test protocol that generates a signal without any hardware. More info.

After data is received it can be mapped to virtual joystick axes, buttons, or bitmapped buttons in a very flexible and configurable way.

Screenshot

Key features

  • Flexible mapping - map channels to axes (with calibration, expo curves, deadband, symmetric mode), buttons (single/dual threshold, trigger mode), or bitmapped buttons (16 bits per channel). More info.
  • Failsafe - configurable per-mapping failsafe values that activate on serial timeout. More info.
  • Lua scripting - transform channel data, control POV hats, and implement custom logic with an embedded Lua engine. More info.
  • Process interaction - control vJoySerialFeeder from external programs via Microsoft COM Automation (Windows) or WebSocket (cross-platform). More info.
  • Profiles - save and load multiple named configurations.
  • Channel monitor - real-time display of raw channel values for debugging.

Use cases

  1. Use Arduino to read data from any device and send it to your PC - basic sketch in the Arduino directory. See example on using old RC controller for simulators.
  2. Read RC controller (FlySky) directly from any IBUS capable receiver. How-to.
  3. Read RC controller (FrSky, Futaba, etc.) directly from any SBUS receiver. How-to.
  4. Read RC controller (Spektrum) from a DSM receiver. How-to.
  5. Use MultiWii compatible Flight Controller (MultiWii, CleanFlight, BetaFlight, etc.). You can use your actual RC model. How-to.
  6. Use KISS Flight Controller. You can use your actual RC model. It is pretty much the same as MultiWii, only you have to select KISS for protocol.
  7. Use as general virtual joystick feeder. Although the program has the word "Serial" in its name, it is not strictly necessary to feed the virtual joystick from the serial port. You can interact with vJoySerialFeeder in different ways and feed your own data to the virtual joystick or you can get the serial data and use it for your own purposes other than controlling a virtual joystick. How-to.
  8. Feed over network. You can use pairs of virtual serial ports provided by com0com and com2tcp for the TCP/IP transport. Another option is HW VSP3 which combines the virtual serial port and the TCP/IP transport but the free version allows only one COM port.
  9. If you have older RC receiver that only supports PPM you can use Arduino and this sketch to convert PPM -> IBUS. Thanks to wdcossey!
  10. If you have older RC receiver that only supports PWM you can use Arduino and this sketch to convert PWM -> IBUS.

How to get it?

You can download binaries from the releases section or you can build it yourself.

Building from source

Requirements:

  • .NET Framework 4.8 SDK (Windows) or Mono 5+ (Linux)
  • NuGet packages are restored automatically (MoonSharp, FastColoredTextBox)
  • Target platform: x86 (32-bit)

Build with Visual Studio or msbuild on the command line. Use vJoySerialFeeder.csproj for Windows or vJoySerialFeederLinux.csproj for Linux.

Linux additional requirement: libevdev2

How to use it?

Check out the Manual.

Like it?

If this software brought a smile on your face, you may shine back if you feel like it: Donate
Thank you!!!

License

GNU General Public License v3

View on GitHub
GitHub Stars284
CategoryDevelopment
Updated3d ago
Forks60

Languages

C#

Security Score

100/100

Audited on Mar 24, 2026

No findings