How to Connect Any Radio to FPV Simulators – Betaflight HID, ELRS Bluetooth & Dongles

by Oscar

Most modern radio transmitters support FPV simulators via their USB port natively. However, there are older radios that don’t, due to limitations like USB ports being used only for charging or firmware updates, or the absence of USB ports altogether. In this tutorial, I will share alternative methods to address this issue. Thanks to Betaflight, you can use any radio to play FPV simulators wirelessly, all you need is an F4 or F7 FC (flight controller) and a radio receiver.

Some of the links on this page are affiliate links. I receive a commission (at no extra cost to you) if you make a purchase after clicking on one of these affiliate links. This helps support the free content for the community on this website. Please read our Affiliate Link Policy for more information.

If you want to pick up a modern radio that support FPV sims without any DIY mods, check out my radio recommendations: https://oscarliang.com/radio-transmitter/

Via Betaflight Flight Controller

Betaflight can turn your flight controller into a joystick (HID device) and pass commands from the receiver to your computer. This means you can play FPV simulators without directly connecting your radio to the computer!

I know, it’s a nice drawing. It was late at night, but this will do for now ;-)

This also means you can use any radio to play simulators, even those that might not have a USB port or trainer port, such as the Flysky i6 or Turnigy 9X.

As it’s a wireless connection, you’re no longer constrained by the length of the USB cable, allowing you to finally lay back and enjoy!

I haven’t measured the exact latency, but I don’t feel any noticeable delay compared to a USB cable connection.

Hardware Requirement

You don’t need any additional hardware; you can just use your drone for this.

Speedybee Master 5 V2 Bnf Fpv Drone Usb Fc Connect

But if you want a dedicated FC and RX setup for playing simulators, here are the cheapest components I could find:

Depending on your radio, choose a compatible receiver:

Connect the receiver to the FC. Make sure to use the “4V5” pad or whichever 5V pad that powers the receiver when the USB cable is plugged in, without needing to plug in a LiPo battery.

Here’s a wiring diagram for the ELRS EP1 receiver to the JHEMCU F411 NOXE V3.

Jhemcu F4 Noxe V3 F411 Deluxe Version Flight Controller Wiring Diagram Expresslrs Elrs Receiver Ep2 Pp

Betaflight Setup

Connect the RX to the FC, and set it up in Betaflight as you would normally do for a quad. If you need help setting up receivers in Betaflight, here is a complete guide on how to setup ExpressLRS.

Create New Model Profile Edgetx 15 Check Rx Working Betaflight Configurator Receiver Tab

Enter This in CLI

Once you’ve confirmed the RX is working in the Receiver tab (channels are responding to stick movements), go to the CLI and enter:

set usb_hid_cdc = on save

This command activates joystick mode.

Select Joystick in FPV Simulator

Once it’s set up properly, your flight controller will appear as a joystick on your PC, and you should be able to select it in the FPV simulator. Make sure to calibrate it in the sim the first time, and you’re good to go!

Warning: If you are doing this on a quad, remember to TURN OFF USB_HID_CDC before your next flight by entering this command in CLI!

set usb_hid_cdc = off save

COM Port Disappeared After HID

If you can’t connect to Betaflight again after enabling USB_HID_CDC, there’s an easy fix.

With the FC connected to your computer via USB (but not recognized, and no COM port appears):

  • Go to the “Options” tab on the left in the Betaflight Configurator home page.
  • Enable “Show all serial devices (for manufacturers for development)”.
  • Unplug and reconnect the USB cable, then restart Betaflight Configurator.

Once this option is enabled, your flight controller will magically reappear! If you turn off ‘Show all serial devices,’ the flight controller disappears again. But with the option turned on, you can connect to your flight controller again.

Now, you can use the CLI to type “set usb_hid_cdc=off,” or you can leave it on if you wish. The only downside to leaving it on is that you can’t connect to it until you change that option.

If that didn’t work, you might need to reflash the FC with “Full Chip Erase” enabled. Hold down the boot button on the FC while connecting the USB cable; this should put the FC in DFU mode (bootloader mode), ready to be flashed.

Dedicated Wireless Sim Box

For those comfortable with electronics, creating a DIY wireless simulator box can be an option. This involves a dedicated flight controller and a receiver.

I’m using a Frsky receiver in this example, but you can replace it with any other receiver you want, such as ExpressLRS, Crossfire, or Flysky.

