Getting started with the Paparazzi

So, you’ve got your kit and all bits from PPZUAV or similar and now you have no idea where to start? You’re not alone, we were in the exact same situation a few days ago. Luckily, we decided to write down what we are doing so others can get going with MUCH less work than we’ve had to do. This is by no means complete, we will update it as we go along, but it will get the hardware and software set up and ready to be configured for your aircraft. Also, this guide assumes you are at least comfortable with computers, some coding, Linux and life in general. What self respecting UAV builder isn’t?

What you get at the end of this guide

  • All software set up for working with the Paparazzi
  • A Tiny which is ready to be configured for your aircraft
  • GPS, Thermopile Attitude Sensors and Radio communication with GCS working


We bought our kit from PPZUAV, which came with pretty much everything we needed to get going. To be fair, most of these cables can be made pretty easily on your own if you want to save some money, but make sure you have the following bits and bobs before kicking off:

  • Tiny v2.11
  • XBee Pro 2 Radio Modem
  • XBee -> USB Board (Serial -> USB converter)
  • USB -> PicoBlade adapter
  • FTDI -> PicoBlade adapter
  • PicoBlade -> XBee Adapter
  • USB to FTDI
  • MiniUSB cable
  • Omni-directional antenna for the XBee Base Station

PicoBlade are the white sockets on the Tiny board.


The Paparazzi hardware happily works with virtual machines such as VMWare, so you can program and interface with the autopilot on all three major platforms. However, you have to make sure you have access to these two:

  • Windows XP/Vista
  • Ubuntu Linux (Live/Boot CD from the Paparazzi Wiki recommended)
    Get it here!
  • Latest version of Paparazzi Software
    Get it here! Download the file with the newest date.
  • X-CTU – Tool used to configure the XBee
    Get it here!

This guide is based on the Live CD since it comes with all the necessary drivers installed. It is highly recommended that you install Ubuntu onto a hard drive since the Live CD looses any changes you’ve made as soon as you reboot your computer. Since most of the work on Paparazzi is done with

Getting started

The first thing we will do is to get the software up to date, while the Live CD is updated fairly often, it doesn’t seem to come with a very new version of Paparazzi – in fact it doesn’t come with any aircraft configurations for the Tiny 2.11 (took us a little while to find out, after the Tiny appeared to be dead to the world!).’

To update to the latest version, boot up Linux and simply extract the archive you downloaded from the Paparazzi website into your Home folder, replacing the old Paparazzi directory. When this is done you can open Paparazzi by selecting Other->Paparazzi in the Application menu (top left).

When you do this Paparazzi might complain that it can’t find control_panel.xml and conf.xml in ~/paparazzi/conf/. The newer version of Paparazzi comes with example files which work just fine so just go into that folder and rename conf.xml.example to conf.xml and and control_panel.xml.example to control_panel.xml.

That’s the entire Paparazzi tool-chain, compiler, drivers and software installed! Easy as pie!

Waking up the Autopilot

Time to dig into the hardware. First, we need to power up the Tiny, which thankfully isn’t a very hard task. Tiny v2.11 can be powered on anything from 5V up to 18V and up to 2.5A, so you can usually hook it up straight to your aircraft’s battery or an external power supply. You need to solder two leads onto the board then it is just a matter of connecting the power supply of choice. When connected a red LED will start flashing to indicate that the autopilot is powered on.

Programming the Tiny

Since the autopilot is alive and all the software is ready it is time to configure the Tiny. For now we’ll use a demo aircraft that comes with Paparazzi which supports some basic sensors and the radio modem. To do it open up the Paparazzi software and in the top left drop down named A/C select MJ5. This loads a couple of configuration files for the aircraft, the one we care about right now is the airframe file. The current airframe file is for the old Tiny v1.3 so press browse and select funjet1.xml instead.

Next, in the top centre where it asks for Target, select ap (autopilot), then press Build to compile the autopilot firmware. It only takes about 30 seconds and the last line of output will be “Leaving folder…“.

To upload the firmware to the Tiny you need the Mini USB cable and the USB->PicoBlade adapter. Connect one end to the USB socket on the Tiny and the other to your computer, then power up the Tiny. The autopilot will go into Bootloader mode (the red status LED will not be flashing) then press Upload. A progress bar will be shown, then Paparazzi will tell you that it is loading program at 00040000. Now the Paparazzi is programmed and running (the red LED will be flashing again).

Ground Control Station via Serial

To verify that everything is working properly we are going to load up the GCS software and make sure that the Tiny is getting a GPS fix. Unplug the USB port then dig out the USB->FTDI and FTDI->PicoBlade cables. Connect the PicoBlade connector to the socket named Serial on the Tiny but leave the USB unplugged for now. First change Session in the top right of the Paparazzi window to Flight USB-Serial@9600 and press Execute. The GCS will load up but won’t show anything until it can connect to the autopilot, so plug in the USB cable. The GCS will load up properly and if you are outside or near a window you can click the GPS tab in the lower centre of the screen to watch the Tiny acquire GPS satellites. When it has enough satellites it will report Geo Init in the status window to the right.

