How does VOXL 2 communicate with external Flight Controller?

  • Hi,

    How does VOXL 2 communicate with an external flight controller? What sort of latency does connecting to an external flight controller introduce?


  • Dev Team

    Hi @roy ,

    Typically the easiest way to interface is through a UART. That's what we do on our VOXL-Flight product. There's the Snapdragon 821 on one side, and an STM32 on the other, and they communicate via a UART at 921.6kbuad. Latency has not been an issue.

    Same idea roughly on VOXL2, except this time we have PX4 running ON the snapdragon 865 on a DSP instead of offboard.

    BUT, you don't need to use that, and can get mavlink going over UART to some other controller that has a UART and speaks mavlink.

    We are in the process of exposing more UART(s) that the application processor can have access to.

    Right now you need a daughter board that has a 2W uart exposed on a JST 4 pin.

    Soon, we're looking to change the SPI on J8 to a UART, and with a little level shifter, we can get UART in that way.

    We are also working on getting the UARTs that are on J19 to be "pass through" through the DSP. Once we have that going, then you could connect via J19 without level translators. So a few opions... the only one immediately available is via a daughter board UART, or if you wanted to try a SPI to UART convertor off of J10....

    Holler if you have any more questions and we can help.

  • Thanks @modaltb, your explanation was very helpful.

    Regarding latency, is there any response delay from converting a sensor output to mavlink protocol then interpreting that mavlink message into a behavior? Versus directly interpreting the sensor output on the VOXL 2. Or, is the the communication across the board always mavlink? (Thus the latency/response delay would be about equal)

    Will there able future development to include a PX4-RTPS bridge via uORB? The attached image contains a diagram of the bridge.


  • Dev Team

    Hi @roy ,

    I don't have quantitive data to give you, except that even in the native setup, we are doing a bunch of "translations".

    For example, one of the DSPs (sensors DSP, sometimes called Sensors Low Power Island (SLPI), at least on the older platform and carried over by us out of habit)) is talking SPI to an IMU, and then that data get's passed via mUORB to the applications processor and in some scenarios for our vision processing code that runs on the application processor.

    (We've now actually hooked up an IMU directly to the applications processor for vision processing and PX4 has it's own, but the data path and delays introduced did not cause issues for us)

    This graphic is from:


    It shows how we're doing things roughly.

    So you can imagine this:

    • have an external flight controller connected via UART (as explained above, through an add on board or soon via a camera connetor J8)
    • use our voxl-mavlink-server has a UART implantation that can be used as reference to get MAVLink to/from your Flight Controller INTO VOXL2

    Maybe not answering all your questions, but keep the back and forth going and we can widdle away 😉

Log in to reply