The FC, RX, and the plastic box are all spare parts that I no longer use. The coin stack is for stability, so it won’t get dragged or slide around by the USB cable.

Wireless Sim Stick

This is a commercial solution similar to the DIY “wireless sim box” I made. It works the same way but is put together neatly as a more polished product. It’s essentially an ExpressLRS receiver with a processor that converts the signal and sends it to your computer via USB.

If you don’t mind spending a bit more, this might save you some time.

Get it from GetFPV: https://oscarliang.com/product-bicw

ExpressLRS Bluetooth Joystick

Expresslrs Bluetooth Joystick Lua Script Ble

Did you know that your ExpressLRS module has built-in Bluetooth? You can use it to connect to your computer and play FPV simulators without a USB cable.

If your computer doesn’t have Bluetooth, then you need to get a Bluetooth adapter here (affiliate link):

I have a detailed guide on how to set it up: https://oscarliang.com/expresslrs-bluetooth-joystick/

Trainer Port to USB Adapter

Rc Simulator Dongle Trainer Port Connection

If your radio transmitter has a trainer port, you can use a trainer cable connected to a USB dongle to link your transmitter to the PC. This method converts the trainer port output into a USB input recognizable by the computer.

These dongles have been around for years and are designed for older radios (such as those from Futaba, Flysky, and Spektrum) that might not natively support simulators via USB. Before buying, consult the manual or seller to ensure the dongle supports your particular radio model.

Get a RC Sim dongle from:

Edit History

  • Jun 2018 – article created for Frsky D16 receivers
  • Apr 2021 – tutorial updated, shared my dedicated wireless sim box
  • Dec 2023 – tutorial updated for ExpressLRS receivers, updated product links

Leave a Comment

By using this form, you agree with the storage and handling of your data by this website. Note that all comments are held for moderation before appearing.

55 comments

Justin 1st December 2023 - 12:17 am

Tested this with a HummingBird V3 ELRS board. Only worked at 150 Hz, anything above that or below that did show controls in the sim. But, the board was receiving commands according to the onboard LEDS.

I do not believe this works well for ELRS. Just use BLE Joystick and make sure you have a good Bluetooth antenna and receiver on your PC. There really isn’t any noticeable delay through BLE Joystick.

Reply
Roberto 12th November 2023 - 3:51 pm

Hi, using a cheap teensy 2.0 and this code github.com/macsleep/gamepad you can use an sbus receiver as gamepad. Using last ELRS firmware there is no need for logical inverter (set it as inverted sbus), just connect tx pin with d2.

Reply
Warl0rd 6th November 2023 - 8:11 pm

For those using ELRS, mine only works properlly up to 150Hz, if I set to 250Hz it no longer tracks correctly and 500Hz shows no movement at all.

Reply
nick hayes 7th December 2022 - 2:55 am

I put my JBF7 flight controller (v1) into joystick mode, everything works great. But now its essentially stuck in joystick mode, I cannot get it to go into bootloader by holding the button or anything. its just stuck a game controller now. Any ideas?

Reply
Hairstyles 29th April 2022 - 3:04 am

One thing I would like to say is that often before acquiring more computer system memory, look into the machine within which it will be installed. Should the machine is definitely running Windows XP, for instance, the actual memory ceiling is 3.25GB. Putting in greater than this would purely constitute a new waste. Be sure that one’s mother board can handle the particular upgrade quantity, as well. Thanks for your blog post.

Reply
Nick 12th November 2021 - 5:29 am

I use this method all the time, but bear in mind it adds about 10 to 20mS latency when compared to a QX7 connecting via USB.

Note also that not all 3.4 versions have it. Not sure at what 3.4 subversion it came in.

I also think it is worth pursuing this on older F3 boards – I have some little AIO F3 boards no longer being used. It is left out of F3 builds because of codespace, but I suspect there is nothing fundamental. Therefore, I guess it ought to be possible to do an F3 build based on some 3.4+ that allows it, if a lot of other features are atripped out – after all, it doesn’t even need to fly. May look into this.

Reply
ron 12th July 2021 - 1:59 am

Can aux channels be exposed as joystick buttons or windows keystrokes for games?

Reply
Nick 12th November 2021 - 5:30 am

Yes

Reply
Dojoracle 8th July 2021 - 7:31 pm

So it worked for me up until the point where I try to find the joystick in the game…

