Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Collapse
Brand Logo

ModalAI Forum

  1. ModalAI Support Forum
  2. VOXL Compute & Autopilot
  3. VOXL 2
  4. Slow connection to QGC and missing params due to timeout with Doodle Labs Radios

Slow connection to QGC and missing params due to timeout with Doodle Labs Radios

Scheduled Pinned Locked Moved VOXL 2
11 Posts 4 Posters 2.5k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Chase RileyC Offline
    Chase RileyC Offline
    Chase Riley
    Regular
    wrote on last edited by
    #1

    I am currently running SDK 1.0.0 on a VOXL 2 and am using Doodle Labs Radios for the connection. This worked great for me in SDK .0.9.5, however in 1.0.0 the connection to QGC is very slow. The green bar at the top of the screens moves greater than 10x times slower than it does in the previous SDK. No settings on the radios have been changed between the SDK. I was able to test out SDK 1.0.0 using WIFI instead of the Doodle Labs Radios and everything works as it should.

    Sometimes I am able to get a full set of params and a connection to QGC but am not able to run any of the sensor calibrations due to lag. The calibrations just timeout. Even when doing a radio calibration the slider on QGC move about 2 sec after I move the sticks.

    I am hoping that someone from the dev team will be able to help me identify the issue.

    tomT 1 Reply Last reply
    0
    • Chase RileyC Chase Riley

      I am currently running SDK 1.0.0 on a VOXL 2 and am using Doodle Labs Radios for the connection. This worked great for me in SDK .0.9.5, however in 1.0.0 the connection to QGC is very slow. The green bar at the top of the screens moves greater than 10x times slower than it does in the previous SDK. No settings on the radios have been changed between the SDK. I was able to test out SDK 1.0.0 using WIFI instead of the Doodle Labs Radios and everything works as it should.

      Sometimes I am able to get a full set of params and a connection to QGC but am not able to run any of the sensor calibrations due to lag. The calibrations just timeout. Even when doing a radio calibration the slider on QGC move about 2 sec after I move the sticks.

      I am hoping that someone from the dev team will be able to help me identify the issue.

      tomT Offline
      tomT Offline
      tom
      admin
      wrote on last edited by
      #2

      @Chase-Riley There shouldn't be any difference between SDK 0.9.5 and SDK 1.0.0 in terms of how the doodle labs modems are handled.

      Make sure that your ground station radio and drone side radio aren't too close too each other in order to prevent RF saturation.

      Take a read through the "Troubleshooting Link Quality" section of this document from Doodle Labs, starting on page 6: https://doodlelabs.com/wp-content/uploads/2022/09/Smart-Radio-Trouble-Shooting-Guide-V0122.pdf

      "
      “The throughput is poor even at close range”
      As the radios are optimized for long range, they do not work well when they are within a close
      range of each other. At close range, the radios are likely to saturate the RF front-end, resulting
      in poor performance. For bench evaluation, please use RF attenuators supplied in the Eval kit.
      You should also reduce the output power of the radios and not use high gain antennas. , It is
      further possible to enable Transmit-Power Control (TPC). Note that TPC is only recommended
      for point-to-point networks.
      If the radios are more than 5-10 meters apart and the throughput is still poor, then it could be
      an interference or power supply issue. Please see the advice in the next section."

      tomT 1 Reply Last reply
      0
      • tomT tom

        @Chase-Riley There shouldn't be any difference between SDK 0.9.5 and SDK 1.0.0 in terms of how the doodle labs modems are handled.

        Make sure that your ground station radio and drone side radio aren't too close too each other in order to prevent RF saturation.

        Take a read through the "Troubleshooting Link Quality" section of this document from Doodle Labs, starting on page 6: https://doodlelabs.com/wp-content/uploads/2022/09/Smart-Radio-Trouble-Shooting-Guide-V0122.pdf

        "
        “The throughput is poor even at close range”
        As the radios are optimized for long range, they do not work well when they are within a close
        range of each other. At close range, the radios are likely to saturate the RF front-end, resulting
        in poor performance. For bench evaluation, please use RF attenuators supplied in the Eval kit.
        You should also reduce the output power of the radios and not use high gain antennas. , It is
        further possible to enable Transmit-Power Control (TPC). Note that TPC is only recommended
        for point-to-point networks.
        If the radios are more than 5-10 meters apart and the throughput is still poor, then it could be
        an interference or power supply issue. Please see the advice in the next section."

        tomT Offline
        tomT Offline
        tom
        admin
        wrote on last edited by
        #3

        @tom You can also try pinging from your ground station to the drone and see how cleanly the packets are coming through

        Chase RileyC 1 Reply Last reply
        0
        • tomT tom

          @tom You can also try pinging from your ground station to the drone and see how cleanly the packets are coming through

          Chase RileyC Offline
          Chase RileyC Offline
          Chase Riley
          Regular
          wrote on last edited by Chase Riley
          #4

          @tom I have read through the troubleshooting manual from Doodle Labs multiple times. I do have the attenuators installed. I have tried bench top testing as well as removing the attenuators and trying range testing ( greater than 10m between GCS and AV). I have not switched on TPC because I am requiring a mesh setup for this project. Power supply should be solid. I have tried using a Lipo battery and the supplied 12V AC to DC convertor that came with the VOXL2 Dev kit. On the GCS side I am using a AC to DC convertor as well.

          I understand that there should not be a difference in how Doodle Labs is handled between .0.9.5 and 1.0.0, however it is odd that if a flash .0.9.5 on the VOXL2 and run the same exact test there is not issue. I have run this test multiple times and have never had a issue on .0.9.5, but as soon as I switch back to 1.0.0 I encounter the problem again. Both test have been run with the same exact radio configurations, in the same RF environment, and the same antennas. The only variable I am seeing is the SDK version. I have included two ping test below. First one is from GCS to AV and the second is from AV to GCS running 1.0.0. These were captured while QGC was slowly getting link only to time out with missing params after sometime.

          GCS to AV

          ping 10.223.0.100
          PING 10.223.0.100 (10.223.0.100) 56(84) bytes of data.
          64 bytes from 10.223.0.100: icmp_seq=1 ttl=64 time=2.48 ms
          64 bytes from 10.223.0.100: icmp_seq=2 ttl=64 time=2.90 ms
          64 bytes from 10.223.0.100: icmp_seq=3 ttl=64 time=13.5 ms
          64 bytes from 10.223.0.100: icmp_seq=4 ttl=64 time=2.92 ms
          64 bytes from 10.223.0.100: icmp_seq=5 ttl=64 time=2.72 ms
          64 bytes from 10.223.0.100: icmp_seq=6 ttl=64 time=2.29 ms
          64 bytes from 10.223.0.100: icmp_seq=7 ttl=64 time=2.47 ms
          64 bytes from 10.223.0.100: icmp_seq=8 ttl=64 time=32.8 ms
          64 bytes from 10.223.0.100: icmp_seq=9 ttl=64 time=13.0 ms
          64 bytes from 10.223.0.100: icmp_seq=10 ttl=64 time=3.13 ms
          64 bytes from 10.223.0.100: icmp_seq=11 ttl=64 time=109 ms
          64 bytes from 10.223.0.100: icmp_seq=12 ttl=64 time=4.34 ms
          64 bytes from 10.223.0.100: icmp_seq=13 ttl=64 time=4.45 ms
          64 bytes from 10.223.0.100: icmp_seq=14 ttl=64 time=7.97 ms
          64 bytes from 10.223.0.100: icmp_seq=15 ttl=64 time=2.86 ms
          64 bytes from 10.223.0.100: icmp_seq=16 ttl=64 time=2.39 ms
          64 bytes from 10.223.0.100: icmp_seq=17 ttl=64 time=4.17 ms
          64 bytes from 10.223.0.100: icmp_seq=18 ttl=64 time=4.50 ms
          64 bytes from 10.223.0.100: icmp_seq=19 ttl=64 time=3.76 ms
          64 bytes from 10.223.0.100: icmp_seq=20 ttl=64 time=2.62 ms
          64 bytes from 10.223.0.100: icmp_seq=21 ttl=64 time=2.37 ms
          64 bytes from 10.223.0.100: icmp_seq=22 ttl=64 time=8.58 ms
          64 bytes from 10.223.0.100: icmp_seq=23 ttl=64 time=5.67 ms
          64 bytes from 10.223.0.100: icmp_seq=24 ttl=64 time=2.46 ms
          64 bytes from 10.223.0.100: icmp_seq=25 ttl=64 time=4.83 ms
          64 bytes from 10.223.0.100: icmp_seq=26 ttl=64 time=2.44 ms
          64 bytes from 10.223.0.100: icmp_seq=27 ttl=64 time=5.14 ms
          64 bytes from 10.223.0.100: icmp_seq=28 ttl=64 time=2.66 ms
          64 bytes from 10.223.0.100: icmp_seq=29 ttl=64 time=2.73 ms
          64 bytes from 10.223.0.100: icmp_seq=30 ttl=64 time=3.12 ms
          ^C
          --- 10.223.0.100 ping statistics ---
          30 packets transmitted, 30 received, 0% packet loss, time 29044ms
          rtt min/avg/max/mdev = 2.292/8.794/108.558/19.422 ms
          

          AV to GCS

          ping 10.223.0.150
          PING 10.223.0.150 (10.223.0.150): 56 data bytes
          64 bytes from 10.223.0.150: icmp_seq=0 ttl=64 time=3.496 ms
          64 bytes from 10.223.0.150: icmp_seq=1 ttl=64 time=10.936 ms
          64 bytes from 10.223.0.150: icmp_seq=2 ttl=64 time=3.443 ms
          64 bytes from 10.223.0.150: icmp_seq=3 ttl=64 time=2.728 ms
          64 bytes from 10.223.0.150: icmp_seq=4 ttl=64 time=3.497 ms
          64 bytes from 10.223.0.150: icmp_seq=5 ttl=64 time=3.400 ms
          64 bytes from 10.223.0.150: icmp_seq=6 ttl=64 time=3.168 ms
          64 bytes from 10.223.0.150: icmp_seq=7 ttl=64 time=3.219 ms
          64 bytes from 10.223.0.150: icmp_seq=8 ttl=64 time=2.796 ms
          64 bytes from 10.223.0.150: icmp_seq=9 ttl=64 time=2.916 ms
          64 bytes from 10.223.0.150: icmp_seq=10 ttl=64 time=64.166 ms
          64 bytes from 10.223.0.150: icmp_seq=11 ttl=64 time=2.647 ms
          64 bytes from 10.223.0.150: icmp_seq=12 ttl=64 time=4.295 ms
          64 bytes from 10.223.0.150: icmp_seq=13 ttl=64 time=12.701 ms
          64 bytes from 10.223.0.150: icmp_seq=14 ttl=64 time=6.396 ms
          64 bytes from 10.223.0.150: icmp_seq=15 ttl=64 time=2.774 ms
          64 bytes from 10.223.0.150: icmp_seq=16 ttl=64 time=5.131 ms
          64 bytes from 10.223.0.150: icmp_seq=17 ttl=64 time=2.943 ms
          64 bytes from 10.223.0.150: icmp_seq=18 ttl=64 time=5.845 ms
          64 bytes from 10.223.0.150: icmp_seq=19 ttl=64 time=2.695 ms
          64 bytes from 10.223.0.150: icmp_seq=20 ttl=64 time=8.678 ms
          64 bytes from 10.223.0.150: icmp_seq=21 ttl=64 time=5.018 ms
          64 bytes from 10.223.0.150: icmp_seq=22 ttl=64 time=2.625 ms
          64 bytes from 10.223.0.150: icmp_seq=23 ttl=64 time=11.066 ms
          64 bytes from 10.223.0.150: icmp_seq=24 ttl=64 time=8.588 ms
          64 bytes from 10.223.0.150: icmp_seq=25 ttl=64 time=2.556 ms
          64 bytes from 10.223.0.150: icmp_seq=26 ttl=64 time=3.735 ms
          64 bytes from 10.223.0.150: icmp_seq=27 ttl=64 time=2.621 ms
          64 bytes from 10.223.0.150: icmp_seq=28 ttl=64 time=9.022 ms
          64 bytes from 10.223.0.150: icmp_seq=29 ttl=64 time=2.882 ms
          64 bytes from 10.223.0.150: icmp_seq=30 ttl=64 time=7.700 ms
          ^C--- 10.223.0.150 ping statistics ---
          31 packets transmitted, 31 packets received, 0% packet loss
          round-trip min/avg/max/stddev = 2.556/6.893/64.166/10.847 ms
          
          1 Reply Last reply
          0
          • ModeratorM Offline
            ModeratorM Offline
            Moderator
            ModalAI Team
            wrote on last edited by
            #5

            there isn't an obvious reason this would be the case, we will investigate

            Chase RileyC 1 Reply Last reply
            0
            • ModeratorM Moderator

              there isn't an obvious reason this would be the case, we will investigate

              Chase RileyC Offline
              Chase RileyC Offline
              Chase Riley
              Regular
              wrote on last edited by
              #6

              @Moderator Thanks. Let me know how it goes. I am pretty much at a stand still until I can get a reliable link from the Doodle Radios on 1.0.0.

              1 Reply Last reply
              0
              • James StrawsonJ Offline
                James StrawsonJ Offline
                James Strawson
                ModalAI Team
                wrote on last edited by
                #7

                between SDK 0.9.5 and SDK 1.0 we disabled the mavlink packet aggregation in voxl-mavlink-server which used to be on by default. This was originally a patch to reduce wifi traffic on VOXL1 + Flight Core systems that forwarded full offboard-rate traffic through WiFi since the implementation of PX4 on VOXL2's DSP only sends slow data rate mavlink telemetry to the ground control station, we didn't find this feature necessary anymore and disabled it by default.

                You can re-enable the mavlink aggregation feature with the udp_mtu field in /etc/modalai/voxl-mavlink-server.conf, the JSON file contains the following description of the field:

                 * udp_mtu - maximum transfer unit for UDP packets back to GCS. voxl-mavlink-server
                 *           will bundle up packets for the GCS into a single UDP packet with 
                 *           a maximum size of this. This might help with some radios.
                 *           This feature is off by default to let the network stack handle aggregation.
                 *           Set to 0 to disable this feature and send one UDP packet per msg.
                 *           Set to something like 500 to bundle a handful of packets together.
                

                I suspect doodlelabs might not be well optimized for very small mavlink messages or is not capable of doing its own aggregation. Try a few different values such as 100, 200, 300 etc and see if you get any improvement.

                Best,
                James

                Chase RileyC 1 Reply Last reply
                0
                • James StrawsonJ James Strawson

                  between SDK 0.9.5 and SDK 1.0 we disabled the mavlink packet aggregation in voxl-mavlink-server which used to be on by default. This was originally a patch to reduce wifi traffic on VOXL1 + Flight Core systems that forwarded full offboard-rate traffic through WiFi since the implementation of PX4 on VOXL2's DSP only sends slow data rate mavlink telemetry to the ground control station, we didn't find this feature necessary anymore and disabled it by default.

                  You can re-enable the mavlink aggregation feature with the udp_mtu field in /etc/modalai/voxl-mavlink-server.conf, the JSON file contains the following description of the field:

                   * udp_mtu - maximum transfer unit for UDP packets back to GCS. voxl-mavlink-server
                   *           will bundle up packets for the GCS into a single UDP packet with 
                   *           a maximum size of this. This might help with some radios.
                   *           This feature is off by default to let the network stack handle aggregation.
                   *           Set to 0 to disable this feature and send one UDP packet per msg.
                   *           Set to something like 500 to bundle a handful of packets together.
                  

                  I suspect doodlelabs might not be well optimized for very small mavlink messages or is not capable of doing its own aggregation. Try a few different values such as 100, 200, 300 etc and see if you get any improvement.

                  Best,
                  James

                  Chase RileyC Offline
                  Chase RileyC Offline
                  Chase Riley
                  Regular
                  wrote on last edited by
                  #8

                  @James-Strawson @tom @Moderator @Chad-Sweet So it does seem there was a change from SDK .0.9.5 to 1.0.0. This fixed the problem. I changed the value to 500 and it links up quickly and I am able to complete calibrations. I would recommend that this be added to the Doodle Labs Modems Documentation.

                  James StrawsonJ 1 Reply Last reply
                  0
                  • Chase RileyC Chase Riley

                    @James-Strawson @tom @Moderator @Chad-Sweet So it does seem there was a change from SDK .0.9.5 to 1.0.0. This fixed the problem. I changed the value to 500 and it links up quickly and I am able to complete calibrations. I would recommend that this be added to the Doodle Labs Modems Documentation.

                    James StrawsonJ Offline
                    James StrawsonJ Offline
                    James Strawson
                    ModalAI Team
                    wrote on last edited by
                    #9

                    @Chase-Riley Glad to hear. Does it also perform as expected at lower values such as 100 or 200? a value as high as 500 will increase latency when only sending small mavlink messages.

                    Chase RileyC 2 Replies Last reply
                    0
                    • James StrawsonJ James Strawson

                      @Chase-Riley Glad to hear. Does it also perform as expected at lower values such as 100 or 200? a value as high as 500 will increase latency when only sending small mavlink messages.

                      Chase RileyC Offline
                      Chase RileyC Offline
                      Chase Riley
                      Regular
                      wrote on last edited by
                      #10

                      @James-Strawson I had no luck with 100 or 200. I can try some other values, however I have not seen an issue with the value of 500 yet.

                      1 Reply Last reply
                      0
                      • James StrawsonJ James Strawson

                        @Chase-Riley Glad to hear. Does it also perform as expected at lower values such as 100 or 200? a value as high as 500 will increase latency when only sending small mavlink messages.

                        Chase RileyC Offline
                        Chase RileyC Offline
                        Chase Riley
                        Regular
                        wrote on last edited by
                        #11

                        @James-Strawson Quick update. I was able to lower the value to 300 and it seems to work as well.

                        1 Reply Last reply
                        1
                        • Chase RileyC Chase Riley referenced this topic on

                        Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                        Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                        With your input, this post could be even better 💗

                        Register Login
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        ModalAI
                        Categories Recent Tags ModalAI.com Docs
                        © 2026 ModalAI® · Accelerating autonomy for smaller, smarter, safer drones · Powered by NodeBB
                        • Login

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • Users
                        • Groups