Is there a way to get SmartAudio working?

Since I tried out Betaflight, I wonder whether there is a way to get SmartAudio working to change Transmitter settings in ArduCopter.

1 Like


To be more specific - an I2C support for smartaudio to control TBS video transmitter - is it doable? Same applies to runcam split - the way it all works from betaflight now is quite convenient. Is there any way to add smartaudio to the 3.6?

1 Like

Does TBS Tx utilize I2C for SmartAudio? I thought all the devices uses UART for that.

For myself I did a custom FW (basing on 3.6-rc1) that supports a limited SmartAudio functionality:

  • auto VTx power depending of distance to Home
  • manual VTx power by RC switch
  • runcam split recording start/stop by RC switch

Also it is implemented in a way that you need a single UART port for both Split and VTx.


hi, see here:

i was not aware of it and saw it on that page. smartaudio - full control paragraph.

anyway, it would be great to get that in 3.6 if possible. smartaudio is the way to deal with those cameras.


Would you mind sharing details of your custom firmware? I am running ArduPlane latest master, and just installed a RunCam Split 2, and would like to figure out how to control it by way of an available UART on the flight controller (Matek F405-Wing). Thanks,


sure, please see my latest commits here

Thanks Sergey. I reviewed your code, and looks like exactly what I was hoping for on RunCam control. I am ArduPlane based, and somewhat new to custom builds, PRs, changes to master, etc., Are your changes restricted to Copter, or already or easily merged with Plane?

Have you tested the RunCam operations on the bench or in flight?


AP_SmartAudio is a shared library so they could be used in Plane too. But I never looked in plane code so cannot say is it similar to Copter. Basically you need to define a smart_audio object, init it with SerialManager, and connect aux switch to toggle_camera() method.

Yes I flied a lot by now with that modification, no problems.
Both runcam and video TX is controlled simultaneously without issues.

Hi, is there any chance for this code to be a part of the future 3.6 stable build? Or is it already committed to a RC branch?

In a current form I’m not sure it may be a part of the official FW because it is not a full implementation of SmartAudio. It does support power switching (including automatically depending on distance to home) but not the channel switching.

Even it is possible to implement whole SmA protocol, this is still a question of the design and purpose of that library. How Ardupilot should use it? Ardupilot doesn’t have the ability to change settings via FrSky telemetry.

Has there been any movement on this in 3.7?

I’d be willing to kick in $20 through paypal if the smart audio library was completed to allow channel, power, and band changes. (I’m primarily a plane user) I’d also really like the feature implemented where it defaults to a low power mode before arming, and then a specified power mode after the aircraft has been armed. iNav did all of this and it’s the one feature I miss. There is also an enhancement in github asking for this:

For control I would assume the easiest is to use the transmitter stick positions before the aircraft is armed just like betaflight/iNav. To enter the menu the throttle is mid stick, yaw is full left, and elevator is full forward. Then you use the elevator stick to move up and down in the menu and roll to enter or exit selected items.

Once the aircraft has been armed the smartaudio menu should be disabled so it doesn’t override flight data.

Maybe if a few more people elect to put some money in it will motivate a SW developer :grinning:


Count me in! I think it’s a great feature and further takes advantage of technology being adopted from the race drone community.

1 Like

It’d be a great feature. I am also happy to contribute $20.

1 Like

I’ve love to have that feature! Count me in for $20 too.

1 Like

SmartAudio is not very complex and the I have the base functionality working OK in my branch, including power and channel/band changing.

But the bad thing is ArduPilot doesn’t have OSD menu and it is not so easy to do this. I believe most of the ArduPilot users uses flight controllers that has no onboard OSD. So OSD things never were in priority. External OSDs like minimOSD communicates by using mavlink protocol so this is even a harder task.

Another option is the LUA scripts on RC like those used in betaflight. But this is also not implemented and is a separate complex task, out of SmartAudio scope.

So, what is feasible in a reasonable time is adding of SmartAudio library that will know how to operate with VTx. Having that the next step will be to add different features that aren’t requires OSD:

  • low power if disarmed
  • power select by RC switch (force low / high)
  • auto power stepping depending on home distance
  • channel select by RC switch (not very useful I think)
  • channel select by a parameter setting (so the channel could be set via mavlink telemetry connection)
  • control VTX with onboard LUA scripts
    and so on
1 Like

A lot of us are using boards w/ onboard OSD now. Especially the users who are interested in smartaudio. I think more and more will… It’s not hard to see we can do more w/ a $30 FC than we can w/ the bigger expensive ‘pixhawk’ boards. And I’d be willing to bet the next generation pixhawks start to have onboard OSD, too, since everything else has one. It’s probably worth making it work w/ the onboard OSD’s. I wouldn’t worry about external OSD’s like minimOSD.

Sure, my point was the OSD Menu feature is a big separate task. Thus implementation in scope of SmartAudio doesn’t look feasible.

I am also using primarily the omnibus and f405 boards on projects now that do have built in OSD. These were the boards I envisioned writing this capability for primarily but I do agree a mavlink message to set parameters is probably more/equally important as it lays the foundation for OSD menu.

Sergey, do you know how hard it would be to implement on boards that do have OSD built in?

Are you asking for OSD Menu?
It is hard to say, it’s pretty big task. ArduPilot devs need to design the overall concept of OSD Menu, because obviously if we will have it then it should be used for configuring of many different things, not only for SmartAudio. So there must be a possibility to somehow define pages, to have a page tree, navigation, next-prev-back-enter and so on.
Also it is not only about OSD rendering but also for RC sticks input processing. And if we’re using RC sticks then this brings safety concerns and potential bugs.