Could get the hid_cdc value to be set to = ON but how do I get my computer or the game to recognize it? I’m on a MAC

Reply
andarchen 29th June 2021 - 1:10 pm

It was work, Thanks for information . But there was only six channels shows in joystick , it is possible to increase number of channel ? Thanks in avdance.

Reply
Arthur 25th May 2021 - 2:25 pm

i dont use pc, i use andorid instead, when i use your method on speedybee, set usb_hid_cdc = on
save, i cant collect my drone anymore

Reply
Picsou621 19th May 2021 - 4:08 pm

Hello and thank you for this article, which I find very interesting. Can you please tell us what exact hardware you use in your Dedicated Wireless Sim Box? The goal is really to not have to use an external battery. And as your solution seems to work well without latency and battery, I am very interested :-) Thanks a lot!

Reply
Oscar 19th May 2021 - 6:24 pm

any F4 or F7 flight controller would work, see ‘hardware requirement’, that’s one of the cheapest FC you can get for a dedicated box.

Reply
Nikotttin 16th April 2021 - 6:32 am

Just FYI I’m using a burned (yes magic smoke burned…) betafpv 1S AIO with the Frsky SPI built-in receiver…. and it works well.

Reply
stavrovski 29th January 2021 - 2:31 am

works like a charm with my tinyhawk 2 and betaflight 4.2. thanks man

Reply
Mike 12th October 2019 - 11:16 am

Hi, thanks for the article!
I tried this with a Crazybee F4 Pro v2.1 – FS version – and found it just “kind of” works. I have really sluggish response in the Windows USB-Gamepad settings as well as in the sim Liftoff. Stick inputs lag a good second behind.

Do you how to improve that, or where to look for the problem/possible solutions?

Reply
b00zled 12th March 2019 - 2:21 pm

Since you can also use a F1 development board to connect, couldn’t a F3 flight controller be used as long as it didn’t utilize the Betaflight 3.4 feature? I’m guessing someone would have to rewrite the firmware from the dev board to be compatible with the F3 chip, but i’d bet that’s not too difficult.

I only ask because i’m sure EVERYONE has one or more spare F3 boards laying around now (as I do) that the next generation(s) are so widely used.

Reply
Jeroen Coolen 17th February 2019 - 7:34 pm

I enabled the HID in BF on my Matek F 405 ctr. Now BF will not recognize it to reset the HID and fly my quad.
Please HELP!!

Reply
Jeroen Coolen 22nd February 2019 - 9:34 am

Turns out I needed to mess about in Zadig assigning different drivers to my FC.
Betalfight recognized my fc and I was able to reset the HID settings.

Happy flying!

Reply
Oscar 25th February 2019 - 4:50 pm

Similar issue was raised on Github, see if the suggestions fix your problem:
github.com/betaflight/betaflight/issues/6179

Reply
GizmoChicken 1st June 2022 - 5:42 am

Better option for BF Configurator 10.8.0:

With the FS attached via USB (but not recognized), go to the “Options” tab found on the BF home page, and from there, toggle “show all serial devices (for manufacturers for development)” to the on position.

See github.com/betaflight/betaflight/issues/11405#issuecomment-1040240403

Reply
GizmoChicken 2nd June 2022 - 5:57 am

Quick update/clarification to my previous comment.

It seems that the “show all serial devices (for manufacturers for development)” option does, in fact, restore the ability of BF to find the FC port, even after “set usb_hid_cdc = on” has been entered at the command line.

Also, after selecting the “show all serial devices (for manufacturers for development)” toggle option, I could easily “set usb_hid_cdc = off” using the command line.

As for whether “[I] can turn [my] flight controller into a joystick (HID device) when [I] plug it into [my] computer,” yes I can. But unfortunately, the “show all serial devices (for manufacturers for development)” toggle option (which I need for communicating with BF), seems to adversely affect ability of the FC to (reliably) act as a joystick.. But, at least this issue is recoverable

Reply
Haifeng 8th January 2022 - 12:06 pm

I ran into the same problem and tried the following which works for me.
1. Connect the FC to USB.
2. Download and run zadig. Find the FC device (typically with STM in name). Replace the driver with USB Serial (CDC).
3. Find out the COM port in Wndows device manager.
4. Download and run putty. Connect to the COM port above. It will open a blank terminal window.
5. Type a ‘#’ character and the FC CLI shows up.
6. set usb_hid_cdc = off
7. save
8. Open betaflight configurator and reconnect.

