You can setup SmartAudio (or Tramp) to control VTX, which allows you to change VTX settings such as channel and output power from Betaflight OSD or OpenTX LUA Script.
Check out our VTX guide for beginners.
Table of Contents
What’s SmartAudio and VTX Control?
VTX Control allows you to change video transmitter settings such as output power and channel from BetaFlight OSD menu. No more fiddling with physical dip switches or push buttons on the VTX!
SmartAudio is a protocol between the flight controller and video transmitter. It’s required to support VTX control. The other protocol is called tramp which is used in ImmersionRC VTX.
Being able to change VTX settings remotely is so easy. It might not sound like a great deal, but once I tried it on my quads a few times, I was totally blown away by how convenient it is and I strongly recommend setting this up if your hardware supports.
VTX Control is useful, say when you was in race and you crashed, you can enable PitMode on your VTX right from your seat without rushing to your quad. This ensures minimal disruption to other pilots who are still in the air, and potentially protects your VTX from overheat due to the lack of airflow.
Limitation
One issue with VTX control from OSD menu is that you have to be on the correct channel to begin with, otherwise you wouldn’t be able to see the OSD menu, let alone changing settings. If you are not on the correct channel, you have to go through all the frequencies on either your VRX or VTX to find the correct channel first.
The other way of doing VTX Control is via a Lua Script in OpenTX, which doesn’t have the same limitation mentioned with OSD (you don’t need to be on the right channel to use VTX control). You can just change channel or power whenever you want. However the setup requires a few more steps which I will explain later.
Video Transmitters That Support “VTX Control”
Almost all VTX you buy nowadays support SmartAudio or Tramp (which should be mentioned on the product page or specifications). Either protocol will support VTX control in Betaflight.
Not sure which VTX to buy? Check out my VTX recommendations.
Hardware Connection
You only need to connect one wire.
Simply connect the pin for SmartAudio or Tramp on your VTX, to the TX pin of any spare UART on your FC.
The name of the pin on your VTX might vary depends on the manufacturer. For VTX’s using Tramp Telemetry, the pin might be called “Telemetry“, while for the SmartAudio, the pin might be called “Audio” or “SmartAudio“. Some even call them FC UART… If not sure just look at the documentation.
Betaflight Setup
In Betaflight Configurator, go to the Port tab, and under Peripherals of the UART you’ve connected the VTX to, choose the corresponding protocol/device from the dropdown.
- For Unify Pro VTX and AKK VTX’s, choose “TBS SmartAudio“
- For Tramp Telemetry, select “IRC Tramp“
Save it and FC should now reboot.
Then go to the Configuration tab, and enable Betaflight OSD feature. If you are new to Betaflight, here is a guide that shows you how to use Betaflight OSD.
Save your changes, and that’s it, you should now be able to access the Betaflight OSD, and see your VTX settings.
Lastly, if you are running Betaflight 4.1 firmware or newer, you have to enter the VTXTables for your particular VTX, otherwise SmartAudio VTX control won’t work. Older Betaflight firmware do not need to do this and should work out of the box.
Access VTX Control in Betaflight OSD
To enter the Betaflight OSD menu, use this stick command: throttle to the centre and yaw left, while pitch up.
Select “Feature” in the OSD menu.
“VTX SA” is for SmartAudio, and “VTX TR” is for Tramp. Select the one you are using.
And in this screen you should be able to see your VTX settings.
If no info is displayed, then there is probably something wrong with your hardware connection, or perhaps wrong port settings. Try a different UART if you keep getting problems. Also you can try Soft Serial if nothing works.
The interface is self-explanatory, here you can change VTX band, channel and output power. To save the changes, select “SET“, and “Confirm“.
VTX Control also works with MinimOSD too if your FC doesn’t have Betaflight OSD integrated.
Here is a tutorial how: http://intofpv.com/t-control-vtx-through-minimosd
How to change VTX Settings from OpenTX radio using LUA script
In order to use VTX Control from your OpenTX radio (such as TX16S and Taranis) you need to:
- Follow sections “Hardware Connection” and “Settings in Betaflight” in this guide
- Setup LUA script on your Taranis; Tutorial: How to Setup Taranis LUA Script in Betaflight
- Get Telemetry working on your quad
This diagram shows you how simple the hardware connection is (with SmartPort setup on the Frsky R-XSR receiver).
And now you should be able to change your VTX settings, PID and rates right from your Taranis screen, how convenient is that?!
VTX Control Via CLI
Available SmartAudio CLI commands:
vtx_band = 1
Allowed range: 0 – 5
vtx_channel = 1
Allowed range: 1 – 8
vtx_power = 1
Allowed range: 0 – 5
vtx_low_power_disarm = OFF
Sets the lowest power level while disarmed (Options: ON/OFF)
vtx_freq = 5800
Allowed range: 0 – 5999
Enabling vtx_low_power_disarm can be useful if you are using a high output power VTX. For example if you don’t want to blast other pilots in the air with your video signal after you have landed, or you don’t want your VTX to overheat. Most VTX has the lowest output power of 25mW, so this is what it would use when the quad is disarmed. However this does not work when the quad is disarmed after failsafe, output power will remain.
Not working?
If you cannot see the VTX page in your LUA script, but you can see the PID and Rate Pages, then there is something wrong with your SmartAudio / Telemetry connection, or it might be the Port config. You should verify if it’s working in Betaflight OSD too.
If none of the pages are working in the LUA script (including VTX, PID and Rate), then your LUA script probably isn’t configured correctly. If you are using the R-XSR receiver, you should get it updated to the latest firmware (201710xx) which fixed a known bug with LUA script. (Here is how to flash Frsky RX) Try different UART, and also try Soft Serial.
Edit History
- Nov 2017 – Turtorial published
- Nov 2019 – Added link to VTXTable (new requirement for Betaflight 4.1)
- Jan 2022 – Updated instructions
46 comments
i do not plan to use goggles with my Nazgul5 v2 drone. I plan on flying LOS. How can i set VTX power to 0 (off) Thanks – i have learned much drone info from your web site.
Is it the DJI version? or analog? Either way you have to disconnect the power connection to turn off VTX completely. Or you can just leave it running it won’t affect its flight performance or flight time.
I have Spektrum: iX12 TX, AR6255 RX and my VTX is EACHINA TX805. How to control VTX and how to connect VTX SmartAudio port to RX please?
If you’re using betaflight 4.4 there’s no need to use smart audio anymore, just use MSP, this makes it a lot easier to use the existing HD DJI port that seems to be on all flight controllers currently.
I am attempting to connect a zeus nano vtx to my aio but I can’t get the osd to appear. I can get an image in my goggles I’ve set my corresponding uart for irc but still no osd, I have osd turned on in my configuration, I’m not sure what I need to change to make this work. This is a betafpv aio Elrs 2.0 fc I am working with. I have a quad with this same board in it so I attempted to connect to the pads on the lower right side of the board where the complete quad has its vtx connected. I have also tried my t2 pad but the osd remains a mystery. I have my camera 5v and negative to the vtx and the third wire is going back to the cam pad on the fc. I’m no expert so I’m hoping you guys might have a suggestion for this case. One thing I might add is I have an m80 gps wired to uart 1 already.
Do you get the betaflight logo when you power on the quad?
If you don’t get that, then something is wrong with the OSD chip on the FC maybe.
I have OmnibusF4SD with BF 4.2.6, VTX Eachine XF5804 – SoftSerial, and Taranis Q X7S, and on Taranis “Display” ->”Script”->”bf”
doesn’t work, but as I read from BF 4.0 and above I use “TOOLS”-> “Betaflight setup” and I have: VTX Settings, PIDs 1, PIDs 2, Rates, Advanced PIDs, Filters 1 and 2, Gyro/Motor, Receiver, GPS Rescue, GPS PIDs, and at least ( what I have checked out by now) I may change VTX Freq and Power.
For those asking about VTX changes on a switch, it is possible using CLI mapping: github.com/betaflight/betaflight/pull/9935#pullrequestreview-434493310 .
However, on many VTX (especially cheaper ones), video will cut out during the switch, so it is not a particularly good idea. If you have a very nice VTX (I think the TBS ones all will switch without cutout), then you may be interested in this.
How can I do this with just a 3 position switch? $50 in bitcoin if we can get it to work! I have low lower mode until armed. I want to be able to raise tx power while in flight. Not land, disarm, and then fiddle with radio or gimbals. TBS Unify Pro 5G8 HV, Taranis Plus, HB Kakute F7.
You are wrong. Smart Audio makes it possible.
Hello
Thank you for the nice article,
Can I control vtx telemetry without FC, can I directly connect s.port to smart audio ?
(Asking because I am arducolter user)
Here is an interesting question I seem to not be able to find the answer to, does the smart audio / tramp protocol tell the VTX to change its power level using the levels e.g. 1 – 5 for tramp, or does it tell it to set itself to the actual milliwatt setting? Here is the scenario, I just installed a 1 watt VTX for a friend, but even the latest betaflight OSD settings only allows up to 600mw. But, I know that on the iflight 1 Watt VTX, level 5 is 1000mw. So, if go into the CLI and tell it, set VTX to level 5 power, is my VTX in 1000mw or is it in 600mw?
What you see in Betaflight OSD is not the actual mW, it’s just levels, 1-5.
You have options to set a 200mW VTX to 600mW but it’s still only doing 200mW.
When I bring up SA in my betaflight OSD I see two different sets of values on the screen. The one across the top that show band, channel, freq, power and then the values down the screen where you can make changes. For some reason these values do not match when I first open the settings screen. Then when I make changes they do not take. I am curious where these values are retrieve from on screen load. I’m guessing based on what I seen when looking at the CLI that the values down the screen where changes can be made are those same values saved to the flight controller. If this is true, where do the values across the top come from? the VTX?
Even if I configure both VTX SA and VTX TR, will only the one that is set in the Betafilght PORTS tab work?
Your VTX determines which protocol you are allowed to use.
I am struggling to get throttle center yaw left and pitch forward to bring up smart audio functions. I got it to work briefly and was playing around with it and saved an exited after that I am not able to get access to the menus. I have tried installing the BF 3.5 AKK/RDQ patch all the way down to 3.3 patch an matching FW, but have not been able to access the menu.
are you talking about Betaflight OSD menu?
Did you enable Betaflight OSD?
Are your stick end points calibrated properly as suggested in this guide?
Hello,
Can someone tell me, if I can still send audio over smartaudio input with the X2-ultimate vtx?
Or does it handle only now the smartaudio protocol.
Thx,
W.
Hoping I can get a response. I have a tbs unify hv, and whenever I unplug the battery and plug it back in, the vtx reverts back to 25mw. Even if I set it higher in the osd. I heard somewhere that the FC is telling the vtx to revert back but don’t know how to change it. please help.
What is the protocol being used? I want to use a different FC, will program myself if possible.
Hi Oscar,
Great work on the website it opend the world of FPV to me.
I am using a Matek vtx hv on betaflight 3.5, I tried to change the power output of my VTX via the OSD menu. Though when I set the value to 200mw for example, the LEDs on my VTX do not display this change in setting and stay lit on the 25mw.
Is this normal? the LEDs should show the change in power output right?
Please help.
I am an idiot, I progammed the wrong UART port for my vtx…
Hey Oscar, your videos are so instructive for me. Thanks a lot!
A short question: do you see any possibility to bind, for example, a rotary knob of FlySky I6 TX to transmitting power of AKK FX2 VTX? That would be so great, to change the power on air.
From a short search, it sounds like I need to flash the OpenTx implementation for FlySky and make some LUA Scripts.
Or?
Thanks
I believe this is possible with Betaflight… but to be honest i’ve not looked into this feature/function yet. Maybe i will cover this in the future. thanks for the idea!
Anyone have “retrying” while save vtx setting? And not affected to vtx? I use tbs unify v3 5v
I’m using sunrise cicada aio F4 I can see and change VTX Settings in osd but won’t save plus I don’t even have telemetry wire hooked up I’m trying to use led pin but not having success please help can I put it on tx6 even though I’m using Ibus on rx6 ??
Great article. Only problem I’m having is the settings don’t save once kwad batt is unplugged. I have to select band and power every time I change batt on kwad. When I disconnect/reconnect Aomway power settings remain unchanged (as set) I’m running Atlatl VTX and Aomway goggles. Is this normal? If not, any suggestions? Btw I’m new to kwads.
Setting should stay even you unplug. Perhaps something wrong with your VTX.
Scott I have this issue too with two of the three TBS vex I have. It then always verts back to 5740 even when I even set by the buttons in the vtx. The only way to get it to stay on the setting is to turn smart audio off. I think I prefer the dip switches on my aomway too. They are much quicker.
Cancel above – just re flashed my tx. Now changed channels via tx and the lua scripts are not even crashing anymore or out of memory’ing. Now after removing battery the channel and band remain on the set one.
Same issue on a TBS Vtx, doesn’t hold the settings. Working with TBS now to get a solution
Hello, and first thanks for sharing your knowledge with us. I have this flight stack 20x20mm HGLRC F438-TX20 V2 Flytower Micro F4 Flight Controller & 33A BL_S ESC & 25/100/200/350mW VTX and I connected the ‘OSD TX Control’ from VTX to ‘TX3’ to Flight controller, and I want to know, if to use this Lua script for my Taranis QX7 if I need a receiver with smart port like the R-XSR or if I can do it with mine XM+ micro receiver.
Thanks.
You have to have a receiver with smart port telemetry to use lua scripts. You can still change the vtx settings with betaflight osd.
Trying to set up lua scripts to control VTX, and my flight controller does not have Vin/Vout for Betaflight OSD. Your lua section says to follow the “Settings in Betaflight” section earlier, I have configured Ports but I assume I do _NOT_ have to enable Betaflight OSD under Configuration as I don’t have that feature? FrSky SmartPort telemetry is already working on a separate UART, I am receiving FC telemetry (e.g. Vfas).
BF lua scripts load VTX page but all values are 0 and I can’t edit.
FC: UHF DTFc with Betaflight 3.1
VTX: RaceDayQuads Mach 2 with Smart Audio
Xmitter: Taranis X9D+ running OpenTX 2.2.1 w/lua
(trying SoftSerial on the LED_STRIP pin, which may be the problem, just want to make sure I’ve kicked other tires before re-soldering elsewhere)
Thanks!
Adam
Sorry, I think-o’ed. Running Betaflight 3.2.4.
Yes you are correct, you only need to setup SmartPort and Telemetry, no need to enable OSD.
Why not update Betaflight to 3.2?
Make sure you selected SmartAudio and not Tramp Telemetry in the Ports tab.
Do you get PID / Rates in the LUA script?
Corrected Betaflight is 3.2.4.
I had some separate issues with out-of-memory condition document e.g. here:
github.com/betaflight/betaflight-tx-lua-scripts/issues/97
In addition to some clean up for that, I moved Smart Audio to a physical UART instead of SoftSerial, and lua screens are now working. I can set VTX details as well as FC PIDs etc. Suspect SoftSerial was the issue.
Thanks for the article, and the reply.
Great tutorial. I now have Taranis control of vTx, among other things. Had to flash my R-XSR to get the LUA to work. And I used your tutorial for that too. It all worked out. Thanks.
Im using matek hv..its working great but some time the vtx value is not appear, i check the connection all ok..it happen several times, even im replace the uart and also replace the matek hv itself with new unit (cause i tought its hardware issue)…any advise on this?
there are still bugs in the LUA script that affect VTX usage, sometimes values get stuck or not appearing until you re-enter the LUA script. Future script update should fix that.
hello
how to change vtx power with the switch ?
Please check your VTX manual.
just by using script VTXprog.lua from that post github.com/betaflight/betaflight/issues/3094
i found one problem – have to change the file name to shorter one. vtxprog.lua >> vtx.lua for my Taranis Q7 to get this script found in custom lua scripts section.
Hi Oscar,
I have set-up Tramp Telemetry on my Betaflight F3 board with no problem. I just got a Betaflight F4 board for a new build, and I cannot get Tramp telemetry to work. I have tried wiring and configuring Tramp telemetry with different UARTs, with and without soft serial. No matter what I try, I can’t see or change the VTX channel in my Betaflight OSD.
Do you have any tips for getting tramp telemetry working with a Betaflight F4 board?
Thanks,
James
When finished setting up, always power cycle your FC (unplug USB and battery, then power it back on).
Also with the BFF4, UART2 is inverted, so you can only use UART1 and 3 for SmartAudio.
It should work with or without soft serial.