Setting up the XBee

This is all good, but there is no way the aircraft will fly with a heavy serial cable going down to the ground so it is time to set up the radio modem. Theoretically it should just be to plug and play, but of course in our case it wasn’t so I’ll drag through what we had to do. This will also change the telemetry data rate from 9600bps to 57600bps so if you want more and faster telemetry off your aircraft follow this:

First, plug the XBee with the proper antenna connector (not the one with the small antenna) into the XBee->USB board. This is your ground station receiver but it has to be configured to be the co-ordinator/host before it will work. Connect the XBee pack to a computer running Windows and let it automatically isntall the drivers. When it is done, install and run the XCTU software.

In XCTU, press the the Test/Query button to verify that it can communicate with the modem, then go to the Modem Configuration tab. Press Read to read the current configuration data from the XBee and verify that the Function Set drop down is set to Coordinator. Near the bottom of the list below you can change the Baud Rate which is currently set to 9600. Change it to 57600, then press Write to upload the the new configuration.

Repeat the steps above for the other XBee module but make sure that Function Set is End Device this time, then put the first XBee module back in the USB adapter.

Configuring the Tiny

The XBee modules are now good to go, but the Tiny needs to be reconfigured for the faster data speeds before you’ll be able to transmit anything.

In left section of the Paparazzi window choose to Edit the funjet1.xml airframe configuration file. About halfway down in this file there will be a section called DATALINK which is currently commented out (<!– … –>). Remove the comments, then change the value of DEVICE_TYPE to PPRZ so that is looks like this:

<section name="DATALINK" prefix="DATALINK_">
    <define name="DEVICE_TYPE" value="PPRZ"/>
    <define name="DEVICE_ADDRESS" value="...."/>

A bit further down in the same file there is a section called Makefile, in this section find the line starting with #Transparent and change the baud rate to 57600:

ap.srcs += downlink.c $(SRC_ARCH)/uart_hw.c datalink.c pprz_transport.c

Finally, we need to tell Paparazzi how to connect to the ground receiver. Open the file ~/paparazzi/conf/control_panel.xml and find the section called Flight USB-Maxstream@57600.

Edit it so that it looks like this:

<session name="Flight USB-Maxstream@57600">
      <program name="Data Link">
        <arg flag="-d" constant="/dev/ttyUSB0"/>
        <arg flag="-uplink" constant=""/>
        <arg flag="-s" constant="57600"/>
      <program name="Server"/>
      <program name="GCS"/>

This tells the Data Link that it will communicate with the autopilot via the XBee found on the USB port running at 57600bps.

Done! Save all files, build a new version of the firmware and upload it to the autopilot.

GCS via Radio

Plug in the XBee Receiver into the XBee->USB board and connect it to your computer, then select the Flight USB-Maxstream@57600 session and press Execute in the main Paparazzi window.

When the GCS has loaded you can power up the Tiny and watch as it happily connects wirelessly to the ground control. An easy way to see if the Tiny is connected is the check if the green LED on the XBee->USB adapter is flashing, if it is the Tiny is within range and connected. Now go for a walk outside and watch how Tiny acquires a GPS fix and then calculates your position, speed & heading and beams it back to the ground control.


Thermopile Sensors

Our kit came with six thermopiles to work out roll, pitch and yaw. For now we have only connected them and verified that they are working (the attitude indicator in the GCS is moving when the sensors are moved) but have yet to figure out how to calibrate them.

To connect them, simply plug them into the corresponding socket on the board (IRH & IRV) and reboot the autopilot.

This is all for now, but it turned out to be quite a lot more than I thought! Check back every now and then for more info on how we configure the autopilot and wire up the remaining electronics (servos and radio transmitter)!

4 Responses

  1. michael evans Says:

    make sure you dowload and print this field manual. remember i asked you earlier how to do a simulation,and you didnt know how either? its all in there.

  2. Michael Evans Says:

    I added you guys to the link page on the wiki. i also added a link if you need help adding yourself to the users list. its very important to join it once you get your hardware.

    I’m starting my own build thread here

    hope to hear from you on the paparazzi IRC chat channel

  3. Mikael Says:

    Thanks a lot man. I have a user account for the wiki somewhere, just need to remember to use it! I’ve seen your build log, it has a lot of detail on how to get the software working which is pretty good. All of this really should be compiled into a mega guide :)

  4. Martin Says:

    A few minutes ago, I powered up my Tiny for the first time. I have your blog handy as a reference. It is really great help, thank you so much!

    However, in the XCTU, I do not find the “Function Set” drop down, so no way of setting the Xbee to “coordinator”. The modem type is XBP08-DP

Mikael Mannberg 2009

Feel free to link or redirect to this webpage, but the content on this website may not be copied or moved to any other website or other medium without the author's permission.