A discussion page to allow me to add my experiences using a Raspberry Pi 2/3/Zero V1.2/1.3 as a companion computer for Ardupilot/APM/Pixhawk flight boards. I will update my experiences as I learn, feel free to comment and offer tips, it's all free here.

I'm building a github for my experiments: https://github.com/benb0jangles/Companion-Pi

Drone Unit: Raspberry Pi Zero V1.3 + Pi Camera Module
img file: https://drive.google.com/open?id=0B1cVb3uX0f0dQTZzSmVISFdYd3M

Ground Unit: Raspberry Pi 2

img file: <to be added>

Goggles Unit: Raspberry Pi Zero V1.3

img file: https://drive.google.com/open?id=0B1cVb3uX0f0dakFpaTAyVF9HV2s

Ardupilot Technical Questions:

Also, if you have any technical code/hardware questions which you feel may take ongoing contributions and help over an extended timeframe, feel free to ask over on Ardupilot.org technical discussion page herehttp://discuss.ardupilot.org/t/companion-pi-2-3-zero/9460

I will update as I get by, please contribute by offering your 'plug & play' wifi adapters using Raspbian Jessie. Also, if you happen to pick up this project, and are working faster than me, then please send us your own .img file experiments. Thanks.

Views: 16267

Replies to This Discussion

@Pascal,  I use Ubiquity equipment on my ground station (Nanobeam 5ghz), which has a high-gain parabolic, 24dB gain with an antenna tracker, and a 500mW WiFi adapter on the UAV.  10km+ is achievable with this setup.   Also, you need clear line-of-sight. No trees or obstructions with 5ghz radios.

On the fixed-wing, I have mounted a WiFi amplifier which gains up the signal to 33dBm, which in theory could push the range to 20km or more, but I have not tested to that range yet. 

1km range can be done without a tracker. I would suggest the Rocket-M5 with 8dbi dipoles. 

Thanks a lot for the figures Patrick. I have a better idea of what could be done now.


Yes , sharing the same frequency is a problem mainly because the RC and WIFI are not using the same Spread Spectrum mechanism, so it generate a lot of missed packets, especially when you push a lot of data on the WIFI when transmitting video. This is why it is on my list of things do do. I resolved this issue on my Quad450 running BBB MINI by using Ralink RT-2870 on 802.11a on the 5Ghz band. But for the Mini Zee I am trying to get it working with a cheap dongle - just like @benbojangles is suggesting in this topic- and I am experiencing others problems as well (power management , chip saturation and USB bus lockups).

So, what is more expensive : FTD for a few days trying to make it work and then crashing the baby because of  a conflicting USB driver or buying a  ready to fly Ethernet based commercial 5Ghz bridge ???  My karma forces me to go the long and winding road...

Concerning the camera interference look at my pictures and you will notice that the GPS is litterally ''sitting'' on the camera cable, so noise is quite apparent on the constellation ( about 12 dbm on the receiving signal when comparing wit/without camera enable).

Just an update on this, I switched to an EDIMAX AC600 running as an Access Point  on 5 GHZ  with the use of HostApd and loading this DRIVER.

Here is a picture of the modified USB Dongle with the micro USB adapter cable soldered directly + a 5volts BEC  + a RP-SMA adapter cable to attach the 5GHZ antenna.

So far the tests are good, I'ts flying smoothly and the video is fluid at 640x480 x 20fps up to 500 Meter.

Thanks for the info on the edimax dongle, good to see a 5ghz device being used. I'm sure I'll be back into this project once the summer passes. I really want to get the UDT implementation done

So far my results with gstyreamer are (Systems as UDP Video receivers/Clients):


Windows (x86/x64)
Ubuntu Laptop (14.04)
Android (Both Tower & QTGstreamerHUD)


Jetson TK1 (Ubuntu)
Pi2 with Jessie Lite (hdmi to HD FPV goggles)

I'm really trying to get a Pi2 or Zero client working for my goggles, just for proof of concept.

Some good results I'm getting.

I'm comfortably using a Pi Zero 1.3 as the camera feed/server with no issues whatsoever on any system.

I'm using a pocket/dongle wifi router for ssh connections and video feeds between client + server. Works really well, and I'm enjoying the customisation of the router. Unfortunately Openwrt isn't yet built/compiled for Pi Zero, so Pi2 is the way for Openwrt router. I'm going to try pi zero 1.3/Pi2 with Full Raspbian or Ubuntu to see if those work on my goggles soon, fingers crossed :)

Success! I got Pi - to -Pi UDP streaming!

My initial problem, using Raspbian 'Jessie Lite' was the cause of not being able to launch video picture on the receiving Pi. So, if anyone has interest in this, then you can use Jessie Lite on the camera transmitting pi, but only use full jessie on the goggles/receiving pi.

Adjusting the UDP pipeline settings, I am able to receive 720p+ to my HD goggles with very little latency, as good as lightbridge, but not as low latency as analogue 5.8ghz video transmitters used for drone racing.

I can reduce latency much much more to that of levels required for drone racing, but the bitrate/quality is not as good as i want it to be.

I'm really happy, and hope we can get a port of QTGstreamerHud over to linux/raspbian one day.

I can now add Pi to my list of fully compatible devices:

my results with gstyreamer are (Systems as UDP Video receivers/Clients):


Windows (x86/x64)
Ubuntu Laptop (14.04)
Android (Both Tower & QTGstreamerHUD)

Pi2/Pi Zero (With FULL Jessie Raspbian - 1280x800px - hdmi to my HD FPV goggles)


Jetson TK1 (Ubuntu) 


Equipment Used:

Transmitter & Receiver

Pi Zero 1.3 with pi camera - Video Transmitter/Server = £15

Pi 2 (But Pi Zero can also be used) = (pi zero)£5

1x2gb + 1x16gb Sd cards x 2 = £6

2x wifi usb adapters = £2

OpenWrt Router

Pi2 = £15/£20

USB Wifi adapter = £1

1x 2gb sd card = £1.50

Future improvements

Autorun scripting

Hardware power on/off buttons + script

High power USB adapter for Openwrt router (increase range)

HUD Overlay

UDT for better video

Tiny brushless gimbal!

Still no joy with Gstreamer on Jetson TK1 (L4T 21.3 + Grinch Kernel 21.3)

issues with avdec_h264 & h264parse - seems like there's ffmpeg/libav problem...

@ben,   You can run the HUD on Android in case you didn't know.  I use it on my smartphone and the phone is connected directly to my router via wifi, and the phone is mounted in a Google Cardboard case you can buy for $5 online. There is also a VR version that spits the screen and you can run a dual-stream, provided you have the hardware that can support it.

I could port it to linux some time in the future, but just don't have much time right now. I am swamped with other stuff at the moment.


benbojangles said:

Still no joy with Gstreamer on Jetson TK1 (L4T 21.3 + Grinch Kernel 21.3)

issues with avdec_h264 & h264parse - seems like there's ffmpeg/libav problem...


© 2020   Created by Chris Anderson.   Powered by

Badges  |  Report an Issue  |  Terms of Service