Reply
Paul 24th April 2022 - 5:33 am

Ran into the same problem with my tinyhawk, did exactly that and it worked well, thank you

Reply
Bruno Martins 12th June 2022 - 9:39 pm

This worked for me also, but now I can’t go back to the game controller device setting usb_hid_cdc=on and the simulator does not recognize the controller anymore. What should I do? Using a LUXF4OSD.

Reply
Victor 28th September 2023 - 12:41 pm

This solution WORKED, but the road to success was rocky.
Apparently, I didn’t have the proper STM drivers installed on my system at first. Zadig worked well and replaced the driver.
After that, Windows Device Manager started displaying the Betaflight device as COM7, but indicated the “device could not start” error.
Once I installed the STM drivers, nothing changed. However, Zadig now showed TWO serial Betaflight devices. I had to play with upgrading/downgrading drivers there, and eventually, the Windows Device Manager started showing a valid Betaflight device under COM6. Interesting enough, there still was the invalid one under COM7.
From that point, everything went smooth as per instruction above.
Hope it helps to anyone who had the same issue.

Thank you!

Reply
Dvschafer 31st October 2018 - 9:26 am

I’m running into problem with the channel order where ch2 is made Pitch and is forced high at center position and no variable control dropping to 0 at down position.
Compared to running with a wired USB connection where I get:
1=T
2=Y
3=P
4=R,

Using the FC in USB mode I get:
1=Y
2=P not working correctly
3=No Control assignment
4=R
5=T

I’,m playing FPVFreerider using the Frsky XSRF40 (built in RX) with a Taranis X-Lite. I’ve tried all Betaflight 3.4.X builds.
Anyone have any ideas on whats going on?

Reply
mike 4th December 2018 - 5:21 pm

same thing exactly, following

Reply
Jin 23rd October 2018 - 7:08 am

Revolt OSD + XSR combo gives noticeable delays in the Velocidrone Simulator. I decided go back to old USB method.

Reply
Lp741 1st September 2018 - 11:13 am

Yeah that’s amazing … it works as charm on my mac I used liftoff and a wizard x220s with a fs is6x

Reply
Rodney Brown 13th September 2018 - 5:04 am

what version did you flash to your wizard x220s?

Reply
jan demant 31st July 2018 - 8:05 pm

Excellent.

I use omnibus f4 v2 pro and xm, works like a charm. Omnibus powers the rx , so no battery needed.

Ty for tutorial Oscar.

Reply
Slava Chrome 20th June 2018 - 6:01 pm

One question!

Will BF3,4 work at all with F3?
Or only this future is impossible on F3?

Reply
Alan Jones 20th June 2018 - 12:58 am

Hi Oscar,

I too, have done the CLI command and now the system doesn’t see my FC.

My matek F4 show up as other in device manager in Windows7. I assume I just need drivers so it can see the comms port.

I will try it on ubuntu and see if it detects it.

Cheers
Al

Reply
Alan Jones 20th June 2018 - 12:59 pm

Booting Ubuntu, you can see the FC and disable HID. I have raised the issue on Github

Reply
Hypurr 22nd June 2018 - 2:17 pm

Just posted on IntoFPV about this and added a comment to Github on your thread. Ran into the same issue. Here’s my post:

Found a bug in this feature. Bardwell said I should report it to Github and I found a thread there already on it so I added my experience to it. There is a possible solution but I won’t be able to try it until tonight. Here’s the scenario.

I used a FPVModel XRacer F4 that runs OBF4 firmware and a XM RX. The FC powers the RX through the USB so no battery is needed. Once I bound the RX and configured the FC I used the usb_hid_cdc command to change the FC to game port mode. It worked perfectly in Velocidrone but once done the PC sees the FC as a game controller and not a comm port, so you can’t reconnect with BF to turn the command off. I had to use the bootloader so I could re-flash the FC to reset it to connect. This wiped out the configuration, of course. Luckily I’m using a dedicated FC without much to configure so no big deal, but if you use one of your quads with a highly configured FC you may lose your settings. I would make a DIFF file before trying this so if it happens to you you can load your settings quickly. I’ll let you know if the solution worked.

Reply
Ryan Bloch 18th June 2018 - 11:17 pm

Finally a use for the broken flight controllers I have lying around.

Reply
Chris Geier 18th June 2018 - 4:15 pm

