vJoySerialFeeder: RC Receivers and Arduino into vJoy
Two kinds of hardware speak serial and wish they were joysticks: the RC transmitter you want to practise with in a simulator, and the Arduino board you built into a home-made controller. vJoySerialFeeder is the bridge for both. Written by Cleric-K, it does one job — it feeds the vJoy virtual joystick driver with data from a serial port — and it turns serial devices into controllers that any DirectInput game or sim can read. This guide covers what it does, the setup order, and where its limits are.
What vJoySerialFeeder does
The concept is the feeder pattern in its purest form. vJoy on its own does nothing: it presents empty virtual devices until a feeder application writes data into them. vJoySerialFeeder reads the stream of values arriving on a serial (COM) port — channel values from an RC receiver interface, or values an Arduino sketch sends over USB serial — and writes those values into a vJoy device as axes and buttons. The simulator downstream never knows the difference: it binds the vJoy device exactly like a physical stick.
That makes two previously awkward setups straightforward. RC pilots can connect a receiver or transmitter interface that outputs serial data and fly the sim with the real transmitter in their hands, building muscle memory on the sticks they will use at the field. Arduino builders can skip writing a custom USB joystick device entirely: the board reads potentiometers, encoders and buttons, sends the readings over its ordinary serial connection, and the feeder handles the joystick side on the PC.
Install order: vJoy first
- Install vJoy from our download page — the feeder needs a configured vJoy device to write into, so the driver always comes first.
- In vJoyConf, configure the device the feeder will use with enough axes for your channels (an RC setup typically wants at least four: aileron, elevator, throttle and rudder) plus buttons for any switches you plan to map.
- Connect your serial device and note the COM port Windows assigns it. If the device does not appear as a port at all, that is a hardware or cable problem to solve before the feeder can help.
- Download and run vJoySerialFeeder from its project page, keeping the vJoy install you just made as its target.
Core setup steps
- Select the COM port your device is attached to in the feeder, and connect. A healthy connection shows incoming channel data changing as you move the transmitter sticks or your Arduino controls.
- Work through the channels one at a time: move a single stick or control and watch which channel reacts. Write the mapping down — channel order varies between receivers, interfaces and Arduino sketches, and guessing it is the slowest way to set this up.
- Assign each channel to its vJoy axis in the feeder: aileron, elevator, throttle and rudder for RC use, or whatever your Arduino project sends.
- Check travel in both directions. Open the vJoy monitor and confirm each axis sweeps its full range and centres correctly; adjust the endpoints on the transmitter or in your sketch if an axis cannot reach its extremes.
- Open your simulator, bind the vJoy device axes, and run the sim’s own calibration once. After that, treat the setup like any other controller.
Before you bind anything in the sim
Resist the urge to map channels inside the simulator first. The reliable order is: prove the data exists, then prove vJoy is receiving it, and only then bind. Watch the feeder’s incoming channel values while you move each control through its full travel — a channel that only moves part-way, or moves when a different control does, tells you the problem is in the serial stream or the channel order, and no amount of in-sim calibration will fix it. Then repeat the same movements watching the vJoy monitor: the virtual axes should mirror the channels you assigned. Labelling helps more than memory here — a strip of tape naming each channel on the receiver lead, or comments in your Arduino sketch recording what each value is, will save you a full re-mapping session the next time you change anything.
Best use case
The standout use is RC simulator practice: the feeder lets the transmitter you actually fly with drive the sim, through the serial output of a receiver or interface, with no joystick emulation hacks in between. The Arduino angle is the close second — DIY yokes, button boxes, collective levers and other one-off sim hardware become much simpler projects when the PC side is just ‘send values over serial and let the feeder present them as a joystick’. Both audiences overlap with the broader sim setups in our games and sims hub.
Limitations
- Your serial device has to actually send usable data. The feeder reads a serial stream; a receiver, interface or sketch that outputs nothing — or outputs a format the feeder cannot parse — stops the chain at step one. Verify the stream exists before blaming the feeder.
- Channel mapping is manual. There is no universal channel order across RC gear and DIY builds, so expect the one-control-at-a-time mapping session described above.
- Noisy data stays noisy. A jittery potentiometer on an Arduino build will produce a jittery virtual axis. The feeder passes values through; it does not clean up the source.
- It is a feeder, not a driver. Like every tool in this hub it depends on vJoy being installed and configured first, and it produces a DirectInput device — XInput-only software needs another layer.
Next steps: install the driver from the download page, return to the vJoy feeder tools hub for the other feeders, and if unusual hardware is your thing, read the sibling guide on Sx2vJoy — another feeder that gives an unconventional controller a second life as a joystick.
