3DR Solo Basic MAVLink UDP Communication

I recently purchased a Solo for use in teaching kids coding in a fun way and i am having a bit of trouble getting my initial API working. I prefer to code in Java and i have previously written a Java Mavlink API for communicating with my pixhawk on custom platforms and on the 3dr X8 and everything works fine. now I have a solo and I was thinking the only change i would need to make to my API is to change my serial connection to a UDP connection.

My current process that I use to test that my api is working is to create an ARM message and push the ARM message  byte array over the serial connection and the pixhawk will make the error tone saying it is trying to arm but it cannot because there is no GPS. (if there was GPS it does arm and start the motors)


My new process is I connect my computer to the solo controller's Wi-Fi, I create the arm message, I create a UDP packet whose destination is, and destination port is 14550, and the content is the arm message byte array. I send the packet… and nothing.


Is there something wrong in my logic? Does the solo not communicate using mavlink protocols over UDP, am I sending to the correct IP and Port, Is there something else I am missing? Any help would be appreciated.

You need to be a member of diydrones to add comments!

Join diydrones

Email me when people reply –


  • Hey John,

    I know this is an old thread but how did you get the mavlink communication up? I am trying to use MAVproxy to connect to solo but can't seem to send any messages.

    What was the port that your found?

  • i have my controls api complete, now i am just trying to figure out the video. Does anyone have any suggestions on where to look for information on streaming the gopro video back to my computer.

    • Developer

      it's all here http://dev.3drobotics.com/

      Though I used gstreamer on the computer (i use linux) as gstreamer lower latency than VLC

      In another terminal window type
      nc 5502
      gst-launch-1.0 -v udpsrc port=5600 caps='application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264' ! rtph264depay ! avdec_h264 ! videoconvert ! ximagesink
  • Developer

    You should be listening form messages on port 14550 on your computer. When you get a UDP packet, inspect it to see where it came from (should be and which port. Then send your message to that 'return port', the port wiil not be 14550.

    • Developer

      PS: if you post the code via github or gist.github.com I can also add some pointers. (Please don't paste in a comment as the formatting gets destroyed)

      • Worked great thank you. 

      • Thank you so much, I dont know how i missed that.

This reply was deleted.


David Hori liked Isabella Domi's profile
gotham liked gotham's profile
Dec 3, 2020