yeah I cant reconnect to betaflight after playing games all night.. Impulse driver fixer wont recognize my flight controller now.

Reply
Alan Jones 20th June 2018 - 2:42 am

Same issue on Windows 7.

I have booted up Ubuntu and it recognises the virtual comms port.

Have grant full permissions I have switch HID off and F.C. is working again.

Hope this helps

Reply
Alan Jones 20th June 2018 - 6:15 pm

I have raised issue on Github, github.com/betaflight/betaflight/issues/6179

driver link is zippyshare.com/v/2YhFKOJT/file.html

It now works on Windows 7, the port changes when HID is enabled.

Reply
attomic 12th June 2018 - 8:56 pm

So for tuning you are using the tuning of the FC or is this just about getting a wireless setup?

Reply
Kevin Chupe 12th June 2018 - 2:21 pm

Isn’t there a wireless dongle you can get that syncs to the transmitter?

Reply
Oscar 12th June 2018 - 2:41 pm

I believe so, but some of them have noticeable latency I’ve heard.

Reply
james brandon stitzel 12th June 2018 - 2:07 pm

Perfect solution for me! I have several old fc’s laying around that won’t fly, but still power up with usb! Grabbed an old f411 mini and an xm, now I can play with no more cables across the living room! AND I can play in my workshop if I stream liftoff to the laptop I have there, but the lag kinda sucks with steam streaming. Going to find another solution for that. But this works great with no noticeable lag just in the game! Thanks Oscar!

Reply
Peter Dien 12th June 2018 - 8:44 pm

If you want better game streaming, try out Parsec. It’s so much better than Steam IHS.

Reply
Frank 12th June 2018 - 8:54 am

Hey Oscar,
after “set usb_hid_cdc = on” + save
i can use my fc as controller

BUT

i cant anymore connect to betaflight-configurator :-(

Reply
Oscar 12th June 2018 - 2:40 pm

I don’t have this issue. Have you accidentally turn off MSP on VCP?
Try flashing the firmware again and see what happens.

Reply
Frank 13th June 2018 - 8:50 am

Hey Oscar i dont turn anything
1 Flashed BF 3.4 -> LUX4OSD Target
set RX2 Receiver
set usb_hid_cdc = on + save in cli

maybe a bug ? feature? :-)

Reply
Chris Geier 18th June 2018 - 3:30 pm

omg I just did this last night. and now i cant connect back to betaflight. ugh.. did you figure it out?

Reply
Jeroen 18th February 2019 - 11:16 am

Hi I have the same issue, I am running a Matek F405 CTR. Flightcontroller seems to function normal otherwise I also get a readout of my PID and Filters in Lua script. But Betaflight no longer recognizes the FC.
I also tried using the Impulse RC Driver fixer but it does not see the FC, therefore it does not start fixing stuff.

Is there any other option other than trying to re-flash my FC with new firmware?

Reply
Rafael Baez-Herrera 11th June 2018 - 3:25 pm

Master,
I was looking for just this timeeeeee.
Thanks

Reply
Ryan 11th June 2018 - 1:12 pm

Been a while since I tried this, but Velocidrone had an issue (not sure about other simulators, didn’t get round to trying them) – I think something like the Throttle channel not being used by betaflight by default, and some transmitter channel mixing was needed to get it working properly.
Did you try Velocidrone? Did you have any issues with missing channels on Windows?

It was mentioned in the article, but I just want to reiterate for anyone new: probably not a a good idea to use your full quad for this, or if you do, disconnect the VTX so it doesn’t overheat.

Reply
Ryan 11th June 2018 - 1:35 pm

I was slightly mistaken, it wasn’t Throttle that was missing on windows, but Yaw:
github.com/betaflight/betaflight/issues/5710
Can be made to work with some TX channel fiddling.

Reply
Paul 11th June 2018 - 12:36 pm

Hi, great news, I love it. Currently I’m using a similar solution connection my Flysky receiver to an Arduino and use UnoJoy as an controller. But I like this new solution more.
I wish you could make it available for F1 targets since I have old FCs available which would be perfect for this job. I mean memory is only an issue if I want to go fly AND simulate with the same firmware build. So please just remove all the features I need for a flying a quad.

Reply
Kristófer 11th June 2018 - 2:01 pm

Hi Paul
Can you share the Arduino code, I have a bunch of them lying around and would like to try this

Reply